Ŀ¼£¾£¾µÚ4ÕÂ

µÚ4Õ ¾²Ì¬·ÖÎö¼¼Êõ

µÚÒ»½Ú »ù´¡ÖªÊ¶
µÚ¶þ½Ú W32Dasm¼ò½é
µÚÈý½Ú IDA Pro ¼ò½é
µÚËÄ½Ú HIEW¼ò½é
µÚÎå½Ú ²ð½â½Ì³Ì

µÚÈý½Ú IDA Pro¼ò½é

³ÌʽÁÔÈË·­Òë
£¨ÒëÕß×¢£º»¶Ó­·ÃÎʳÌʽÁÔÈ˵ÄÖ÷Ò³£ºhttp://programhunter.126.com£©
¶ÔÏó£ºIDA Pro·´»ã±àÈí¼þ
Ä¿±ê: N/A
URL: http://www.datarescue.com
×÷Õߣº BlackB
ÈÕÆÚ£º 2000-06-05
ʹÓù¤¾ß: Your brain
ÄѶȵȼ¶(¼¶ 1-5): 1

¿ªÊ¼Ç°

  ¡¡¡¡IDA Pro AvancedÊÇÒ»¸ö¼«ºÃµÄ·´»ã±à¹¤¾ß£¬Ëü´óµÄʤ¹ýÁËw32dasm¡£½üÀ´ËüµÄµÁ°æÒѾ­ÔÚÍøÉÏ´«²¥¿ªÁË£¬Äã¿ÉÒÔºÜÇáËɵõ½Ëü¡£¶ÔÓÚÕâ·½ÃæµÄ¹ÛµãÓÐÈçϼ¸ÖÖ£ºÒ»Ð©ÈËÈÏΪÕâÊǺõģ¬ÊÇ×ÔÓɵģ»¶øÁíһЩÈËÈÏΪÊǿɳܵģ¬ÄÇЩÈÏΪÊǿɳܵÄÈËͨ³£ÊÇÕâ¸öÈí¼þµÄÀÏÓû§£¬ÊÂʵÉÏËûÃÇÂòÁËÄǸö³ÌÐò£¬Èç¹ûÄ㻨ÁË$500ÂòÁËÄǸö³ÌÐòµÄ»°£¬Äã¾Í¿ÉÒÔÀí½âËûÃǵķ´Ó¦ÁË¡£  ¶ÔÓÚ¶ÁÕßÀ´Ëµ£¬ÄãÃÇ×öʲô²»ÊÇÎÒµÄÎÊÌâ¼°ÎÒËù¹ØÐĵġ£¶øÎҵĹ۵ãÊÇÈç¹ûÈÏΪ·Ç·¨µÄwinzipÈí¼þͬIDA Pro 4.0xÒ»ÑùºÃ»ò»µ¡£Èç¹ûÄãʹÓ÷Ƿ¨µÄwinzip£¬Äã¾Í²»Ó¦µ±Ê¹Ó÷Ƿ¨µÄIDA Pro¡£

I ½éÉÜ

  ¡¡¡¡¼¸ÌìǰÎÒÁÒ¾üÊôÁËһƪ¹ØÓÚ½âÃܳÌÐòµÄ½Ì³Ì£¬¶øÕâÆªÒ²ÊÇÒ»¸ö¶ÔÓÚ¸ßЧµÄ£¬¼«ºÃµÄIDA Pro 4.0x½Ì³Ì¡£Í¨³£²ËÄñ²»Ï²»¶£¬¶ø¸ßÊÖÓÖ³ç°ÝËü¡£²»Ï²»¶µÄÔ­ÒòÊÇÒòΪIDAÏà¶ÔÓÚw32dasmÀ´ËµÓиü¶àµÄ¸½¼Ó¹¦ÄܺÍ×÷Óã¬Óиü´óµÄ¸´ÔÓÐÔ
  ÔÚÏÂÃæµÄ½Ì³ÌÖÐÓÉÓÚÄã¹ýÈ¥¿ÉÄÜϲ»¶Ê¹ÓÃw32dasm£¬ÎÒ½«¾¡Á¦¸ø³öÒ»¸ö¼òµ¥ºÍÇå³þµÄ½âÊÍÀ´½éÉÜÈçºÎʹÓÃIDA¡£Ò²½«ÊÔ²î»Ø´ð"ʲôÊÇ×îºÃµÄ·´»ã±à£¿"ÕâÀïÆäʵûÓÐÒ»¸ö¼òµ¥µÄ»Ø´ð¡£¶ÔÓÚ¸ü¶àµÄ¸ßÊÖÀ´Ëµ¿ÉÒÔ¶ÁÕâ¸ö£ºÏò²ËÄñ100£¥½âÊÍIDAµÄʹÓùý³Ì¡£

