IDA反汇编工具初探

看过<<笑傲江湖>男朋友只得赚得以任何方式吸入明星,这是一种能吸取物内在力的杰出才能。,(Duan Yu的北风的冥想也相似的的), 它最远的…为了顺序员,进步顺序虚伪行为的东西好方式是看得懂源法典。,以致将旁人的技术化食成本身的知。,这很像明星Dafa吗?
再开源顺序归根到底是多数。,变得越来越大顺序只拿出可执行论文和相互相干文档。,在这点上,咱们抱有希望的理由预告同样顺序的法典。,就正是把它反汇编,自然需求必然的波湾阴谋,再东西好的反汇编器能为你看得懂反汇编出现的顺序储备物质独特的大的帮忙.
知识反汇编的男朋友也必然赚得WINDASM同样知名的反汇编器,譬如咱们用WINDASM反汇编东西顺序,在其顺序登记点反汇编到达如次法典:
//*********************** Program Entry Point *****************
:00401000 6A00                 push 00000000
:00401002 E8FF050000      call 00401606
:00401007 A316304000      mov [00403016], eax
:00401007 E8EF050000      call 00401600
:00401011 A30E304000      mov [0040300E], eax
:00401016 6A0A                 push 0000000A
:00401018 FF350E304000   push dword ptr [0040300E]
:0040101E 6A00                 push 00000000
:00401020 EF3516304000   push dword ptr [00403016]
:00401026 E806000000       call 00401031
:0040102B 50                     push eax
:0040102c E8C9050000      call 004015FA

是否你不吃或喝语境,赚得这是亲的章,很好看出同样法典是什么意思。,再国际开发协会是特色的,它不只会反汇顺序序,并尝试剖析顺序,并添加通信的的正文(仅此报账),IDA反汇编东西大的顺序会花独特的长的工夫),请看下面长度IDA反汇编出现的法典,这更透明吗?
.text:00401000                 push     0               ; lpModuleName
.text:00401002                 call      GetModuleHandleA
.text:00401007                 mov     hInstance, eax
.text:0040100C                call      GetCommandLineA
.text:00401011                 mov    dword_0_40300E, eax
.text:00401016                 push    0Ah
.text:00401018                 push    dword_0_40300E
.text:0040101E                 push    0
.text:00401020                 push    hInstance
.text:00401026                 call      sub_0_401031
.text:0040102B                 push    eax             ; uExitCode
.text:0040102C                 call      ExitProcess

IDA反汇顺序序后,将发生东西 IDB论文,外面保养了反汇编出现的法典及正文及IDA的某个其它相互相干资料,咱们可以率直的在IDA中弯下咱们本身的剖析归结为和正文,并坚持,下次率直的翻开IDB论文就可以了,譬如,前述的
.text:00401000                 push    0               ; lpModuleName
.text:00401002                 call      GetModuleHandleA
.text:00401007                 mov     hInstance, eax

咱们可以预告它确实是窥测。 = GetModuleHandleA(nil);咱们可以反面率直的补充平衡正文,单击.Text:00401007行的后当空射中靶子右扣状物。,在流行音乐式卡特尔中选择正文,那时,在流行音乐窗口中,填写趋势模块的句柄。,这条线会生产
.text:00401007                 mov     hInstance, eax  ; 获取趋势模块窥测句柄

大约就为咱们的反汇编出的法典增强了易读.
IDA不只可以在趋势法典中正文,还可以更改其默许用符号代表名,譬如
.text:00401011                 mov     dword_0_40300E, eax
其射中靶子dwrd_0_40300E可以看出现是存款实现的命令行的缓冲有指导意义的事物(可以双点取用符号代表名,功能指定跳过到它们的构成释义。,右键单击DWordD004040E,选择改名,那时在流行音乐窗口中步行LpCuffDrimeLin,点决定,大约顺序中一切运用到了dword_0_40300E同样变量的位特许市将dword_0_40300E交换为lpCommandline.如次所示:
.text:00401011                 mov     lpCommandline, eax
.text:00401016                 push    0Ah
.text:00401018                 push    lpCommandline

咱们回想看.text:00401026                 call    亚行0Y404031这条线
从下面的法典可以看出,这执意类似的Win主功能。,右击Sube 0 0Y401031,选择改名,再同样功能叫做WinMain,在这点上,IDA将一切的子0 0404031用符号代表替换成Win Mead。, 并主动添加功能的构成释义,当TH时,通信的的变量被添加到堆栈的参量中。,这时咱们反汇编出现的这长度法典就成了下面同样生活方式的了:
.text:00401000 start           proc    near
.text:00401000                  push    0               ; lpModuleName
.text:00401002                  call      GetModuleHandleA
.text:00401007                  mov     hInstance, eax  ; 获取趋势模块窥测句柄
.text:0040100C                 call      GetCommandLineA
.text:00401011                  mov     lpCommandline, eax
.text:00401016                  push    0Ah             ; nShowCmd
.text:00401018                  push    lpCommandline   ; lpCmdLine
.text:0040101E                  push    0               ; hPrevInstance
.text:00401020                  push    hInstance       ; hInstance
.text:00401026                  call      WinMain
.text:0040102B                  push    eax             ; uExitCode
.text:0040102C                  call      ExitProcess

这是对它的默认吗?
当咱们读取源法典时,它可以决定子功能的效能和传入的典型。,咱们可以双点取功能名,跳过到功能构成释义,在功能构成释义中读出右键,专心致志集中功能TYP编译功能构成释义(C 式),大约一切电话联络到同样功能的位特许市在入栈的参量后头补充平衡其对应的变量正文. 您还可以经过右键单击空白区域来添加可反复正文。,大约,电话联络同样功能的一切位都将被添加到同样功能中。

是否抱有希望的理由预告变量或功能被电话联络,它可以右键单击功能或变量名。,单击反省操算数穿插涉及功能,可以预告在翻开的窗口中电话联络的一切法典。,您可以经过双点取跳过到同样法典地方。这是独特的起功能的F。,它可以帮忙您迅速地默认功能经过的电话联络相干。

按F12看顺序的流程图。,Ctrl 12可以预告功能的电话联络图。

IDA还具起功能符号代表调试技术,一种显示出特性行情解说器救援物资的顺序,譬如次面反汇编出的的顺序法典段:
.text:00405427                 push    edx
.text:00405428                 call    _swscanf
.text:0040542D                 lea     eax, [esp+38h+arg_40]
.text:00405431                 push    offset unk_0_5DB1A4 ; const wchar_t *
.text:00405436                 push    eax             ; const wchar_t *
.text:00405437                 call    _wcscmp
.text:0040543C                 add     esp, 1Ch
.text:0040543F                 test    eax, eax
.text:00405441                 jz      short loc_0_405459
.text:00405443                 lea     ecx, [esp+24h+arg_40]
.text:00405447                 push    offset unk_0_5DB18C ; const wchar_t *
.text:0040544C                 push    ecx             ; const wchar_t *
.text:0040544D                 call    _wcscmp
就反省到了其电话联络了MFC类库射中靶子功能,结合通信的的功能名交换它们。

还可以电话联络IDA来出口.MAP论文,与倚靠静态调试器(如SoT-Tice)协作,用于法典

IDA是东西独特的强大的的反汇编器,下面是它的某个根本专心致志。,抱有希望的理由变得复杂打破冷场的功能,是否您对IDA专心致志感兴趣,您可以用LITE议论它。,或钢的顾及平衡<<加密与解密>>一书,IDA在其专心致志中有更瞬间的解说。
我的袋:Akun特务

发表评论

电子邮件地址不会被公开。 必填项已用*标注