• ±ê Ì⣺ÓÃOllydbgÊÖÍÑPECompactË«²ã¼Ó¿ÇµÄDLL £­£­Psinthk.dll
  • ×÷ Õߣºcsjwaman
  • ʱ ¼ä£º2004-11-28,11:30
  • Á´ ½Ó£ºhttp://bbs.pediy.com

ÓÃOllydbgÊÖÍÑPECompactË«²ã¼Ó¿ÇµÄDLL £­£­Psinthk.dll



¡¾×÷ÕßÉùÃ÷¡¿£º±¾ÎÄÍêÈ«²Î¿¼fly´óÏÀµÄÍÑÎÄ¡£ÎÄÖÐÐí¶à×¢Ê;ù³ö×Ôfly´óÏÀµÄÍÑÎÄ¡£²»ÔÙÒ»Ò»×¢³ö¡£ÔÚ´Ëл¹ýfly´óÏÀ£¡

¡¾µ÷ÊÔ»·¾³¡¿£ºWin2003¡¢Ollydbg1.10C¡¢WinHex¡¢PEiD¡¢LordPE¡¢ImportREC

¡¾Íѿǹý³Ì¡¿£º

¸½¼þÖеÄDLLÎļþÊÇһλÐֵܷÅÔÚÂÛ̳Éϵģ¬ÎÒÒ²²»ÖªÏÂÔØÁ´½ÓÁË¡£ËùÒÔÔÙ´ÎÌù³öÀ´¡£

ÓÃPEiD¼ì²éΪPECompact 1.68 - 1.84 - Jeremy Collake¼Ó¿Ç¡£
ºÃ£¬ÓÃODÔØÈ뿪ʼÍÑ¿Ç¡£


Ò»¡¢DUMP


1000B000 > /EB 06           JMP SHORT Psinthk.1000B008/////ÔØÈëÍ£ÔÚ´Ë´¦¡£
1000B002   |68 00600000     PUSH 6000/////Èë¿ÚRVA¡£
1000B007   |C3              RETN
1000B008   \9C              PUSHFD
1000B009    60              PUSHAD
1000B00A    E8 02000000     CALL Psinthk.1000B011
1000B00F    33C0            XOR EAX,EAX
1000B011    8BC4            MOV EAX,ESP
1000B013    83C0 04         ADD EAX,4
1000B016    93              XCHG EAX,EBX
1000B017    8BE3            MOV ESP,EBX
1000B019    8B5B FC         MOV EBX,DWORD PTR DS:[EBX-4]
1000B01C    81EB 3F904000   SUB EBX,40903F
1000B022    87DD            XCHG EBP,EBX



ÒòΪÕâ¸ö¶«¶«ÊÇPECompact 2.0ÒÔÇ°µÄ°æ±¾¼Ó¿Ç£¬ËùÒÔOEPºÜºÃÕÒ£¬¿ÇÈë¿ÚµÄµÚ2ÌõÖ¸ÁîPUSHµÄ¾ÍÊÇOEPµÄRVAµØÖ·¡£
OEP=10000000 + 6000=10006000
Ö±½ÓÔÚ10006000´¦Ï Ӳ¼þÖ´ÐР¶Ïµã£¬»òÕßÏÂÄÚ´æ¶Ïµã£¬F9ÔËÐоÍÖжÏÔÚOEPÁË¡£


10006000   /EB 06           JMP SHORT Psinthk.10006008//////À´µ½´Ë´¦£¡
10006002   |68 4B160000     PUSH 164B/////µÚ¶þ²ãÈë¿ÚRVA¡£
10006007   |C3              RETN
10006008   \9C              PUSHFD
10006009    60              PUSHAD
1000600A    E8 02000000     CALL Psinthk.10006011
1000600F    33C0            XOR EAX,EAX
10006011    8BC4            MOV EAX,ESP
10006013    83C0 04         ADD EAX,4


ÔΣ¡Ò»¿´¾ÍÖªµÀ»¹ÓÐÒ»²ãPECompact£¡²»¹ÜÓм¸²ã£¬»¹ÊÇÀÏ°ì·¨Ö±½Óµ½Èë¿Ú´¦ÏÂÓ²¼þÖ´Ðжϵ㣬ȻºóF9ÔËÐе½ÁË£º

1000164B    55              PUSH EBP/////Õâ²ÅÏóÈë¿ÚÂ
1000164C    8BEC            MOV EBP,ESP
1000164E    53              PUSH EBX
1000164F    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8]
10001652    56              PUSH ESI
10001653    8B75 0C         MOV ESI,DWORD PTR SS:[EBP+C]
10001656    57              PUSH EDI
10001657    8B7D 10         MOV EDI,DWORD PTR SS:[EBP+10]
1000165A    85F6            TEST ESI,ESI
1000165C    75 09           JNZ SHORT Psinthk.10001667
1000165E    833D A0300010 0>CMP DWORD PTR DS:[100030A0],0
10001665    EB 26           JMP SHORT Psinthk.1000168D
10001667    83FE 01         CMP ESI,1



