|
程序员的吸星大法-IDA反汇编工具初探(3) .text:00401007 mov hInstance, eax 我们可以看出来实际上就是hInstance = GetModuleHandleA(nil);我们可以在后面直接加上注释,在.text:00401007这一行最后面的空白处点右键,在弹出的菜单中选择"注释",然后在弹出的窗口中填上"取得当前模块实例句柄",这一行就会变为 .text:00401007 mov hInstance, eax ; 取得当前模块实例句柄 这样就为我们的反汇编出的代码增加了可读性. IDA不但可以在当前代码中加注释,还可以更改其默认的符号名,比如 .text:00401011 mov dword_0_40300E, eax 其中的dwrd_0_40300E可以看出来是存放取得的命令行的缓冲区指针(可以双击符号名,函数名跳到其定义处),在dword_0_40300E上面点右键,选取"重命名",然后在弹出的窗口中填入lpCommandline,点确定,这样程序中所有使用到了dword_0_40300E这个变量的地方都会将dword_0_40300E替换为lpCommandline.如下所示: .text:00401011 mov lpCommandline, eax .text:00401016 push 0Ah .text:00401018 push lpCommandline 我们再来看.text:00401026 call sub_0_401031这一行 可以从上面的代码看出来,这是调用的WinMain函数,在sub_0_401031上面点右键,选取"重命名",然这个函数命名为WinMain,这时IDA就将所有sub_0_401031符号变为WinMain, 并且自动加上函数定义,并会在函数调用时入栈的参数后面加上其对应的变量注释,这时我们反汇编出来的这一段代码就成了下面这个样子的了: .text:00401000 start proc near .text:00401000 push 0 ; lpModuleName
|