-
-
[原创]<从0开始学ida逆向>笔记(P1~P104)
-
发表于: 2021-11-1 15:17 10497
-
“OFFSET”说明传递的是内存地址,而不是内存的值
mov eax,offset dword_460000
按Q键,这条指令会转换为 mov eax,460000.
右键可以从mov eax,460000恢复成mov eax,offset dword_460000
mov eax,offset dword_460000 //将0x460000这个地址传给eax
mov eax,dword_460000 //将0x460000这个地址的值传递给eax
LEA EAX,[4+5]指令将运算结果 9 传给 EAX,而不会 像 MOV EAX,[4+5]指令那样将地址 0x9 上存储的内容传给 EAX。
(lea传递的是结果 mov传递的是存储的值(OFFSET 除外))(offset传地址)
选择options-demangle names中勾选names:
nop==no operation
如果code区块无法解析为指令的话,则会视作数据
如果函数中间有不识别的指令,ida将无法创建函数,当改为可识别指令之后可以右键:创建函数(patch菜单上的patched bytes功能能显示所有修改的字节,也能将修改取消)
取消修改:
LPCTSTR ==char[]
DS:程序将把字符串的起始地址存储在数据区块上(data stack)
LEA指令通常用于传递后一个操作数的地址或者运算结果,而非取内容(区别于mov);普遍运用于获取变量参数的地址
var_变量(比如:int a=20 -> mov [ebp+var_变量,eax])
arg_参数
IDIV x:除法
eax 除以 x :商存入eax,余数存入edx
IMUL:乘法
有两种方式:
Imul eax,[ecx]//eax*[ecx]存入eax
Imul esi,edi,25//edi*25 存入esi
NOT A :对A按位取反
NEG A:将A变为-A(按位取反后+1)
EIP:下一条要执行的指令
jmp short
无条件段跳转 第一个字节是跳转操作吗,第二个字节表示跳转方向
如:EB 05 jmp short loc_xxxxxx
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!