ÓÃLordPEÑ¡ÖÐOllydbgµÄloaddll.exeµÄ½ø³Ì£¬ÔÚÏÂÃæµÄÁбíÀïÑ¡ÔñPsinthk.dll£¬È»ºóÍêÕûÍÑ¿Ç£¬µÃµ½dumped.dll¡£
DumpÍêÖ®ºó£¬²»Òª¹Ø±ÕOllydbg£¬»¹ÒªÎªÏÂÃæµÄ´¦ÀíÖض¨Î»±íÌṩµã×¼±¸¡£


¶þ¡¢ÊäÈë±í


ÍùÈë¿ÚµÄÉÏ·½¿´¿´£º

10001621   /72 12           JB SHORT Psinthk.10001635
10001623   |8B0E            MOV ECX,DWORD PTR DS:[ESI]
10001625   |85C9            TEST ECX,ECX
10001627   |74 07           JE SHORT Psinthk.10001630
10001629   |FFD1            CALL NEAR ECX
1000162B   |A1 B0300010     MOV EAX,DWORD PTR DS:[100030B0]
10001630   |83EE 04         SUB ESI,4
10001633  ^|EB EA           JMP SHORT Psinthk.1000161F
10001635   \50              PUSH EAX
10001636    FF15 38200010   CALL NEAR DWORD PTR DS:[10002038]//////ÕâÀïÓ¦¸ÃÊǵ÷Óú¯ÊýµÄCALL°É¡£
1000163C    8325 B0300010 0>AND DWORD PTR DS:[100030B0],0
10001643    59              POP ECX
10001644    5E              POP ESI
10001645    6A 01           PUSH 1

ÔÚÄÚ´æÇøµ½10002038´¦¿´¿´£º

10002038  FB B8 B8 77 78 3F B9 77  û¸¸wx?¹w

¿´À´¾ÍÊÇIAT±íÁË¡£ÉÏÏ¿´¿´ºÜÃ÷ÏԵĿÉÒÔÕÒµ½IAT¿ªÊ¼ºÍ½áÊøµÄµØÖ·£º

