¡¡
¡¡
°²È«ÖйúÊ×Ò³ > ÎÄÕÂÖÐÐÄ > ÍѿǼ¼Êõ
¡¡

Armadillo v3.x for copymem-II ÍÑ¿ÇÍêȫƪ¨D¨DÉÏÆª(²éÕÒOEPºÍ´úÂëÐÞ¸´)

¸üÐÂʱ¼ä:2008-5-12 0:28:55
ÔðÈα༭:³ØÌì
ÈÈ µã£º
Armadillo v3.x for copymem-II ÍÑ¿ÇÍêȫƪ¨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   

1 2 ÏÂÒ»Ò³

¡¡
Ïà¹ØÎÄÕÂ
48СʱÈÈÃÅÎÄÕÂ
¡¡
48СʱÈÈÃÅÈí¼þ
48СʱÈÈÃŶ¯»­
¡¡