看过<<笑傲江湖>指南不可避免的知情健康状况如何吸入星状物,这是一种能吸取布满内在力的不可思议的魔力。,(Duan Yu的北边冥想同样两者都的), 它远方…朝本人方向的顺序员,提出计划工力的本人好办法是读懂源信号。,庶乎将旁人的技术化食成本人的知。,这很像明星Dafa吗?
不过开源顺序归根结蒂是小半。,弥撒曲顺序只配电可执行证明和相关性文档。,在这点上,我们家打算主教教区这么顺序的信号。,把它拆开,自然必要必然的编制,不过本人好的反汇编工具能为你读懂反汇编浮现的顺序供奉不普通的大的扶助.
认识反汇编的指南也必然知情WINDASM这么知名的反汇编工具,譬如,我们家剖析本人有风的顺序。,下面的信号在其顺序使入迷点被剖析以吸引FOL
//*********************** 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特务