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 ÏÂÒ»Ò³ |