avatar

我可是会飞的啊

找对象ing

  • 首页
  • ctfs
  • 关于
  • 文件库
  • 留言板
  • 标签
  • 归档
  • 【网课推荐】(红队&二进制)
首页 《xchg rax,rax》片段分析0x0a--地址加一

《xchg rax,rax》片段分析0x0a--地址加一

Posted 2022年 01月 11日 Updated 2023年 03月 1日
By selph
2~3 min read

前言

本次是该系列的的第0x0a篇


实验环境:

  • Windows10 + VS2022 + masm

0x0a

代码片段链接:xorpd | xchg rax,rax 0x0a

    add      byte [rdi],1
.loop:
    inc      rdi
    adc      byte [rdi],0
    loop     .loop

代码分析

这里如果rdi是个普通的立即数,那这里会报错,因为byte ptr [rdi]是指针取地址操作,把rdi中的值作为地址进行取值然后操作

若rdi是个地址,则这里会把这个地址里的最低字节进行+1操作,然后进入循环,这个循环似乎什么事情也没有做,就空转,然后就介绍了,这里的功能大概是给制定最低位字节的值+1

测试代码:

.data
selstr db "hello world!",0 

.code
main proc
    xor rax, rax
    lea rdi, qword ptr [selstr]
    lea rcx, [0100h]

    mov      al, byte ptr [rdi] ;0x68
    add      byte ptr [rdi], 1  ;给rdi地址低8位+1
    mov      al, byte ptr [rdi] ;0x69
looppos:
    inc      rdi                ;给rdi地址+1
    adc      byte ptr [rdi], 0  ;若有进位溢出,则再次+1,感觉不会出现这种情况
    loop     looppos

	ret
main ENDP
END
编程开发, 读书笔记
《xchg rax,rax》
This post is licensed under CC BY 4.0 by the author.
Share

Further Reading

Apr 12, 2022

《xchg rax,rax》片段分析0x23--模3运算

《xchg rax,rax》片段分析0x23--模3运算

Apr 11, 2022

C++ Iterator 迭代器

迭代器(Iterator)是一种抽象设计理念,通过迭代器可以在不了解容器内部原理的情况下遍历容器。

Apr 10, 2022

C++折叠表达式

C++17折叠表达式的用法

OLDER

《xchg rax,rax》片段分析0x09--判断附近整数

NEWER

《xchg rax,rax》片段分析0x0b--128位整数取反

Recently Updated

  • 【置顶】本博客的使用指南&更新计划(2023.3更新)
  • [技能兴鲁2023 决赛 职工组]re-ezalgorithm
  • [Pico CTF 2022]pwn-basic-file-exploit
  • [Pico CTF 2021]pwn-Unsubscriptions Are Free
  • [Pico CTF 2021]pwn-Here's a Libc

Trending Tags

pwn 符号执行 HEVD学习 .NET逆向 病毒分析 CTF 软件安全 《Windows内核编程》 dll注入 树莓派

Contents

©2023 我可是会飞的啊. Some rights reserved.

Using the Halo theme Chirpy