II. IDA: Ò»¸ö¸ßЧµÄ·´»ã±à¹¤¾ß

¡¡¡¡µ±ÄãÔËÐÐIDA Proʱ£¬ÄãËù×îÏÈ×¢Òâµ½µÄÊÇËüµÄ½çÃæ±Èw32dasm¸ü¼Óרҵ£¬ÕâÀï±Èw32dasmÓиü¶àµÄÑ¡Ïî»ò¸üÏȽøµÄµØ·½¡£ËüµÄÓŵãÊÇ¿ÉÒÔ¸üºÃµÄ·´»ã±àºÍ¸üÓÐÉî²ã·ÖÎö¡£¶øÈ±µãÊÇʹÓÃIDA¸üÀ§ÄÑ¡£
ʵ¼ÊÉÏIDAͬw32dasmÓкܶàÏàͬµÄ¹¦ÄÜ£º¿ÉÒÔ¿ìËÙµ½´ïÖ¸¶¨µÄ´úÂëλÖ㻿ÉÒÔ¿´µ½Ìøµ½Ö¸¶¨µÄλÖõÄjmpµÄÃüÁîλÖ㻿ÉÒÔ¿´²Î¿¼×Ö·û´®£»¿ÉÒÔ±£´æ¾²Ì¬»ã±àµÈ¡£
¡¡¡¡ÏÖÔÚÈÃÎÒÃÇÔËÐкͷ´»ã±àÒ»¸öС³ÌÐò£¨ÎÒʹÓÃstarclean.exe£©Ò»¸ö´°¿Úµ¯³öÀ´£¬ÄÇÀïÓкܶàÑ¡Ï²»Òª¶¯Ëü£¬½ö½öµã»÷OK¡£ÈÃIDAÀ´·ÖÎö£¬µ±Ëü½áÊøºóÔÚnameµÄÑ¡ÏîÖÐͬw32dasmÖвο¼×Ö·û´®Ò»Ñù£¬²éÕÒ"a"×Ö·û¡£ÔÚname´°¿ÚÖÐËÑË÷À¸Öа´a£¬È»ºó¿ªÊ¼²éÕÒ£¬Ò»µ©ÕÒµ½£¬°´enter»òË«»÷Ëü£¬Ëü¾Í½«µ½´ïÕýÈ·µÄλÖᣰ´ctrl+enter½«µ½´ïÏÂÒ»¸öλÖᣲο¼×Ö·û´®¾ÍÔÚ¹â±ê¸½½ü¡£IDA¾Í¿ÉÒÔµ½´ïÏàÓ¦µÄλÖÃÁË¡£
ÁíÒ»¸öͬw32dasmÏàͬµÄ£ºjmpºÍcall²Î¿¼ÔÚIDAÒ²ÊÇÓÐЧµÄ¡£ÔÚw32dasm·´»ã±àµÄ´úÂëͬIDAÖÐÏàͬµÄ¡£

