Ŀ¼£¾£¾µÚ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.