Armadillo v3.x for copymem-II ÍÑ¿ÇÍêȫƪ¨D¨DÉÏƪ
Armadillo v3.xÍÑ¿ÇÍêȫƪ¨D¨DÏÂƪ
¨D¨D²éÕÒOEPºÍ´úÂëÐÞ¸´
ÕâÊÇһƪÍÑArmadillo¼Ó¿ÇÈí¼þµÄ¸öÈ˵ľÀú¹ý³Ì£¬±¾ÈËÌرðÉùÃ÷£ºÕâ¸ö¹ý³ÌÊDzÎÕÕÁËBighead[DFCG][YCG]·ÒëµÄRicardo NarvajaµÄ¡°Getright 5 ÍѿǺÍÖؽ¨¡±ÎÄÕ²Ù×÷µÄ£¬¿ÉÒÔ˵ÊǸöÕÕºù«»Æ°×öµÄ¡£¸ÐлBighead[DFCG][YCG]ºÍÏà¹ØµÄ·ÒëÕߣ¬¸ÐлRicardo NarvajaµÄÎÄÕ¡£
Õâ´ÎÄÃÀ´Á·Ï°µÄÈí¼þÊÇFCGµÄpeterdocterÀÏ´óÌṩµÄÈí¼þ£¬ÏÂÔصØÖ·£ºhttp://peter.88vip.com/armadillo3.rar
¹¤¾ß£º
Ollydbg v1.09dÖÐÎÄ°æ
PuPe 2002°æ ¸Ðлyesky1ÐÖÌṩ
LordPE Deluxe-1.4 by yoda
Import Reconstructor 16f
×¼±¸ºÃ±ÊºÍÖ½£¨²»ÄÜÉÙร¡£©£¬Ò»±²èºÍºÃÊÇÐÄÇé^_^.ÈÃÎÒÃÇ¿ªÊ¼Ò»¸ö¼è¿àºÍÂþ³¤µÄÍѿǹý³Ì°É£¨ÒòΪÎҲˣ¡£©¡£ArmadilloÊǵ±½ñÃÍ¿ÇÖ®Ò»À²¡£ÆäCopyMem-II+Debug-BlockerµÄ¼Ó¿Ç·½Ê½ÊǷdz£Ç¿¾¢µÄ£¬ºÃÔÚÓÐÅ£ÈËÔÚÇ°Ãæ´ø·£¬Ëä¼èÄѵ¹Ò²²»ÃÔʧ·½Ïò¡£
£¨¸ù¾ÝRicardo Narvaja µÄÎÄÕ£º±ØÐë˵Ã÷һϣ¬´Ë½Ì³Ì½öÔÚ Windows XP µ÷ÊÔ¡£²»Òª³¢ÊÔÔÚ Windows 98 »òÕß Windows 2000 ϽøÐС£ÊÂʵÉÏÊÇÒòΪֻÓÐ Windows XP ÒѾÓë±ØÒªµÄ API Íѹ³ÁË¡£ÎÒÊÇwindows2003Ó¦¸Ã·ûºÏÒªÇóÁË¡££©
¿ªÊ¼°É£¡¡«
SETUP 1 BP IsDebuggerPresent
ÓÃOllyDbg ×°ÈëÐèÒªÍѿǵÄÈí¼þarmadillo3.exe£¨ÆäʵÊǸöcrackme£©£¬¿ªÊ¼ÎÒÃǵĵÚÒ»µÀ¹Ø£¬·´anti_debug ÕâÊÇÿ¸öArmadillo¼Ó¿ÇÈí¼þ¶¼Òª×öµÄµÚÒ»¼þ¹¤×÷¡£ÔÚODµÄÃüÁîÐд°¿ÚÖмüÈë BP IsDebuggerPresent¡£¼Çס£¬ÎÒÃÇÓ¦±£Áô´óСд×ÖĸÕý³£×´Ì¬£¬ÒòΪÈç¹ûÎÒÃǼüÈëÈκÎÃüÁîÓÐÒ죬ÎÒÃÇ¿ÉÒÔÔÚÃüÁîÀ¸ÓÒ²àµÄÏÔʾÀ´·´Ó³³ö´íÎóÐÅÏ¢£¨Î´ÖªµÄÃüÁ¡£ËùÒÔÒªÕýȷдÈë BP IsDebuggerPresent È»ºó°´»Ø³µ¼ü¡£Èç¹ûÔÚ°´»Ø³µ¼üºóûÓÐÐÅÏ¢ÏÔʾ£¬ÕâÊDZíÃ÷´Ë BP ÔËÐÐÁ¼ºÃ¡££¨×îºÃ°ÑODµÄÒ쳣ѡÔñÏîÈ«²¿¹´ÉÏ£©F9ÔËÐÐһϾͻáÀ´µ½IsDebuggerPresentº¯ÊýµÄÈë¿ÚµØÖ·£º
77E2AC39 >MOV EAX,DWORD PTR FS:[18] ; <--ÖжÏÔÚÕâÀï
77E2AC3F MOV EAX,DWORD PTR DS:[EAX+30]
77E2AC42 MOVZX EAX,BYTE PTR DS:[EAX+2] ; <--ÔËÐе½ÕâÀï
77E2AC46 RETN
ÔÚ77E2AC42µØÖ·´¦Í£Ï£¬¿´¿´DS:[EAX+2]Ö¸ÏòµÄµØÖ·7FFDF002µÄÖ¸ÊÇ01£¨Õâ¸öµØÖ·¿ÉÄܺÍÄãµÄ²»Í¬£©£¬ÐÞ¸ÄÕâ¸öֵΪ00 ÒòΪArmadilloͨ¹ýIsDebuggerPresentº¯ÊýÀ´¼ì²éÊDz»ÊDZ»µ÷ÊÔÆ÷µ÷ÊÔ£¬Èç¹ûÓе÷ÊÔÆ÷¾Í»á¸³EAXֵΪ01ûÓо͸³EAXֵΪ00¡£ÐÞ¸ÄÕâ¸öÖµ¾ÍÊǸæËßËûûÓе÷ÊÔÆ÷£¬×ÔÈ»²»»á³ö´íÀ£¡¼ÇÏÂÕâ¸öµØÖ·£¬ÒÔºó¾³£»áÓõ½µÄ¡£
SETUP 2 BP WaitForDebugEvent
ÏÂÃæ¸Ã¸ÉʲôÄØ£¿²éÕÒOEPµÄÄÚ´æ³öÏֵĵط½£¬Èç¹ûÄãÓÃPeidÀ´²é¿´Èí¼þµÄOEP»áµÃµ½Ò»¸ö´íÎóµÄÖµ¡£ÒòΪArmadillo»áÐÞ¸ÄOEPµØÖ·¡£À´¿´¿´Ôõô²éÕÒÄØ£¿ÔÚÃüÁîÐÐÖÐÊäÈëBP WaitForDebugEvent È»ºó»Ø³µ¡£ÔËÐÐһϾͻáÀ´µ½º¯ÊýµÄÈë¿Ú£º
77E605B6 >PUSH EBP -Í£ÔÚÈë¿Ú
77E605B7 MOV EBP,ESP
77E605B9 SUB ESP,68
77E605BC PUSH ESI
ÔÚ¶ÑÕ»(Stack)´°¿ÚÎÒÃÇ¿ÉÒÔ¼ûµ½ÔÚ´Ë API º¯ÊýÓйزÎÊýµÄÈ«²¿ÐÅÏ¢
0012E220 0043776E /CALL µ½ WaitForDebugEvent
0012E224 0012EFF4 |pDebugEvent = 0012EFF4 //×¢ÒâÕâ¸öµØÖ·
0012E228 000003E8 Timeout = 1000. ms
Õâ¸öº¯ÊýµÄ×÷ÓÃÎÒ²»ÖªµÀ£¬µ«ÎÒÖªµÀ0012EFF4µØÖ·¾ÍÊÇOEP½«»á³öÏֵĵط½¡£À´µ½×ª´æ´°¿Ú G 0012EFF4 £º
0012EFF4 01 00 00 00 10 00 00 00 ... ...
0012EFFC 00 00 00 00 A8 F0 12 00 ....¨ð .
0012F004 00 00 50 00 64 EF 12 00 ..P.d?.
0012F00C 5C F0 12 00 00 00 00 00 ?.....
0012F014 5C F1 12 00 00 00 00 01 ?....
0012F01C 58 EF 12 00 AC F0 12 00 X?.¬ð .
0012F024 AC F2 12 00 34 5A F3 77 ¬ò .4Zów
0012F02C 58 BB F7 77 FF FF FF FF X»÷wÿÿÿÿ
0012F034 E7 DF F3 77 E1 26 F4 77 çßów?ôw
ÕâÒ»²½µÄ×÷ÓþÍÊÇͨ¹ýº¯ÊýÕÒµ½Õâ¸öÄÚ´æµØÖ·£¬ÒòΪËû»á³öÏÖÕæÕýµÄOEPÈë¿Ú¡£ÎªÊ²Ã´£¿ÎÒÒ²²»ÖªµÀ¡£
SETUP 3 Bp WriteProcessMemory
ÃüÁîÀ¸Ð´Èë Bp WriteProcessMemory ¶ÏµãÈ»ºóµã»÷ RUN¡£¿ÉÄÜ»áÔÚijЩÒ쳣ͣÏ£¬ÄÇÄã¿ÉÒÔͨ¹ý°´Ï Shift + F9 ˳ÀûµØÈƹý¡£Õâ¸öÈí¼þ»¹»á³öÏÖδע²áµÄArmadillo¼Ó¿ÇÌáʾ£¬Ô½¹ýËû¡£Ö»ÒªÎÒÃÇÔÚ WriteProcessMemory API Í£ÏÂÁË£¬Ç§Íò²»Òª´¥¶¯Èκμü£¬À´¿´¿´ÄÜÓÐʲôÊÕ»ñ¨D¨D
¶ÑÕ»´°¿Ú¿ÉÒÔ¿´µ½µÚÒ»¸ö¿éµÄÈ«²¿ÐÅÏ¢£º
0012E0C0 0043AFC2 /CALL µ½ WriteProcessMemory À´×Ô armadill.0043AFBC
0012E0C4 00000044 |hProcess = 00000044 (window)
0012E0C8 00425000 |Address = 425000
0012E0CC 003A2630 |Buffer = 003A2630
0012E0D0 00001000 |BytesToWrite = 1000 (4096.)
0012E0D4 0012E1DC pBytesWritten = 0012E1DC
ÏÈÀ´¿´¿´Ricardo NarvajaµÄÎÄÕÂÀï˵µÄ£º
ÊǸ¸½ø³Ì½«Òª¸´ÖƵ½ËüµÄ×Ó½ø³ÌµÄÖ¸Òý¡£´ËÐÅÏ¢ÊDZ£´æÔÚÒ»¸ö»º´æÖ®ÄÚ£¬¸¸½ø³ÌÀ´×Ô 003A2630£¬²¢ÇÒËü½«»á´Ó 00425000¿ªÊ¼ÒÔÿ 1000 ×ֽڿ鷽ʽ¸´ÖƵ½×Ó½ø³Ì£¨×Ö½ÚдÈ룩£¬ËùÒÔÈç¹ûÎÒÃÇÕÒµ½´Ë·½°¸£¬ÎÒÃǾͿÉÒÔºÜÈÝÒ×Àí½âµ½×Ó½ø³ÌµÚÒ»¸ö¿éÊÇÍêÈ«¿ÕµÄ£¬È»ºóµ±×Ó½ø³Ì³¢ÊÔÖ´ÐÐ OEP ʱ½«Ëü·µ»ØÒ»¸ö´íÎóÐÅÏ¢£¬ÒòΪÔÚÕâ¸öµã²¢Ã»ÓÐʲôÊý¾Ý£¬Òò´Ë¸¸½ø³Ì»ñµÃ±¨¸æ£¬Í¬ÑùÎÒÃÇ¿ÉÒÔÔÚ¸¸½ø³Ì¿´µ½Óйر¨±í£¬ËùÒÔËüÍ£Ö¹ÔËÐУ¬ÔÚÏÂÒ»¸ö´íÎóÇ°¸´ÖƱØÒªµÄÊý¾Ý¿éÈ»ºó¼ÌÐøÔËÐС£¸ÃÊý¾Ý¸±±¾µÄÊýÖµ´óСÊÇ 1000 ×Ö½Ú£¬ËùÒÔµ±³ÌÐòÊÔͼִÐÐÈκγ¬¹ý´Ë¿éʱ£¬¸÷ÖÖ´íÎ󽫻ᷢÉú£¬È»ºó´íÎ󽫻áÏò¸¸½ø³Ì±¨¸æ£¬È»ºó¸¸½ø³Ì½«»á¸´ÖÆÁíÍâµÄ 1000 ×ֽڵĿ飬ÖîÈç´ËÀà¡£
Õâ¸ö¿é¿ªÊ¼ÔÚ 425000 Ò»Ö±µ½ 425FFF¡£OEP ±Ø¶¨ÔÚÆäÖµÖ®ÄÚ¡£ÈÃÎÒÃÇÀ´ÁôÒâ¸Õ²ÅµÄÄǸöת´æ´°¿Ú£º
0012EFF4 01 00 00 00 B0 0E 00 00 ...?..
0012EFFC B8 0E 00 00 01 00 00 80 ?.. ..€
0012F004 00 00 00 00 00 00 00 00 ........
0012F00C D0 51 42 00 02 00 00 00 ÐQB. ...
0012F014 00 00 00 00 D0 51 42 00 ....ÐQB.
0012F01C D0 51 42 00 00 00 00 00 ÐQB.....
0012F024 00 00 00 00 00 00 00 00 ........
0012F02C 13 00 00 00 94 10 00 C0 ...?.
×¢Òâ´°¿ÚÖÐÀ¶É«µÄ×Ö½Ú004251D0£¨Ó¦¸Ãµ¹¹ýÀ´£©£¬Õâ¸öÖµÊÇÔÚ425000µ½ 425FFFÖ®¼äµÄÖµ¡£ÄÇôÈí¼þµÄOEPÓ¦¸ÃµÄ004251D0
ºÇºÇ£¬Õâ¶ÎÎÒÏÈÔõôҲ²»Ã÷°×¡£ÏÖÔÚÈÃÎÒÀ´½âÊÍһϣº£¨ÎÒ±à³Ì²»ÐУ¬ËùÒÔ˵µÄ²»Ò»¶¨ÕýÈ·£©
WriteProcessMemory º¯ÊýÊÇÄڴ渴Öƺ¯Êý£¬´ó¼ÒÖªµÀArmadilloµÄcopymem-II·½Ê½»áÔÚÄÚ´æÖÐÉú³ÉͬÃûµÄ2¸ö½ø³Ì£¬ÆäÖÐÒ»¸öÊǸ¸½ø³Ì£¬Ò»¸öÊÇ×Ó½ø³Ì¡£ÄÇô×Ó½ø³ÌÊÇÔõôÉú³ÉµÄÄØ£¬¾ÍÊÇ´Ó¸¸½ø³ÌÖÐÓÃWriteProcessMemoryº¯Êý¸´ÖÆÀ´µÄ¡££¨Õâ¶þ¸ö½ø³ÌµÄ´°¿Ú¾ä±ú²»Í¬£¬²¢ÇÒ»¥ÏàÕÆÎÕ×ŶԷ½µÄOEP£©SETUP2¾ÍÊǵõ½ÁËÄڴ渴ÖÆÐÅÏ¢µÄÄÚ´æµØÖ·£¬ÒòΪ¸´ÖÆÊÇ°´1000µÄ¿é½øÐеģ¬ËùÒÔµÚÒ»¸ö¸´ÖƵĿéÖбض¨°üº¬ÁË×Ó½ø³ÌµÄOEPµØÖ·¡£Õâ¸öµØÖ·µÄÖµÔÚµÚÒ»¿éµÄÖµÖ®¼ä¡£ËùÒÔÉÏÃæµÄת´æ´°¿ÚÖеÄÀ¶É«ÄǸöµØÖ·¾ÍÊÇÕæÕýµÄOEPÁË¡£Ricardo NarvajaÕæţѽ£¡
OEPÕÒµ½ÁË£¬ÊDz»ÊǾÍÄÜdump³öÀ´ÄØ£¿ÊÔÊÔdump³öÀ´µÄ´úÂëÓÖÊÇ´íÎóµÄ¡£¿ÉÒԿ϶¨µÄÊÇÓÐÒ»¸öº¯ÊýÔÚ½âÃܺóÓÖÆÆ»µÁ˸´ÖƵÄÊý¾Ý£¬Õâ¾ÍÒý³öÁËÏÂÃæÀ´²éÕÒÆÆ»µÊý¾ÝµÄº¯ÊýµÄ·½·¨¡£½Ó×ÅÀ´¨D¨D
SETUP 4 NOP Ìî³ä Cripter?Call (²»ÈóÌÐòÆÆ»µ½âÃܵĴúÂë)
¸¸½ø³Ì»áΪËûµÄ×Ó½ø³Ì½âÃÜÒ»¸ö¿é¡£µ«ÊÇÈÔÓÐ Cripter Call ÄÇЩ¼ÓÃÜ»òÆÆ»µ¾É¿éÀ´±ÜÃⱻת´¢¡£ÏÖÔÚ¾ÍÒÔʵ¼Ê²Ù×÷À´²éÕÒÕâÑùµÄ Call È»ºóÓà NOP Ìî³äÌæ»»Ëü¡£ÕâÊǸö¼è¿àºÍ¸´ÔӵŤ×÷.
Ê×ÏÈÔÚcpu´°¿ÚÖÐÓÒ»÷Êó±ê³öÏÖ¹¦Äܲ˵¥£¬Ñ¡ÔñÖжϵġ²Ìõ¼þ¼Ç¼¡³´°¿Ú¡£ÔÚÌõ¼þ±í´ïʽÖÐÌî ¡²ESP+U¡³È»ºóÑ¡Ôñ¡²ÓÀÔ¶¼Ç¼Ìõ¼þ±í´ïʽ¡³¡£Õâ¸öÓÃÀ´¼ì²é¸´ÖƵÄÊý¾Ý¿é¡£
Ôõô²éÕÒCripter CallÄØ£¿
ÔÚWriteProcessMemoryº¯ÊýµÄÈë¿Ú´¦Í£Ï¡£Alt+K´ò¿ªµ÷ÓöÑÕ»´°¿Ú£º
ºô½Ð¶ÑÕ»
µØÖ· ¶ÑÕ» Àý³Ì / ²ÎÊý µ÷ÓÃÀ´×Ô Frame
0012E0C0 0043AFC2 ? kernel32.WriteProcessMemory armadill.0043AFBC
0012E0C4 00000044 hProcess = 00000044 (window)
0012E0C8 00425000 Address = 425000
0012E0CC 003A2630 Buffer = 003A2630
0012E0D0 00001000 BytesToWrite = 1000 (4096.)
0012E0D4 0012E1DC pBytesWritten = 0012E1DC
0012E1E8 00439D34 ? armadill.0043A07B armadill.00439D2F
0012E21C 00437CA8 armadill.004398F5 armadill.00437CA3 0012E218
0012F5BC 00434384 armadill.00436099 armadill.0043437F 0012F5B8
0012FD20 00434BDA armadill.00433CF4 armadill.00434BD5 0012FD1C
0012FF38 0043CF87 armadill.00434940 armadill.<ModuleEntryPoint>+0C9 0012FF34
0012FF3C 00400000 Arg1 = 00400000 ASCII "MZP"
0012FF40 00000000 Arg2 = 00000000
0012FF44 00141EFB Arg3 = 00141EFB
0012FF48 0000000A Arg4 = 0000000A
¿´¿´ÕâÀ
0012E0C0 0043AFC2 ? kernel32.WriteProcessMemory armadill.0043AFBC
ÏÖÔÚ¸¸½ø³ÌµÄ0043AFC2µØÖ·´¦µ÷ÓÃÁËÕâ¸öº¯Êý£¬ÏòÏ¿´¿´£º
0012E1E8 00439D34 ? armadill.0043A07B armadill.00439D2F
ͨ¹ýÕâ¸öÎÒÃÇÖªµÀ³ÌÐòÔÚ00439D2F´¦Ò²µ÷ÓÃÁËÕâ¸öº¯Êý¡£Ë«»÷À´µ½£º
00439D27 MOV ECX,DWORD PTR SS:[EBP+C]
00439D2A PUSH ECX
00439D2B MOV EDX,DWORD PTR SS:[EBP+8]
00439D2E PUSH EDX
00439D2F CALL armadill.0043A07B //ÕâÀïµ÷ÓÃÁËÉÏÃæµÄº¯Êý
00439D34 ADD ESP,0C
00439D37 AND EAX,0FF
00439D3C TEST EAX,EAX
00439D3E JNZ SHORT armadill.00439D47
00439D40 XOR AL,AL
00439D42 JMP armadill.0043A074
00439D2F CALL armadill.0043A07B Õâ¸öCall ÊǸö½âÃܵĺ¯Êý£¬ÄÇô¿Ï¶¨ÓÐÒ»¸öÆÆ»µ½âÃܵĺ¯Êý¡£²éÕÒÁíÍâÒ»¸öͬÑùµÄCallµÄµØ·½¾ÍÊÇÎÒÃÇÒªÕҵĵط½£¬ÔÚODÖеģº
00439D2F CALL armadill.0043A07B ´¦ÓÒ»÷¹¦Äܲ˵¥£¬Ñ¡Ôñ¡²²éÕҲο¼¡³¡¡¡²µ÷ÓÃÄ¿±ê¡³Ñ¡Ïî¾Í»á´ò¿ªÈ«²¿µÄµ÷ÓÃʲôCallµÄµØ·½£º
²Î¿¼Î»ÓÚarmadill:.text µ½ 0043A07B
µØÖ· ·´»ã±à ×¢ÊÍ
00439D2F CALL armadill.0043A07B (³õʼ CPU Ñ¡Ôñ)
00439FEA CALL armadill.0043A07B //ÔÀ´ÕâÀïÓÐÒ»¸ö^_^
Ë«»÷00439FEA CALL armadill.0043A07B¾Í»áÀ´µ½Õâ¸öÃÎÖеĵط½£º
00439FDA MOV ECX,DWORD PTR DS:[462AAC]
00439FE0 MOV EDX,DWORD PTR DS:[462AB0]
00439FE6 MOV EAX,DWORD PTR DS:[EDX+ECX*4]
00439FE9 PUSH EAX
00439FEA CALL armadill.0043A07B //͉˕ ͉˕ ͉˕
00439FEF ADD ESP,0C
00439FF2 PUSHFD
00439FF3 PUSHAD
00439FF4 JMP SHORT armadill.0043A021
ûÓбðµÄ˵ÁË£¬nopËû¡£
SETUP 5 ÔËÐиà API È»ºóÔÚ OEP ÖÐÉú³ÉÒ»¸öËÀÑ»·
ÏÖÔÚÊÇʱºîÒªÖ´ÐÐ WriteProcessMemory Ò»´ÎÁË¡£×ö·¨ÊÇÎÒÃÇ¿ÉÒÔÔÚÁ½¸öÑ¡ÏîÖ®¼ä×÷³öÑ¡Ôñ¡£Ò»ÊÇҪתµ½²Ëµ¥ Debug|Execute till return È»ºóËü½«»áÔËÐÐÖ±µ½ RET£¬È»ºó°´Ò»´Î F7¡£¶þÊÇҪתµ½¶ÑÕ»µÚÒ»ÐÐÈ»ºóÔÚÄÇÀïÉèÖà BPX È»ºó¾Í F9 ÔËÐÐËü¡£ Õâ¶ÎÎҾ͸´ÖÆÁËRicardo NarvajaµÄÔÎÄ¡£ÎÒûµÃ˵ÁË¡£·´Õý»áµ½APIµÄµ÷Óô¦¾Í¿ÉÒÔÁË£º
0043AFB3 PUSH EDX ; |Address
0043AFB4 MOV EAX,DWORD PTR DS:[462A9C] ; |
0043AFB9 MOV ECX,DWORD PTR DS:[EAX] ; |
0043AFBB PUSH ECX ; |hProcess
0043AFBC CALL NEAR DWORD PTR DS:[<&KERNEL32.WriteProcessMe>; WriteProcessMemory ********
0043AFC2 TEST EAX,EAX
0043AFC4 JNZ SHORT armadill.0043B001
0043AFC6 PUSHFD
0043AFC7 PUSHAD
0043AFC8 JMP SHORT armadill.0043AFF5
ÏÖÔÚÊÇ PUPE ÔË×÷µÄʱºòÁË£¬PUPE ÊÇÒ»¸öÎ÷°àÑÀÓïµÄ¹¤¾ß¡£Äã¿ÉÒÔµ½ www.google.com ÍøÕ¾ËÑË÷Ëü£¬ÔÚÏÂÒ»ÐÐÎÒÃǽ«ÒªÔÚ×Ó½ø³ÌµÄ OEP ÄÚÉú³ÉÒ»¸öËÀÑ»·¡£´Ëʱ½«»á¾²Ö¹×Ó½ø³ÌÖ±µ½ÎÒÃÇÄܹ»½ÐÐÑËû¡£²»¹ýÎÒûÓÐÕÒµ½£¬»¹ÊÇyesky1ÐÖÌṩÁËÕâ¸ö¹¤¾ß¡£ÔٴθÐл£¡
´ò¿ªPUPE Ñ¡Ôñ½ø³ÌÖжþ¸öarmadillo3.exeµÄÉÏÃæµÄÒ»¸ö£¬Î»ÓÚÉÏÃæµÄ×Ó½ø³Ì£¬ÏÂÃæµÄ¸¸½ø³Ì¡£ÎÒÃÇÑ¡ÔñµÄÊÇ×Ó½ø³Ì¡£È»ºóÔÚËüÉÏÃæ°´ÓÒ¼ü²¢Ñ¡Ôñ "Parchear"¡£´ò¿ªÁËParchear´°¿Ú¡£ÌîÈë²ÎÊý£¬No de bytes = 2 ºÍ Introducir la direccion = 4251D0£¨×Ó½ø³ÌµÄOEP£©£¬È»ºóµã»÷ Buscar)¼ÇÏÂÔÚ¶Ô»°¿ò¼ûµ½µÄÔʼ×Ö½ÚÈ»ºóÓÃËÀÑ»· EB FE À´Ìæ»»Ôʼ×Ö½Ú£¬µã»÷ " Parchear" È»ºó INFINITE LOOP (ËÀÑ»·)±ã»á¾ÍÐ÷¡£
ºÇºÇ£¬µÚÒ»´ÎʹÓû¹Õæ²»ÖªµÀÕâÊǸÉʲôÄØ£¬Æäʵ¾ÍÊÇÓÃPUPEÐÞ¸ÄÈë¿ÚµÄ´úÂ룬ÈÃËû±ä³ÉÌøתµ½EIPµØÖ·µÄ´úÂë¡£ÕâÑù³ÌÐòÔÚÈë¿Úµã¾Í»áͣϡ£ÌøÏò×Ô¼ºµÄµØÖ·£¬³ÌÐò»áÏòÏÂÖ´ÐÐÂð£¿
SETUP 6 BP WaitForDebugEvent ºÍ NOP Ìî³ä API
ÔÚÃüÁîÐÐÖмüÈë BP WaitForDebugEvent È»ºó°´»Ø³µ¼ü£¬×îºóµã»÷ RUN
£¨ÎªÊ²Ã´ÒªÏÂÕâ¸öAPIÇë²ÎÕÕleo_cyl1´óϺµÄÎÄÕ£©
µ±Í£Ö¹ºó£¬»áÀ´µ½ÕâÀ
77E605B6 >PUSH EBP //Í£ÔÚÕâÀï
77E605B7 MOV EBP,ESP
ÄãÒªÇмǣºÔÚÈκÎʱºò¶¼¾ø¶Ô²»ÒªÔËÐÐÕâ¸ö API£¡ÁôÒâÒ»ÏÂÔÚ (ת´¢)´°¿ÚÖеı¨±í£¬È»ºóתµ½ STACK (¶ÑÕ»)´°¿Ú¡£Õâ¶ÎÎÒÒ²Ö»Äܳ£¬ÎÒÌ«²ËÁË¡£ÏÖÔÚÀ´¿´¿´¶ÑÕ»´°¿ÚÖеÄÐÅÏ¢£º
0012E220 0043776E /CALL µ½ WaitForDebugEvent //µ÷ÓÃÐÅÏ¢
0012E224 0012EFF4 |pDebugEvent = 0012EFF4
0012E228 000003E8 Timeout = 1000. ms
¿ÉÒÔ¿´µ½£¬Èç¹ûÎÒÃÇÔËÐÐÕâ¸ö API£¬ÎÒÃǽ«Òª×ªµ½0043776EËùÒÔÔÚÖ÷´°¿ÚÓÃGo to|Expression =0043776EÄܵ½´ïÄÇÀï¡£
0043776E TEST EAX,EAX
ÔÙÒ»´ÎÌáÐÑÄ㣺²»ÒªÔËÐÐÕâ¸ö API£¡Òò¶øÔÚ0043776EÄÚ°´ÓÒ¼üÈ»ºóÑ¡Ôñ[н¨ÆðÔ´]¡£ÕâÊÇÌø¹ý¸Ã API µÄÕýÈ·×ö·¨¡£ÏÖÔÚÎÒÃDZØÐëÓà NOP À´Ìî³äµ÷Óõ½¸Ã API ¼°ÆäÓÐ¹Ø Push¡£
°ÑÏÂÃæµÄ´úÂëÓÃnopÐ޸ĵô£º
00437759 MOV AL,BYTE PTR DS:[E8686133]
0043775E ADD EAX,DWORD PTR DS:[EAX]
00437760 ADD BYTE PTR DS:[EBX+FFFA3895],CL
00437766 CALL NEAR DWORD PTR DS:[EDX-1]
00437769 ADC EAX,<&KERNEL32.WaitForDebugEvent>
£¨²»ÖªµÀΪʲôÕâ¶Î´úÂëÊǶ¯Ì¬µÄ£©
¸ÄΪ£º
00437759 NOP
0043775A NOP
0043775B NOP
0043775C NOP
0043775D NOP
0043775E NOP
0043775F NOP
00437760 NOP
00437761 NOP
00437762 NOP
00437763 NOP
00437764 NOP
00437765 NOP
00437766 NOP
00437767 NOP
00437768 NOP
00437769 NOP
0043776A NOP
0043776B NOP
0043776C NOP
0043776D NOP
0043776E TEST EAX,EAX
SETUP 7 ´ò²¹¶¡
¡°µ±´¦ÀíÕâ¸ö²½ÖèʱҪÌرðСÐÄ! ¶àÊýÈ˲¢²»ÖªµÀ¾¿¾¹ÊÇÈçºÎ´ò²¹¶¤µÄÕýÈ··½·¨£¬ËùÒÔÒª¾¡Á¦Áì»áÎÒÔÚÕâÀïÊÇÔõÑù×ö£¬²¢ÇÒÄ㻹ÐèÒªÔÚÆäËüÇé¿öÏ»áÍê³É¡£¡± ÎÒÊÇÊÔÁ˼¸´Î²Å³É¹¦µÄ£¡
µÚÒ»²½ÊǸü¸Ä´ËÌøת£º
0043776E TEST EAX,EAX
00437770 JE armadill.004398A5 //°ÑÕâÀïÐÞ¸ÄΪ Jmp 00401000
Why£¿ ÒòΪ¸¸½ø³ÌµÄÆ«ÒÆÊÇ00401000 ÎÒÃÇÐèÒªÔÚÄÇÀï´ò²¹¶¡¡£
ÏÖÔÚgo 00401000 ×¼±¸´ò²¹¶¡ÁË£º
00401000 ADD BYTE PTR DS:[EAX],AL
00401002 ADD BYTE PTR DS:[EAX],AL
00401004 ADD BYTE PTR DS:[EAX],AL
00401006 ADD BYTE PTR DS:[EAX],AL
00401008 ADD BYTE PTR DS:[EAX],AL
À´¿´¿´ÄÚ´æ¾µÏóÖеÄÊý¾Ý£¬Alt+M ´ò¿ªÄÚ´æ¾µÏó´°¿Ú£º
00400000 00001000 armadill PE header Imag R RWE
00401000 00025000 armadill CODE Imag R RWE
00426000 00001000 armadill DATA Imag R RWE
00427000 00001000 armadill BSS Imag R RWE
00428000 00002000 armadill .idata Imag R RWE
0042A000 00001000 armadill .tls Imag R RWE
0042B000 00001000 armadill .rdata Imag R RWE
0042C000 00003000 armadill .reloc Imag R RWE
0042F000 00020000 armadill .text code Imag R RWE
0044F000 00010000 armadill .adata Imag R RWE
0045F000 00010000 armadill .data data,imports Imag R RWE
0046F000 00010000 armadill .reloc1 relocations Imag R RWE
0047F000 00040000 armadill .pdata Imag R RWE
004BF000 00011000 armadill .rsrc resources Imag R RWE
¿´¿´³ÌÐòµÄ´úÂë¶Î¿ªÊ¼ÓÚ00401000 ½áÊøÓÚ00425FFF
ÔÚת´æ´°¿ÚÖаÑOEPµÄÈë¿ÚÐÞ¸ÄΪ400000£¬Ð޸ĺóÊÇÕâÑùµÄ£º
0012EFF4 01 00 00 00 B0 0E 00 00 ...?..
0012EFFC B8 0E 00 00 01 00 00 80 ?.. ..€
0012F004 00 00 00 00 00 00 00 00 ........
0012F00C 00 00 40 00 02 00 00 00 ..@. ... //*******
0012F014 00 00 00 00 00 00 40 00 ......@. //*******
0012F01C 00 00 40 00 00 00 00 00 ..@..... //*******
ÒòΪÿ¸ö¿éÑ»·ÒÔ 1000×÷ÔöÁ¿²¹¶¤£¬ËùÒÔÒª½âѹµÄµÚÒ»¿é±ØÐëÊÇ401000¡£
ÏÖÔÚÎÒÃDZØÐëÔÚÖ÷´°¿ÚÏÂÒÔ 401000 ×÷¿ªÊ¼ÐУ¬²¢Ð´Èë
00401000 8105 0CF01200 00100000 ADD DWORD PTR DS:[12F00C],1000
0040100A 8105 18F01200 00100000 ADD DWORD PTR DS:[12F018],1000
00401014 8105 1CF01200 00100000 ADD DWORD PTR DS:[12F01C],1000
ÕâÀï²¹¶¡ÒªºÍת´æ´°¿ÚÖеĵØÖ·Ò»Ö¡£
ÏÂÒ»ÐоÍÒªÕâÑùд¡Ã
0040101E CMP DWORD PTR DS:[12F01C],armadill.00426000
//²âÊÔ´úÂë¶Î½áÊøÁËÂð£¿
ÒªÖªµÀºÎʱÎÒÃÇÒѾ½âѹÁËÈ«²¿¿é¡£
Ôò±ØÐëдÈë¡Ã
00401028 - 0F85 F6341F00 JNZ 00437775 //ûÓÐÍê³É¾Í¼ÌÐø
Èç¹û±È½Ï½á¹û²»ÊÇ True£¬ÄÇÕâ¸öÑ»··µ»Øµ½µÄλÖýô°¤×ÅÄÄÀïÊǵ÷ÓøÃÑ»·¡£È»ºóÎÒÃDZØÐëдÈëÏÂÒ»ÐÐд NOP £¬ÎÒÃǽ«·ÅÖÃÒ»¸ö BP£¬ÊÇÒªÔÚÍê³Éת´¢²Ù×÷ʱÀ´Í£Ö¹Ëü¡£
ÏÂÃæÊÇ´òºÃ²¹¶¡µÄÈ«²¿´úÂ룺
00401000 ADD DWORD PTR DS:[12F00C],1000
0040100A ADD DWORD PTR DS:[12F018],1000
00401014 ADD DWORD PTR DS:[12F01C],1000
0040101E CMP DWORD PTR DS:[12F01C],armadill.00426000
00401028 JNZ armadill.00437775
0040102E NOP //ÕâÀïϸöÖжϣ¬Èç¹ûÍê³ÉÁ˾ͶÏÔÚÕâÀï¡£
0040102F NOP
ºÃÁË£¬×î¹Ø¼üµÄ²¿·ÖÍê³ÉÁË£¬ÏÂÃæ¾Í¿ÉÒÔÍÑ¿ÇÁË¡£
SETUP 8 ÍÑ¿ÇÁË
¼ì²éÒ»ÏÂÇ°ÃæµÄ¼¸²½£¬±£Ö¤ËûµÄÕýÈ·ºó¾ÍÔËÐÐÕâ¸ö³ÌÐòÁË¡£F9һϣ¬¹þ¹þÖжÏÔÚ£º
0040102E NOP //ÕâÀïϸöÖжϣ¬Èç¹ûÍê³ÉÁ˾ͶÏÔÚÕâÀï
ºÃÏñ³É¹¦ÁËÒ®£¡
¿´¿´¼Ç¼ÀïÓÐЩʲô£¬Alt+L´ò¿ª¼Ç¼´°¿Ú£º
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
77E65A12 COND: δ֪µÄ±êʾ·û
0040102E ÖжÏÔÚ armadill.0040102E
ÎÒ²»ÖªµÀΪʲô³ÉÁËδ֪µÄ±êʾ·û£¬¿ÉÄÜÊÇÎÒµÄÌõ¼þ¼Ç¼ûÓÐÉèÖú㬲»¹ýÄǾÍÊǸ´ÖƵĴúÂë¿é¡£ÓÐÁËÕâ¸öÐÅÏ¢¾Í˵Ã÷´úÂë±»ÍêÈ«µÄ¸´ÖƹýÀ´ÁË¡£
SETUP 9Óɸ¸½ø³Ì½â³ö×Ó½ø³Ì
ÏÈÓÃODµÄ¸½¼Ó¹¦Äܲ鿴×Ó½ø³ÌµÄ¾ä±ú£¬´ò¿ª¸½¼Ó´°¿Ú£¬¿´µ½Ã»ÓбäÉ«µÄÄǸöarmadillo3.exe¾ÍÊÇ×Ó½ø³Ì£¬ËûµÄ¾ä±úÊÇOBDC £¨Õâ¸öֵÿ´Î¼ÓÔغó¾Í»á±ä£©
ÔÚ³ÌÐòÖÐдÈëÏÂÃæµÄ´úÂ룺
0040102E PUSH 0BDC //PUSH (×Ó½ø³Ì¾ä±ú)
00401033 CALL kernel32.DebugActiveProcessStop
00401038 NOP // ÕâÀïϸöÖжÏ
ÔËÐгÌÐò¡£¿´¿´¼Ä´æÆ÷´°¿Ú£¬Èç¹ûµ± ³ÌÐò ÔÚ EAX = 1 Í£ÏÂʱ£¬¿ÉÒÔÈ·¶¨×Ó½ø³ÌÓëËûµÄ¸¸½ø³ÌÒѾ·ÖÀ룬ȻºóÎÒÃÇ¿ÉÒÔ¹Ø±Õ OllyDbg¡£¶øÈç¹û EAX = 0£¬ÄÇÊÇÒòΪÄãдÈëÓе㲻¶Ô¾¢£¨¿ÉÄÜÊǾä±ú£©£¬ÔòÄã±ØÐëÒª´ÓÍ·µ½Î²ºË¶ÔÄÇЩÐС£Äã¿ÉÒÔÖØÐÂдÈë´úÂ룬ÔÙÀ´Ò»´Î¡£
ÏÖÔÚ¹Ø±Õ OllyDbg È»ºóÔٴδò¿ªËü¡£²»Òª×°ÈëÈκζ«Î÷¡£×ªµ½²Ëµ¥ Îļþ|¸½¼Ó È»ºóÑ°ÕÒ×Ó½ø³Ì²¢ÇÒ ¸½¼ÓÉÏ Ëü(ÎÒÃÇÒѾɱËÀËûµÄ¸¸½ø³Ì :X)¡£
Ö»Òª³É¹¦¸½¼ÓÉÏ£¬ÔËÐÐһϣ¬³ÌÐò¾Í»áÔÚËÀÑ»·ÔËÐУ¬Òò´Ë°´ F12 À´ÔÝÍ£³ÌÐò£¬È»ºóÔÚPUPEÖаÑOEPµÄ´úÂ뻹ԳÉ55 8B £¬ÔÙ¡°Parchear¡±Ò»Ï¾ͻỹԳÉÔÀ´µÄ´úÂëÁË¡£
´ò¿ª LordPE È»ºóËÑË÷armadillo3.exeÕâ¸ö½ø³Ì¡£Ñ¡ÔñÕâ½ø³ÌÒÔ¼°Ñ¡Ôñ¡²active dump engine¡³| ¡²IntelliDump¡³|¡²select¡³£¬È»ºóµã»÷ Dump full £¬Ò»µ©±£´æÍê³É£¬Á¢¼´ÔËÐÐ PEditor (£¬È»ºóÔÙдÈëÕâ¸öÓÐЧµÄÈë¿Úµã( ENTRY POINT)¡£¼ÆËãÒ»ÏÂÊÇ4251D0-400000£½251D0 ÐÞ¸´¼´¿É¡£
µÚÒ»²¿·ÖÒÑÍ꣬дÁËÒ»¸öÍíÉÏ¡£Ì«ÀäÁË£¬µÚ¶þ²¿·Ö¹ØÓÚÈçºÎ²éÕÒÕâÆæÃîÌøתÀ´Íê³ÉÒýÈë±í¡¢ÐÞ¸´ IAT ºÍÉú³É³ÌÐòÔËÐÐ »¹ÊÇÁô¸øÃ÷Ìì°É¡£
fxyang[OCN][BCG][FCG]
2003.11.26Ò¹
¨D¨DÍê³ÉÒýÈë±í¡¢ÐÞ¸´ IAT
ÕâÊÇһƪÍÑArmadillo¼Ó¿ÇÈí¼þµÄ¸öÈ˵ľÀú¹ý³Ì£¬±¾ÈËÌرðÉùÃ÷£ºÕâ¸ö¹ý³ÌÊDzÎÕÕÁËBighead[DFCG][YCG]·ÒëµÄRicardo NarvajaµÄ¡°Getright 5 ÍѿǺÍÖؽ¨¡±ÎÄÕ²Ù×÷µÄ£¬¿ÉÒÔ˵ÊǸöÕÕºù«»Æ°×öµÄ¡£¸ÐлBighead[DFCG][YCG]ºÍÏà¹ØµÄ·ÒëÕߣ¬¸ÐлRicardo NarvajaµÄÎÄÕ¡£
Õâ´ÎÄÃÀ´Á·Ï°µÄÈí¼þÊÇFCGµÄpeterdocterÀÏ´óÌṩµÄÈí¼þ£¬ÏÂÔصØÖ·£ºhttp://peter.88vip.com/armadillo3.rar
¹¤¾ß£º
Ollydbg v1.09dÖÐÎÄ°æ
PuPe 2002°æ ¸Ðлyesky1ÐÖÌṩ
LordPE Deluxe-1.4 by yoda
Import Reconstructor 16f
×¼±¸ºÃ±ÊºÍÖ½£¨²»ÄÜÉÙร¡£©£¬Ò»±²èºÍºÃÊÇÐÄÇé^_^.ÈÃÎÒÃÇ¿ªÊ¼Ò»¸ö¼è¿àºÍÂþ³¤µÄÍѿǹý³Ì°É£¨ÒòΪÎҲˣ¡£©¡£ArmadilloÊǵ±½ñÃÍ¿ÇÖ®Ò»À²¡£ÆäCopyMem-II+Debug-BlockerµÄ¼Ó¿Ç·½Ê½ÊǷdz£Ç¿¾¢µÄ£¬ºÃÔÚÓÐÅ£ÈËÔÚÇ°Ãæ´ø·£¬Ëä¼èÄѵ¹Ò²²»ÃÔʧ·½Ïò¡£
ÔÚÉÏƪÖÐÍê³ÉÁ˲éÕÒOEPºÍ´úÂëÐÞ¸´µÄ¹¤×÷£¬µ«ÊÇÓÃLordPE dumpϵijÌÐò²»ÄÜÔËÐС£ÕâÊÇÒòΪArmadilloµÄ¿ÇÆÆ»µÁËÒýÈë±í£¬ÏÂÃæÎÒÃǽ«ÒªÉè·¨²éÕÒ magic Ìøת£¬Ïû³ýÆÆ»µÒýÈë±íµÄ´úÂë¡£
¿ªÊ¼°É£¡¡«
ÓÃOllydbg¼ÓÔØdumpÏÂÀ´µÄ³ÌÐòdump.exeÓÃF7ÔËÐÐËû£¬ÔÚÏÂÃæµÄ´úÂë´¦¾Í»á³ö´íÁË£¬ÒòΪ³ÌÐòÐèÒªµÄº¯ÊýµØÖ·Ö¸ÏòÁËÒ»¸ö²»ÕýÈ·µÄµØ·½£º
0040128C - FF25 D0804200 JMP NEAR DWORD PTR DS:[4280D0]
DS:[4280D0] µÄÄÚ´æµØÖ·Ö¸ÏòÁË00BF919B,Õâ¸öµØÖ·ÔÚ³ÌÐòµÄ´úÂëÍ⣬ËùÒÔÔËÐе½ÕâÀïºó¾Í»á³öÏÖÒì³£ÎÊÌâ¡£ÔÀ´µÄ³ÌÐòÔÚÕâÀï¿Ï¶¨Ö¸ÏòÒ»¸öÓÐЧµÄµØÖ·²ÅÄÜÔËÐÐÏÂÈ¥¡£ÏÖÔÚÀ´µ½ODµÄת´æ´°¿ÚÖС£ÓÃCtrl+GÃüÁîÊäÈë4280D0µ½´°¿ÚÖÐÀ´µ½£º
004280D0 9B 91 BF 00 A5 5B F3 77 ›‘?¥[ów //¿´ÕâÀï
004280D8 9F 9C BF 00 9C 76 BF 00 Ÿœ?œv?
004280E0 CC 76 BF 00 B2 E3 E2 77 Ìv?²ãâw
004280E8 5F 8E F5 77 66 74 BF 00 _Žõwft?
004280F0 8B 49 E3 77 D7 E7 E1 77 ‹Iãw×çáw
ÕâÊdzÌÐòµÄÒýÈë±íµÄÒ»²¿·Ö£¬À´¿´¿´Ëû¿ªÊ¼ÓÚʲôµØ·½£¬ÏòÉÏÕÒµ½ÕâÀ
004280A0 B7 8B F3 77 C6 20 F3 77 ·‹ów?ów
004280A8 00 20 F3 77 03 2D E1 77 . ów -áw
004280B0 66 63 E1 77 49 25 E1 77 fcáwI%áw
ÒòΪÔÙÏòÉÏûÓÐÁËÕâ¸ö½á¹¹µÄµØ·½£¬ËùÒÔ¿ÉÒÔÈ϶¨ÒýÈë±íµÄ¿ªÊ¼µØÖ·ÊÇ004280A0£¬ÔÙÏòÏ¿´¿´Ê²Ã´µØ·½ÊDZíµÄ½áÊøµØÖ·£º
004284D0 AF 9B BC 70 00 00 00 00 ¯›¼p....
004284D8 6B 65 72 6E 65 6C 33 32 kernel32
004284E0 2E 64 6C 6C 00 00 00 00 .dll....
004284E8 00 00 00 00 00 00 00 00 ........
ºóÃæÔÙҲûÓÐÁË¡£ËùÒÔ¿ÉÒÔÈ϶¨±íµÄ½áÊøµØÖ·ÊÇ004284E4 £¬¿´¿´±íµÄ³¤¶È£½004284E4-004280A0£½444ÓÃÖ½¼ÇÏÂÕâЩÐÅÏ¢¡£ÒÔºóÓÃImportRECÐÞ¸´IATʱÐèÒªÊÖ¹¤ÌîÈëÕâЩÐÅÏ¢¡£
Ricardo NarvajaµÄÔÎÄÓÐÕâÑùµÄÒ»¶Î»°£º
¡¶ÕâÀï˵Ã÷Ò»µã£ºÎÒÃÇÒѾ֪µÀ³ÌÐòµÄ¸¸½ø³ÌºÍËûµÄ×Ó½ø³ÌÊÇÏàͬÎļþ£¬µ«ÒªÓò»Í¬µÄ¾ä±ú×°ÈëÁ½´Î£¬ËùÒÔËûÃDZä³ÉÁ½¸ö²»Í¬µÄ½ø³Ì¡£ÓÉÆäÖÐÒ»¸ö½ø³ÌÕƹÜן¸½ø³ÌµÄ OEP´ÓÕâÀ↑ʼÔËÐС£
ÎÒÃÇÖªµÀµ±Ëü±»×ª´¢Ê±£¬ÁíÒ»½ø³ÌÊÇÕƹÜ×Å×Ó½ø³ÌµÄ OEP£¬µ«ÎÒÒ²Òª¸æËßÄ㣬²¢²»ÊÇËùÓÐ×Ó½ø³Ì¶¼ÒÔÏàͬ¸¸½ø³ÌµÄÈë¿ÚµãÀ´¿ªÊ¼ÔËÐеġ£Ë³±ãÒ»Ì᣺ÎÒÊÇÉè·¨¸æËßÄ㣬Ëü²»ÊÇ´Ó¸¸½ø³ÌÄǸ´ÖÆ IAT µ½ËüµÄ×Ó½ø³Ì£¬È´ÊÇ´Ó×Ó½ø³ÌÄǽâ³ö×Ô¼ºµÄ IAT¡£ÕâÓ¦¸ÃÊÇÒ»´óÂé·³£¬ÒòΪÎÒÃDz»ÄÜÔÚËû´Ó¸¸½ø³ÌÍÑÀëÇ°Óà OllyDbg ½øÈë×Ó½ø³Ì¡£¡·
ÏÖÔÚµÄÎÊÌâÊÇÔõôÓÃOD½øÈë×Ó½ø³ÌÖУ¬ÈÃÎÒ¸ú×ÅRicardo NarvajaÏòÇ°×ß¡£
ÏÖÔÚÓÃOD¼ÓÔØûÓÐÍѿǵijÌÐòarmadillo3.exe°´ÀϹæ¾Ø¼ÇסҪ½« IsDebuggerPresent µÄÖµÉèΪÁ㣬Çå³ýËùÓÐÒÔÇ°µÄ BPX¡¢BP WaitForDebugEvent È»ºóµ¥»÷ÔËÐС£µÈarmadilloµÄ×¢²áÌáʾ¿ò³öÀ´ºó£¬´ò¿ªPUPEÑ¡Ôñ½ø³ÌÖÐ2¸öarmadillo3.exeÖеÄÉÏÃæÒ»¸ö£¨ÒòΪËûÊÇ×Ó½ø³Ì£¬ÊÇÎÒÃÇÐèÒªµÄ£©¡£ÓÒ»÷½øÈëparcheando´°¿ÚÑ¡Ôñ4×Ö½Ú£¬ÔÚµØÖ·ÀïÌî4280D0 £¨ÕâÊǵÚÒ»¸ö²»ÕýÈ·µÄµØÖ·£©BuscarÒ»ÏÂÐÅÏ¢´°¿ÚÖоͳöÏÖÁË4¸ö×Ö½ÚµÄÖµ00 00 00 00 È»ºó²»¶ÏµÄÔÚODÖÐÔËÐС¢ÔÚPUPEÖмì²é×Ö½Ú´°¿ÚÖеÄÖµ£¬Ö±µ½×Ö½Ú´°¿ÚÖеÄÖµ±ä³É 9B 91 BF 00 £¬Õâ¸öÖµ¾ÍÊdzÌÐòдÈëµ½ÄÚ´æµØÖ·004280D0´¦µÄ¡£ÄÇô·´¹ýÀ´ÏëÏ룬Èç¹ûÄÜÔÚдÈëÕâ¸öֵǰ½øÈëµ½×Ó½ø³ÌÖв¢¸ú×ÙʲôµØ·½µÄ´úÂëдÈëÁËÕâ¸öÖµ¾ÍÄܸú×Ùµ½ÄǸömagicµÄÌøת¡£ÄÇô³öÏÖ9B 91 BF 00Õâ¸öֵǰ³öÏÖ¹ýCA 85 02 00 Õâ¸öÖµ¡£ÖØÐÂ×öÉÏÃæµÄÒ»ÇÐÖ±µ½×Ö½Ú´°¿ÚÖгöÏÖCA 85 02 00Õâ¸öֵʱͣÏ¡£ÏÖÔÚÊǽøÈë×Ó½ø³ÌµÄʱºòÁË£º
ÔÚODÖдò¿ªÄ£¿é´°¿ÚÑ¡ÔñÒ»¸öAPIÉú³ÉËÀÑ»·£¬È»ºó½øÈëµ½×Ó½ø³ÌÖС£ÎÒÄ£·ÂRicardo NarvajaÑ¡ÔñÁËKERNEL32.dll ÖеÄGetProcAddressÕâ¸öAPI¡£ÔÚÃû³Æ´°¿ÚÖвéÕÒÕâ¸öº¯ÊýµÄµØÖ·ÊÇ77E12DFB£¨Õâ¸öµØÖ·¿ÉÄÜÓëÄãµÄ²»Í¬£©¡£ÓÖÊÇÓõ½PUPEÕâ¸ö¹¤¾ßµÄʱºòÁË£¬ÔÚ×Ö½ÚÊýÖÐÑ¡Ôñ2¸ö×Ö½Ú¡£µØÖ·ÖÐÌî77E12DFBÔÙ"Buscar"һϣ¬¾Í»áÔÚ×Ö½ÚÐÅÏ¢´°¿ÚÖп´µ½ 55 8B Õâ¸öÖµ£¬ÐÞ¸ÄΪEB FE²¢°´ "Parchear"£¬¿´¿´×Ö½ÚÐÅÏ¢´°¿ÚÖеÄÖµ±ä³ÉÁËEB FE £¬×Ó½ø³Ì¾Í»áÔÚÕâ¸öAPIÖÐÍ£ÏÂÁË¡£»òÕß˵ÊÇÐÝÃßÔÚÕâ¸öAPIÖÐÖ±µ½ÄãÀ´»½ÐÑËû¡£
»áµ½ODÖÐÑ¡ÔñÒ»¶Î´úÂ룬±ÈÈ磺
0042F000 55 PUSH EBP
0042F001 8BEC MOV EBP,ESP
0042F003 83EC 0C SUB ESP,0C
0042F006 8B45 10 MOV EAX,DWORD PTR SS:[EBP+10]
0042F009 50 PUSH EAX
0042F00A E8 18CE0000 CALL armadill.0043BE27
ÓÃÊó±êÔÚ0042F000ÐÐÓÒ»÷Ñ¡Ôñ¡²Ð½¨ÆðÔ´¡³£¨ºÇºÇ£¬³ÌÐò»áµ½ÕâÀïÔËÐÐÎÒÃÇдµÄ´úÂ룩£¬´ò¿ª¸½¼Ó´°¿Ú²é¿´ÄǸöûÓбäÉ«µÄÖ÷³ÌÐòµÄ¾ä±úÊÇ0BAC(Õâ¸öֵÿ´Î¼ÓÔػ᲻ͬ£¬×¢ÒâÁË)Õâ¸ö¾ÍÊÇ×Ó½ø³ÌµÄ¾ä±ú¡£»Øµ½´úÂëÖаÑÉÏÃæµÄ´úÂëÐÞ¸ÄΪ£º
0042F000 68 AC0B0000 PUSH 0BAC //×Ó½ø³Ì¾ä±ú
0042F005 E8 AD16A377 CALL kernel32.DebugActiveProcessStop
0042F00A 90 NOP //ÔÚÕâÀïÏÂÖжÏ
ÔÚ0042F00A ÏÂÖжϣ¬È»ºóÔËÐÐÒ»ÏÂÍ£ÔÚ0042F00A ´¦¡£¿´¿´¼Ä´æÆ÷´°¿ÚµÄEAXÖµ£¬Èç¹ûÕâ¸öÖµ£½01¾Í±íʾ×Ó½ø³ÌºÍ¸¸½ø³Ì·ÖÀëÁË¡£Èç¹û£½00ÄÇô¿ÉÄÜÊÇ×Ó½ø³ÌµÄ¾ä±úÌî´íÁË£¬Äã¿ÉÒÔÔÚÏÂÃæÖØÐÂдÈë´úÂëÔÙ´ÎÔËÐУ¬Ö±µ½EAX£½01ʱ¾Í¿ÉÒԹرÕODÁË£¨É±µô¸¸½ø³Ì£¡£©È»ºó¾Í¿ÉÒÔ½øÈë×Ó½ø³ÌÁË¡£
ÖØÐÂÔËÐÐOllydbg£¨²»Òª¼ÓÔسÌÐò£©¸½¼ÓÉϽø³ÌÖеÄÄǸöΨһµÄarmadillo3.exe £¨¸½¼ÓÉÏÁËÂ𣿳ɹ¦ÁËÂ𣿷´ÕýÎÒÊdzɹ¦ÁË£©F9ÔËÐÐÒ»ÏÂÈ»ºóF12ÔÝÍ£³ÌÐò¾Í»áÀ´µ½ÐÝÃߵĵط½£º
77E12DFB >- EB FE JMP SHORT kernel32.GetProcAddress //¿´ÔÚÑ»·ÄØ
77E12DFD EC IN AL,DX
77E12DFE 51 PUSH ECX
ÔÙ´ÎÔÚPUPEÖлָ´ÔÀ´µÄ´úÂë 55 8B²¢°´ "Parchear" ÔÙ¿´¿´³ÌÐòÖеĴúÂëÓÖ»¹Ô³É£º
77E12DFB > 55 PUSH EBP
77E12DFC 8BEC MOV EBP,ESP
77E12DFE 51 PUSH ECX
Õâ¸ö³ÌÐòÖØб»ÎÒ»½ÐÑÁË¡£
ÏÈÀ´µ½³ö´íµÄµØÖ·¿´¿´£¬ÔÚת´æ´°¿ÚÖÐG 004280D0 £º
004280D0 CA 85 02 00 DE 85 02 00 Ê… .Þ… .
004280D8 EE 85 02 00 00 86 02 00 î… ..?.
004280E0 0C 86 02 00 1E 86 02 00 .?. ?.
004280E8 2E 86 02 00 3A 86 02 00 .?.:?.
¿´¿´ÒýÈë±í»¹Ã»ÓÐдÈëÄØ£¬ËµÃ÷ÎÒÃÇÍ£ÔÚ½âÃÜÒýÈë±íµÄ´úÂëÇ°Ã棬ÉÏÃæ˵¹ýÕâ¸öÒýÈë±íÊÇ×Ó½ø³Ì×Ô¼º½âÃܵģ¬ÄÇôֻҪÕÒµ½½âÃܵĵط½¡£È»ºó°ÑÆÆ»µµÄ´úÂëÐ޸ľͿÉÒԵõ½ÍêÕûµÄÒýÈë±íÁË¡£
ºÃÁË£¬µÚÒ»¸öÄ¿µÄ´ïµ½ÁË£½øÈëµ½×Ó½ø³ÌÖв¢ÇÒÍ£ÔÚ½âÃÜÒýÈë±íµÄÇ°Ãæ¡£³É¹¦ÁËÒ»°ëÁË£¡ÏÂÃæÒª×öµÄ¾ÍÊÇÕÒÄǸömagicÁË¡£
Ctrl+F9ÔÙF7Ò»´Î¾ÍÀ´µ½£º
00BF545E PUSH DWORD PTR SS:[EBP+C]
00BF5461 PUSH ECX
00BF5462 CALL NEAR DWORD PTR DS:[C130C4] ; kernel32.GetProcAddress
00BF5468 JMP SHORT 00BF54BE //·µ»ØµÄµØ·½¡£
ÎÒÃÇÖªµÀ³ÌÐòµÄµÚÒ»¸ö³ö´íµÄµØ·½¾ÍÊÇ£º004280D0µØÖ·Ö¸ÏòµÄ´úÂë 00BF919B ÏÖÔÚÔÚת´æ´°¿ÚÖеÄ004280D0¿ªÊ¼µÄ4¸ö×Ö½ÚÉÏÏÂÄÚ´æдÈëÖжϣ¸ú×ÙÊÇʲôµØ·½Ð´ÈëÁË00BF919BÕâ¸öÖµ£¬ÔËÐб»ODÖжÏÔÚ£º
00C0942F MOV EAX,DWORD PTR SS:[EBP-4A4]
00C09435 MOV ECX,DWORD PTR SS:[EBP-6B8]
00C0943B MOV DWORD PTR DS:[EAX],ECX ; ECX=00BF919B
00C0943D MOV EAX,DWORD PTR SS:[EBP-4A4]
00C09443 ADD EAX,4
00C09446 MOV DWORD PTR SS:[EBP-4A4],EAX
00C0944C JMP 00C092C9
¿ÉÒÔ¿´³ö00BF919BÕâ¸öÖµÊÇEBP-6B8Õâ¸öµØÖ·ÀïµÄ¡£
ÔÚת´æ´°¿ÚÖÐG EBP-6B8 À´µ½ÕâÀ
0012ED60 9B 91 BF 00 B3 73 F3 77 ....³sów
0012ED68 78 01 14 00 00 00 00 00 x .....
ÔÚÉÏÃæµÄ9B 91 BF 00 Õâ4¸ö×Ö½ÚÉÏÏÂÄÚ´æ·ÃÎʶϵãÈ»ºóRunһϾÍÀ´µ½£º
00C093D1 8985 F4FDFFF>MOV DWORD PTR SS:[EBP-20C],EAX
00C093D7 FFB5 40F9FFF>PUSH DWORD PTR SS:[EBP-6C0]
00C093DD FFB5 70FBFFF>PUSH DWORD PTR SS:[EBP-490]
00C093E3 E8 F8C0FEFF CALL 00BF54E0
00C093E8 8985 48F9FFF>MOV DWORD PTR SS:[EBP-6B8],EAX //Í£ÔÚÕâÀï ; ntdll.RtlGetLastWin32Error
00C093EE 83BD 48F9FFF>CMP DWORD PTR SS:[EBP-6B8],0
00C093F5 75 38 JNZ SHORT 00C0942F
¿´¿´Í£Ïµĵط½£¬·¢ÏÖÊÇEAX¸³ÁËÕâ¸öÄÚ´æµØÖ·µÄÖµ¡£¶øÕâ¸öEAXÊÇÉÏÃæµÄCALL 00BF54E0º¯Êý¼ÆËãµÄÖµ£¬µ½Õâ¸öº¯ÊýÖп´¿´£º
00BF54E0 PUSH EBP //ÔÚÕâÀïÏÂÖжÏ
00BF54E1 MOV EBP,ESP
00BF54E3 PUSH EBX
00BF54E4 PUSH ESI
00BF54E5 PUSH EDI
00BF54E6 XOR EDI,EDI
00BF54E8 XOR EBX,EBX
00BF54EA TEST WORD PTR SS:[EBP+E],0FFFF
00BF54F0 JNZ SHORT 00BF54F5 // µÚÒ»¸öÌø
00BF54F2 MOV EBX,DWORD PTR SS:[EBP+C]
00BF54F5 PUSH EDI
00BF54F6 CALL NEAR DWORD PTR DS:[C130A4] ; kernel32.GetModuleHandleA
00BF54FC CMP DWORD PTR SS:[EBP+8],EAX
00BF54FF JNZ SHORT 00BF5508 //µÚ¶þ¸öÌø
00BF5501 MOV ESI,0C153C0
00BF5506 JMP SHORT 00BF5568
00BF5508 CMP DWORD PTR DS:[C15998],EDI
00BF550E MOV ECX,0C15998
00BF5513 JE SHORT 00BF5551 // µÚÈý¸öÌø ¸ÄΪ JMP£¨magicÌøת£©
00BF5515 MOV ESI,DWORD PTR DS:[C1B1B8]
00BF551B MOV EAX,DWORD PTR DS:[C1EECC]
00BF5520 TEST BYTE PTR DS:[ECX+8],1
00BF5524 JE SHORT 00BF5534 //µÚ4¸öÌø
00BF5526 MOV EDX,DWORD PTR DS:[EAX+70]
00BF5529 XOR EDX,DWORD PTR DS:[EAX+60]
00BF552C XOR EDX,DWORD PTR DS:[EAX+3C]
00BF552F TEST DL,80
00BF5532 JNZ SHORT 00BF5547 //µÚ5¸öÌø
00BF5534 MOV EDX,DWORD PTR DS:[EAX+70]
00BF5537 XOR EDX,DWORD PTR DS:[EAX+64]
00BF553A XOR EDX,DWORD PTR DS:[EAX+58]
00BF553D XOR EDX,DWORD PTR DS:[EAX+20]
00BF5540 XOR EDX,DWORD PTR DS:[ESI]
00BF5542 CMP DWORD PTR SS:[EBP+8],EDX
00BF5545 JE SHORT 00BF5565 //µÚ6¸öÌø
00BF5547 ADD ECX,0C
00BF554A ADD ESI,4
00BF554D CMP DWORD PTR DS:[ECX],EDI
00BF554F JNZ SHORT 00BF5520 //µÚ7¸öÌø
00BF5551 PUSH DWORD PTR SS:[EBP+C]
00BF5554 PUSH DWORD PTR SS:[EBP+8]
00BF5557 CALL 00BF5397
00BF555C POP ECX
00BF555D POP ECX
00BF555E POP EDI
00BF555F POP ESI
00BF5560 POP EBX
00BF5561 POP EBP
00BF5562 RETN 8
ÉÏÃæÓÐ7¸öÌøת£¬¸ú×Ù¿´¿´ÊÇÄǸöÌøתÌøµ½ÆÆ»µÒýÈë±íµÄµØ·½¡£¸ú×Ù·¢ÏÖµÚ3¸öÌøתÈç¹û²»Ìø¾Í»áµ½ÆÆ»µÒýÈë±íµÄ´úÂë´¦¡£ÏÖÔÚÖ»Òª°ÑÕâ¸öÌøת¸Ä³ÉJMP¾Í¿ÉÒԱܿªÆÆ»µÒýÈë±íµÄ´úÂë¡£Õâ¸ö¾ÍÊÇmagicÌøתÁË¡£ºÃÏñÔÚArmadillos ÊÇÏàͬµÄ¡£
ºÃÁËÕÒµ½ÁËÕâ¸ö¹Ø¼üµÄmagicÌøת¾ÍÄÜÐÞ¸´È«²¿µÄÒýÈë±íÁË¡£
ÖØÐÂ×öÉÏÃæµÄ¹¤×÷£¬ÓÃmagicµÄµØÖ·×öÐÝÃߵĵØÖ·£¬¸½¼ÓÉϳÌÐòºó¸Ämagic µÄÌøתȻºóÔËÐоͻáÍ£ÔÚ×Ó½ø³ÌµÄOEP´¦£¬ÓÃImport REConstructorÐÞ¸´dumpµÄ³ÌÐò£¬×¢ÒâÒªµã£º
ÔÚImport REConstructorÖÐÌ
OEP£½Èë¿ÚµØÖ·£400000
RVA£½ÒýÈë±íµÄ¿ªÊ¼µØÖ·£¨ÉÏÃæ˵¹ýÁË£©£400000
SIZE£½ÒýÈë±íµÄ½áÊøµØÖ·£¿ªÊ¼µØÖ·
±ÈÈçÎÒµÄÐÅÏ¢£º
OEP£½000251D0
RVA£½000280A0
SIZE£½00000444
×¢Ò⣡עÒ⣡עÒ⣡¨D¨D²»Òª°´IAT Autosearch Ö±½Ó°´Get Import»ñµÃÒýÈë±í£¬Èç¹ûÓдíÎóµÄ¾ÍÖ±½ÓCutËû Fix dump ÐÞ¸´dumpϵijÌÐò£¬ÔËÐÐÒ»ÏÂÊDz»ÊÇ»¹Õý³£ÁË¡£
ÓÉÓÚʱ¼ä¹Øϵ£¬ÎÒдµÃºÜ²Ö´Ù£¬¿ÉÄÜ´æÔÚÐí¶àµÄ´íÎóºÍ±íÊö²»ÕýÈ·µÄµØ·½¡£Çë´óϺÃÇÖ¸ÕýÁË£¡
ËäÊÇÒÀºù«»µÄÆ°£¬ÇÒ»µÄ²»ºÃ¡£µ«Ò²ÊÇÎÒµÄÐĵã¬ÎÒÏëѧϰÆäʵҲÊDz»¶ÏµÄÔÚ»±ðÈËÒÑ»ºÃµÄÆ°£¬Èç¹û»µÄºÃÁ˾ÍÊÇ×Ô¼ºµÄÁË¡£
ÎÄÕÂËä´Ö²Ú£¬×ªÔØÇë±£Ö¤ËûµÄÍêÕûÐÔ¡£
¸Ðл¶þµãÐÖµÜÊÕ¼¯µÄ×ÊÁÏ£¡
fxyang
2003.11.27Íí