´úÂ뿪ʼ(w32dasm)

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403B50(C)
|
:00403B5F 81FAFC000000            cmp edx, 000000FC
:00403B65 0F8478010000            je 00403CE3
:00403B6B 8D8424B4000000          lea eax, dword ptr [esp+000000B4]
:00403B72 6804010000              push 00000104
:00403B77 50                      push eax

* Reference To: KERNEL32.GetModuleFileNameA, Ord:00E9h
                                  |
:00403B78 8B2D88924000            mov ebp, dword ptr [00409288]
:00403B7E 6A00                    push 00000000
:00403B80 FFD5                    call ebp
:00403B82 85C0                    test eax, eax
:00403B84 7516                    jne 00403B9C

* Possible StringData Ref from Data Obj ->""
                                  |
:00403B86 BE206A4000              mov esi, 00406A20
:00403B8B 8DBC24B4000000          lea edi, dword ptr [esp+000000B4]
:00403B92 B905000000              mov ecx, 00000005
:00403B97 F3                      repz
:00403B98 A5                      movsd
:00403B99 66A5                    movsw
:00403B9B A4                      movsb
½áÊø½áÊø

´úÂ뿪ʼ(IDA Pro 4.0x)

00403B5F loc_403B5F:                             ; CODE XREF: sub_403B00+50j
00403B5F                 cmp     edx, 0FCh
00403B65                 jz      loc_403CE3
00403B6B                 lea     eax, [esp+1B8h+var_104]
00403B72                 push    104h
00403B77                 push    eax
00403B78                 mov     ebp, ds:GetModuleFileNameA
00403B7E                 push    0
00403B80                 call    ebp ; GetModuleFileNameA
00403B82                 test    eax, eax
00403B84                 jnz     short loc_403B9C
00403B86                 mov     esi, offset aProgramNameUnk ; ""
00403B8B                 lea     edi, [esp+1B8h+var_104]
00403B92                 mov     ecx, 5
00403B97                 repe movsd
00403B99                 movsw
00403B9B                 movsb
´úÂë½áÊø 
  

ÄãÔÚÕâÀï¿´µ½£¬IDAÌṩÁ˸ü¶àµÄϸ½ÚÐÅÏ¢£¬ËüÊǸü¼ÓÇå³þ£¬ÓÃÒ»¸ö²Î¿¼×÷ΪÀý×Ó¡£
ÔÚw32dasmÖÐÈçÏ£º
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00403B50(C)

ÔÚIDA ProÖÐÈçÏ£º
CODE XREF: sub_403B00+50j

IDA provides ʹÓøü¶ÌµÄÐÐÀ´Ìṩ¸ü¶àµÄÐÅÏ¢¡£
1. ÓÃÒ»¸öjump (j)
2. jumpµ½´úÂëµÄλÖÃλÓÚ00403B50 (=403B00+50)
3. º¯Êý/call±¾ÉíÔÚ403B00(403B00+50)
4. jumpÔÚ.code section

¡¡¡¡Èç¹û²Î¿¼µÄÊÇÒ»¸öcallÄÇôËü½«ÈçÏ£º
CODE XREF: sub_403B00+50p

¡¡¡¡ÁíÒ»¸ö´óµÄÓŵãÊÇIDA¿ÉÒÔת»»±äÁ¿¡£Äã¿ÉÒÔË«»÷±äÁ¿ÒÔÕÒµ½ËüÃDZ£´æµÄµØÖ·´¦: lea edi, [esp+1B8h+var_104]¡£
¹¦ÄÜÖÐ×îÓÐÓõÄÖ®Ò»ÊÇʹÓýüËÆ²éÕÒ¡£ºÜÈÝÒ×½âÊÍ£ºIDA¾¡Á¦¼Çס¼Ä´æÆ÷Ëù¹ØÁªµÄ¿âº¯Êý¡£ÈçÏ£º

´úÂ뿪ʼ (IDA Pro)

