Art*_*nyk 1 assembly reverse-engineering ida ollydbg
当使用OllyDbg和IDA PRO分解同一程序时,我用不同的方式反汇编了一行代码。
OllyDBG:
    MOVSX EDX,BYTE PTR [ESP+ECX+8]
IDA:
    MOVSX EDX, [ESP+ECX+68h+String]
有人可以在这里解释IDA PRO的意思吗?我对这里的68h + String部分感到沮丧。我可以假设68h + String始终表示BYTE PTR吗?
ida应该已经STRING to be a LOCAL variable在函数/过程的开始处声明了-60h的值
(68 + STRING)==(68 +(-60))==(68-60)== 8它与ollydbg显示的内容相同。
IDA的反汇编语法容易造成混淆
以ollydbg为例
00405712     8B4424 30       MOV     EAX, DWORD PTR SS:[ESP+30]
而艾达会显示
text:00405712                 mov     eax, [esp+1Ch+arg_4]
因为在函数开始时ida已将arg_4定义为
.text:004056E0 arg_4           = dword ptr  14h
那是
14h + 1ch == 30h
如果您不喜欢ida语法,但想直接看到[esp + 30]
您可以运行此脚本
shift +f2 paste and press ok 
注意所有ida idc函数对于任何批量操作都太慢,而不是MaxEA()将其缩减到一些较小的块,以便在下面的代码段中获得更快的结果
auto i;
for (  i = MinEA() ; i < MaxEA() ; i = NextHead(i, MaxEA()) )
{
    OpHex(i,-1);
}