10002000  53 1F E1 77 28 8A E1 77  Sáw(Šáw
10002008  83 1C E1 77 7C 66 E1 77  ?áw|fáw
10002010  31 66 E1 77 80 16 E1 77  1fáw€áw

10002058  ED 4E CE 77 21 EF CD 77  íNÎw!ïÍw
10002060  14 AD CD 77 70 E3 CD 77  ­ÍwpãÍw




¿ªÊ¼µØÖ·£½10002000
½áÊøµØÖ·£½10002068

ÔËÐÐImportREC£¬Ñ¡ÖÐOllydbgµÄloaddll.exeµÄ½ø³Ì£¬È»ºóµã¡°Ñ¡È¡DLL¡±£¬Ñ¡ÔñPsinthk.dll£¬ÌîÈëRVA£½00002000¡¢´óС£½68¡¢OEP=0000164 £¬µã¡°Get Import¡±¡£FixDump£¡£¨ÕâÀïºÃÏó²»±ØÓÃPEditor¾ÀÕýdumped.dllµÄDumpFixerÐÞÕýÇø¿é¡££©


Èý¡¢Öض¨Î»±í ÐÞ¸´


ÏÂÃæÀ´²éÕÒÖض¨Î»ÐÅÏ¢¡£ÓÃflyÌṩµÄ¼ò±ã°ì·¨£¬Ctrl+G£º10006000£¨µÚ¶þ²ãÈë¿Ú´¦£©£¬Ò²¾ÍÊÇÇ°Íù¿ÇµÄÈë¿Úµã¡£
È»ºóCtrl+SÔÚÕû¸ö¶Î¿éËÑË÷ÃüÁîÐòÁУº

add esi,ebx
xor eax,eax

ÕÒµ½ÒÔÏ´úÂ룺


10007652    8B9D E6904000   MOV EBX,DWORD PTR SS:[EBP+4090E6]//[ebp+4090E6]=10000000
10007658    3B9D 5F974000   CMP EBX,DWORD PTR SS:[EBP+40975F]//ÈçÓëÓ³Ïñ»ùÖ·²»·ûÔòÖض¨Î»´¦Àí£¡
1000765E    75 01           JNZ SHORT Psinthk.10007661//¿ÉÒԸıê־λZ=0£¬Ê¹ÕâÀïÌøת
10007660    C3              RETN
10007661    8BB5 63974000   MOV ESI,DWORD PTR SS:[EBP+409763]
10007667    03F3            ADD ESI,EBX/////ÕÒµ½ÕâÀï¡£
10007669    33C0            XOR EAX,EAX
1000766B    66:8B43 3C      MOV AX,WORD PTR DS:[EBX+3C]
1000766F    03C3            ADD EAX,EBX
10007671    8B80 C0000000   MOV EAX,DWORD PTR DS:[EAX+C0]
10007677    85C0            TEST EAX,EAX
10007679    75 08           JNZ SHORT Psinthk.10007683




ÏÖÔÚÎÒÃÇÔÚÆäretnÉÏÃæµÄ10007652´¦Ï Ӳ¼þÖ´ÐР¶Ïµã£¬È»ºóCtrl+F2ÖØÐÂÔØÈëÕâ¸ödll£¬F9ÔËÐУ¬¾ÍÖжÏÔÚ10007652´¦ÁË¡£È»ºóÔÚ1000765Eʱ¸Ä±ê־λZ=0£¬Ê¹ÆäÌøת¡£ÒòΪֻÓÐÈÃËüÖض¨Î»ÁË£¬ÎÒÃDzſÉÒÔ¿´µ½Öض¨Î»ÐÅÏ¢¡£ÌøתºóÀ´µ½£º

10007661    8BB5 63974000   MOV ESI,DWORD PTR SS:[EBP+409763]/////SS:[10007832]=00005000,Öض¨Î»µÄRVA¾ÍÊÇ00005000¡£
10007667    03F3            ADD ESI,EBX
10007669    33C0            XOR EAX,EAX
1000766B    66:8B43 3C      MOV AX,WORD PTR DS:[EBX+3C]
1000766F    03C3            ADD EAX,EBX
10007671    8B80 C0000000   MOV EAX,DWORD PTR DS:[EAX+C0]
10007677    85C0            TEST EAX,EAX
10007679    75 08           JNZ SHORT Psinthk.10007683
1000767B    2B9D 5F974000   SUB EBX,DWORD PTR SS:[EBP+40975F]


¸ú¼¸²½À´µ½£º

100076F2   /75 0C           JNZ SHORT Psinthk.10007700
100076F4   |58              POP EAX
100076F5   |25 FF0F0000     AND EAX,0FFF
100076FA   |03C2            ADD EAX,EDX
100076FC   |0118            ADD DWORD PTR DS:[EAX],EBX
100076FE   |EB 01           JMP SHORT Psinthk.10007701
10007700   \58              POP EAX
10007701    49              DEC ECX
10007702  ^ 75 AC           JNZ SHORT Psinthk.100076B0
10007704  ^ EB 8C           JMP SHORT Psinthk.10007692/////Ñ­»·´¦ÀíÖض¨Î»¡£
10007706    C3              RETN//////ÔÚ´Ë϶ϺóÖ±½ÓF9¡£¶ÏϺóESI£½100050E8


µ½ÄÚ´æÇø¿´¿´£º

100050A0   0B 00 0D 00 0A 00 15 00   ......
100050A8   0C 00 06 00 22 00 12 00  ..."..
100050B0   5C 00 1C 00 06 00 11 00  \....
100050B8   10 00 00 00 00 20 00 00  .... ..
100050C0   1C 00 00 00 6C 30 0C 00  ...l0..
100050C8   08 00 30 00 14 00 0C 00  .0....
100050D0   08 00 30 00 14 00 00 00  .0....
100050D8   00 30 00 00 0C 00 00 00  .0......
100050E0   04 30 04 00 00 00 00 00  0.....
100050E8   00 00 00 00 00 00 00 00  ........

Öض¨Î»±í½áÊø´¦Ó¦¸ÃÊÇ100050E4¡£ËùÒÔÖض¨Î»±í´óС£½100050E4£­¿ªÊ¼µØÖ·10005000£½E4

ÓÃWinHex´ò¿ªdumped_.dll£¬¸´ÖÆ5000£­50E4Ö®¼äµÄ16½øÖÆÊýÖµ£¬Áí´æΪnoname.bin
ÔËÐР¿´Ñ© ÀÏʦдµÄ¸¨ÖúÐÞ¸´PECompact¼Ó¿ÇDLLÖض¨Î»±íµÄ¹¤¾ßPEComAngela.exe£¬´ò¿ªnoname.bin£¬ºÜ¿ìµÄÌáʾpediy.binÎļþ´´½¨³É¹¦£¡

ÓÃWinHex°Ñpediy.binÖеÄ16½øÖÆÊýֵȫ²¿¸´ÖÆ¡¢Ð´Èëµ½dumped_.dllµÄ5000´¦£¬Ìæ»»Ô­ÏȵÄÖض¨Î»Êý¾Ý¡£
ÓÃLordPEÐÞÕýdumped_.dllµÄÖض¨Î»±íRVA=0005000¡¢´óС£½0000E4£¬±£´æÖ®¡£

ÖÁ´ËÍÑ¿ÇÍê³É¡£¿ÉÒÔÓÃODÕý³£¼ÓÔØÁË¡£