004012D2 loc_4012D2:                             ; CODE XREF: sub_401280+5Fj
004012D2                 movsx   ecx, byte ptr [eax]
004012D5                 push    eax
004012D6                 lea     ebp, [ebp+ecx*2+0]
004012DA                 call    edi ; CharNextA ; Return a pointer to the next character in a 
; string 004012DC cmp byte ptr [eax], 0 004012DF jnz short loc_4012D2
´úÂë½áÊø

´úÂ뿪ʼ (w32dasm)

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004012DF(C)
|
:004012D2 0FBE08                  movsx ecx, byte ptr [eax]
:004012D5 50                      push eax
:004012D6 8D6C4D00                lea ebp, dword ptr [ebp+2*ecx]
:004012DA FFD7                    call edi
:004012DC 803800                  cmp byte ptr [eax], 00
:004012DF 75F1                    jne 004012D2
´úÂë½áÊø

¡¡¡¡Äã×¢Òâµ½ËüÃǵIJ»Í¬ÁËÂð£¿IDA½«Ïò½âÊÍÿһ¼þÊÂÇé¡£
¡¡¡¡ÔÚIDAÖÐÁíÒ»¸öͬw32dasm½üËÆµÄÊÇÊ®·Ö¼òµ¥µÄ£¬È磺"Goto code location" µÈͬÓÚÔÚIDA"Jump - Jump to adress" . »òÕß "Goto entrypoint" µÈͬÓÚÔÚIDA"Jump - Jump to entry point" .

¡¡¡¡ÄÇЩ¾ÍÊÇÔÚÄãÁ˽âIDA¿ªÊ¼Ê¹ÓÃËüǰ×îÎªÖØÒªµÄ¶«Î÷¡£ÓÐʱ £¬IDAÏÔʾ´óÁ¿µÄ"db"£¬²Î¿¼×Ö·û´®£¬½öÓдúÂë¡£½ö½ö¿ÉÒÔÉèºÃ¹â±ê£¬°´"c"¼ü£¬IDAת»»´úÂëÈçÏÂ

¿ªÊ¼ (ÔÚ°´'C'֮ǰ)

00401228                 dd offset unk_406130
0040122C                 db  8Bh ; ï
0040122D                 db  35h ; 5
0040122E                 dd offset RegSetValueExA
00401232                 db  6Ah ; j
00401233                 db    1 ;  
00401234                 db  6Ah ; j
00401235                 db    0 ;  
00401236                 db  68h ; h
00401237                 dd offset aName         ; "Name"
0040123B                 db  51h ; Q
0040123C                 db 0FFh ;  
0040123D                 db 0D6h ; Í
0040123E                 db  8Bh ; ï
0040123F                 db  4Ch ; L
00401240                 db  24h ; $
00401241                 db    8 ;  
00401242                 db  68h ; h
´úÂë½áÊø 
  

¿ªÊ¼ (ÔÚ°´'C'֮ǰ)

0040122C                 mov     esi, ds:RegSetValueExA
00401232 ; ---------------------------------------------------------------------------
00401232                 push    1
00401234                 push    0
00401236                 push    offset aName    ; "Name"
0040123B ; ---------------------------------------------------------------------------
0040123B                 push    ecx
0040123C                 call    esi ; RegSetValueExA
0040123E                 mov     ecx, [esp+8]
00401242                 push    100h
00401247                 push    offset unk_406030
0040124C ; ---------------------------------------------------------------------------
0040124C                 push    1
0040124E                 push    0
00401250                 push    offset aCode    ; "Code"
00401255 ; ---------------------------------------------------------------------------
00401255                 push    ecx
00401256                 call    esi ; RegSetValueExA
00401258                 mov     eax, [esp+8]
0040125C                 push    eax
0040125D                 call    ds:RegCloseKey
´úÂë½áÊø 
  

IDAÁíÒ»¸öÓŵ㣨¿ìËÙÏà¼Ó£©:

1. Äܹ»¶Ôw32dasmÎÞ·¨·´»ã±àµÄ×îÄѵÄÈí¼þ½øÐз´»ã±à£¨Èç¼Ó¿Ç³ÌÐò£©
2. Äܹ»ÒÔ.asm .sym ºÍÉõÖÁÊÇ .exe¼°ÆäËüÎļþÐÎʽ±£´æ
3. ѹËõµÄ¾²Ì¬»ã±à£¬¿ÉÒÔ½ÚÊ¡´óÁ¿µÄ´ÅÅ̿ռ䡣
4. ¿ÉÒÔÖØÃüÃûº¯Êý
5. Äܹ»·ÖÎö¾Þ´óµÄ³ÌÐò
µÈµÈ.... ;-)


III. w32dasm??

 
¡¡¡¡Äã¿´ÍêÁ˺óÄãÏÖÔÚ¿ÉÒÔ×ÔÎÊ"Èç¹ûIDAÕâôºÃ¿´£¬ÎªÊ²Ã´ÎÒ»¹ÒªÊ¹ÓÃw32dasm£¿"ÏÂÃæ¾ÍÊǶÔÓÚÕâ¸öµÄ½âÊÍ£º
Ê×ÏÈÊÇËÙ¶È£¬¶ÔÓÚIDAÀ´·ÖÎöÒ»¸öС³ÌÐòÊǷdz£·Ç³£µÄ¿ì£¬µ«ÊÇÈç¹û·ÖÎöÒ»¸ö´óµÄexeËü¾ÍÒª»¨·Ñ3¸öСʱ»ò¸ü¶àµÄʱ¼äÀ´È«Ãæ·ÖÎöexe¡£
Æä´Î£¬Èç¹ûÄã¶ÔÓÚÒ»¸öÖ¸¶¨µÄËÑË÷£¬IDA½«ºÜÂýµÄ£¬¶øÔÚw32dasmÖÐÔÚÎı¾·½ÃæÖÐËÑË÷ÊǺܿìµÄ¡£
µÚÈý£ºµ±·ÖÎöÒ»¸ö½öÓмòµ¥µÄ±£»¤µÄ³ÌÐòʱ£¬w32dasm¾ÍΪÊ×Ñ¡¡£ÒòΪÄã¾Í²»ÐèÒªÔÚIDAÄÇЩ¸½¼ÓµÄ¹¦ÄÜÁË¡£
ÉÏÃæµÄÈý¸öÒòËØ¿ÉÒÔ˵Ã÷Ò»ÇÐÁË :-) Èç¹ûÄãÖªµÀÆäËüµÄʹÓÃw32dasmÔ­ÒòµÄ»°£¬Çë¸æËßÎÒ¡£


IV. ½áÊø

¡¡¡¡ÓÖÒ»¸ö½Ì³Ì½áÊøÁË¡£ÏíÊÜIDA and w32dasmÒÔ¼°ËùÓÐ.....ÏíÊÜÑо¿ºÍ±£³ÖѧϰºÍ¼ÌÐøÑо¿ºÍÆÆ½â°É¡£²»ÊÇΪÁ˽âÃÜ£¬½öÊÇÎÄÕ£¬Ð´ÏÂÄãµÄÎÄÕ£¬´«²¥ÄãµÄ֪ʶ¡£¶ÔÓÚ½âÃÜÕâÊÇÖØÒªµÄÀ´Ëµ¡£²»ÒªÓÃÓÚ½âÃܰɡ£

¸Ðл´ó¼Ò

The Blackbird

Endnote:
¡¡¡¡The Blackbird ´´×÷ÓÚ1999-2000
´ËÎÄÕ¿ÉÒÔ×ÔÓÉ·Ö·¢£¬³ö°æ£¬´òÓ¡¡­¡­µÈ¾¡¿ÉÄܳ¤µÄÐÞÊΡ£


Copyright © 2000-2001 KanXue Studio All Rights Reserved.