首页
社区
课程
招聘
[求助]脱Themida 1.910的问题
发表于: 2010-3-11 14:51 2470

[求助]脱Themida 1.910的问题

2010-3-11 14:51
2470
原程序下载地址:http://www.dataexplore.net/software/dataexplore_setup.exe

查壳:PEID94 Themida/WinLicense V1.8.X-V2.X -> Oreans Technologies   * Sign.By.fly * 20080131 [Overlay] *
         PEID95 Themida 1.8.x.x -> Oreans Technologies [Overlay] *
         脚本侦壳为 1910-1930  Themida Professional 1.910

脱壳过程:

   OD载入:
0088B014 >  B8 00000000     MOV EAX,0
0088B019    60              PUSHAD
0088B01A    0BC0            OR EAX,EAX
0088B01C    74 68           JE SHORT DataExpl.0088B086
0088B01E    E8 00000000     CALL DataExpl.0088B023
0088B023    58              POP EAX
0088B024    05 53000000     ADD EAX,53
0088B029    8038 E9         CMP BYTE PTR DS:[EAX],0E9
0088B02C    75 13           JNZ SHORT DataExpl.0088B041
0088B02E    61              POPAD
0088B02F    EB 45           JMP SHORT DataExpl.0088B076
0088B031    DB2D 37B08800   FLD TBYTE PTR DS:[88B037]
0088B037    FFFF            ???                                      ; 未知命令
0088B039    FFFF            ???                                      ; 未知命令
0088B03B    FFFF            ???                                      ; 未知命令
0088B03D    FFFF            ???                                      ; 未知命令
0088B03F    3D 40E80000     CMP EAX,0E840
0088B044    0000            ADD BYTE PTR DS:[EAX],AL
0088B046    58              POP EAX
0088B047    25 00F0FFFF     AND EAX,FFFFF000
0088B04C    33FF            XOR EDI,EDI

  运行脚本(ThemidaScript.for.V1.9.10+.0.4.By.fxyang.oSc)

005D0D08    68 F8F45C00     PUSH DataExpl.005CF4F8           
005D0D0D    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
005D0D13    50              PUSH EAX
005D0D14    8B4424 10       MOV EAX,DWORD PTR SS:[ESP+10]
005D0D18    896C24 10       MOV DWORD PTR SS:[ESP+10],EBP
005D0D1C    8D6C24 10       LEA EBP,DWORD PTR SS:[ESP+10]
005D0D20    2BE0            SUB ESP,EAX
005D0D22    53              PUSH EBX
005D0D23    56              PUSH ESI
005D0D24    57              PUSH EDI
005D0D25    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
005D0D28    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP
005D0D2B    50              PUSH EAX
005D0D2C    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
005D0D2F    C745 FC FFFFFFF>MOV DWORD PTR SS:[EBP-4],-1
005D0D36    8945 F8         MOV DWORD PTR SS:[EBP-8],EAX
005D0D39    8D45 F0         LEA EAX,DWORD PTR SS:[EBP-10]
005D0D3C    64:A3 00000000  MOV DWORD PTR FS:[0],EAX
005D0D42    C3              RETN
005D0D43    8B4D F0         MOV ECX,DWORD PTR SS:[EBP-10]

查看OD堆栈数值:
0012FF8C   00B1F1DA  DataExpl.00B1F1DA
0012FF90   0066CB20  DataExpl.0066CB20    记录此处值为 2
0012FF94   00000060                                 记录此处值为 1
0012FF98   2AF8609C
0012FF9C   0012FFE0

记录EIP 005D0D08 值为 3
F8运行到 RETN 返回

OD中CTRL+m 代码段 F2  ,F9 继续 停在此处:
005CEDD0    3D 00100000     CMP EAX,1000
005CEDD5    73 0E           JNB SHORT DataExpl.005CEDE5
005CEDD7    F7D8            NEG EAX
005CEDD9    03C4            ADD EAX,ESP
005CEDDB    83C0 04         ADD EAX,4
005CEDDE    8500            TEST DWORD PTR DS:[EAX],EAX
005CEDE0    94              XCHG EAX,ESP
005CEDE1    8B00            MOV EAX,DWORD PTR DS:[EAX]
005CEDE3    50              PUSH EAX
005CEDE4    C3              RETN

查看寄存器  EAX 00000094   记录当前EIP 005CEDD0 为4

执行到返回 

OD中CTRL+m 代码段 F2  ,F9 继续 停在此处:

010DD700    FF33            PUSH DWORD PTR DS:[EBX]                  ; kernel32.GetVersionExA
010DD702  ^ E9 DB31FBFF     JMP 010908E2
010DD707    80FB 02         CMP BL,2
010DD70A  ^ 0F85 5BC3FDFF   JNZ 010B9A6B
010DD710    68 7A3F0000     PUSH 3F7A
010DD715    890C24          MOV DWORD PTR SS:[ESP],ECX
010DD718    B9 EC050000     MOV ECX,5EC
010DD71D    81C1 CE17B863   ADD ECX,63B817CE
010DD723    01F9            ADD ECX,EDI
010DD725    81E9 CE17B863   SUB ECX,63B817CE
010DD72B    0001            ADD BYTE PTR DS:[ECX],AL
010DD72D    E9 2A9B0600     JMP 0114725C

窗口显示 DS:[006474E0]=7C812B7E (kernel32.GetVersionExA)    006474E0 记录为 5

F8  OD中CTRL+m 代码段 F2  ,F9 继续 停在此处:

010D6447    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
010D6449    68 2D2E0000     PUSH 2E2D
010D644E    890C24          MOV DWORD PTR SS:[ESP],ECX
010D6451    FF3424          PUSH DWORD PTR SS:[ESP]
010D6454    59              POP ECX
010D6455    83C4 04         ADD ESP,4
010D6458    8B3C24          MOV EDI,DWORD PTR SS:[ESP]
010D645B    55              PUSH EBP
010D645C    E9 663F0100     JMP 010EA3C7
010D6461    83C4 04         ADD ESP,4
010D6464    53              PUSH EBX
010D6465    BB 8101EF77     MOV EBX,77EF0181
010D646A    01D8            ADD EAX,EBX
010D646C    8B1C24          MOV EBX,DWORD PTR SS:[ESP]

查看寄存器 EAX 0075F368    此处记录为6   

F7 F8  OD中CTRL+m 代码段 F2  ,F9 继续 停在此处:
005CC51B    A3 74F37500     MOV DWORD PTR DS:[75F374],EAX
005CC520    8B56 08         MOV EDX,DWORD PTR DS:[ESI+8]
005CC523    8915 78F37500   MOV DWORD PTR DS:[75F378],EDX
005CC529    8B76 0C         MOV ESI,DWORD PTR DS:[ESI+C]
005CC52C    81E6 FF7F0000   AND ESI,7FFF
005CC532    8935 6CF37500   MOV DWORD PTR DS:[75F36C],ESI
005CC538    83F9 02         CMP ECX,2
005CC53B    74 0C           JE SHORT DataExpl.005CC549
005CC53D    81CE 00800000   OR ESI,8000
005CC543    8935 6CF37500   MOV DWORD PTR DS:[75F36C],ESI
005CC549    C1E0 08         SHL EAX,8
005CC54C    03C2            ADD EAX,EDX
005CC54E    A3 70F37500     MOV DWORD PTR DS:[75F370],EAX
005CC553    33F6            XOR ESI,ESI
005CC555    56              PUSH ESI
005CC556    8B3D 08756400   MOV EDI,DWORD PTR DS:[647508]            ; kernel32.GetModuleHandleA
005CC55C    FFD7            CALL EDI
005CC55E    66:8138 4D5A    CMP WORD PTR DS:[EAX],5A4D
005CC563    75 1F           JNZ SHORT DataExpl.005CC584
005CC565    8B48 3C         MOV ECX,DWORD PTR DS:[EAX+3C]
005CC568    03C8            ADD ECX,EAX
005CC56A    8139 50450000   CMP DWORD PTR DS:[ECX],4550
005CC570    75 12           JNZ SHORT DataExpl.005CC584

标准的VC7格式,向上看。

005CC4E8    C3              RETN
005CC4E9    D228            SHR BYTE PTR DS:[EAX],CL           OEP 
005CC4EB    55              PUSH EBP
005CC4EC    7B E8           JPO SHORT DataExpl.005CC4D6
005CC4EE    AE              SCAS BYTE PTR ES:[EDI]
005CC4EF    B7 AA           MOV BH,0AA
005CC4F1    4E              DEC ESI
005CC4F2    FE              ???                                      ; 未知命令
005CC4F3    DE02            FIADD WORD PTR DS:[EDX]
005CC4F5    A0 F2E544A3     MOV AL,BYTE PTR DS:[A344E5F2]
005CC4FA    8990 5AFFFA27   MOV DWORD PTR DS:[EAX+27FAFF5A],EDX
005CC500    2F              DAS
005CC501    71 42           JNO SHORT DataExpl.005CC545
005CC503    10AA 51A304BE   ADC BYTE PTR DS:[EDX+BE04A351],CH
005CC509    5D              POP EBP
005CC50A    8472 12         TEST BYTE PTR DS:[EDX+12],DH
005CC50D    850F            TEST DWORD PTR DS:[EDI],ECX
005CC50F    5B              POP EBX
005CC510    6E              OUTS DX,BYTE PTR ES:[EDI]                ; I/O 命令
005CC511    A9 79E02B2A     TEST EAX,2A2BE079
005CC516    AB              STOS DWORD PTR ES:[EDI]
005CC517    FA              CLI
005CC518    7B E7           JPO SHORT DataExpl.005CC501
005CC51A    DCA3 74F37500   FSUB QWORD PTR DS:[EBX+75F374]
005CC520    8B56 08         MOV EDX,DWORD PTR DS:[ESI+8]
005CC523    8915 78F37500   MOV DWORD PTR DS:[75F378],EDX
005CC529    8B76 0C         MOV ESI,DWORD PTR DS:[ESI+C]
005CC52C    81E6 FF7F0000   AND ESI,7FFF
005CC532    8935 6CF37500   MOV DWORD PTR DS:[75F36C],ESI

OEP 1CC4E9  汗,被偷这么多代码

看一下标准的VC7的原码:
00463558 > $  6A 60         PUSH 60                                  ;  (Initial CPU selection)   1
0046355A   .  68 C82A4900   PUSH ExcelSca.00492AC8          2
0046355F   .  E8 68380000   CALL ExcelSca.00466DCC         3
00463564   .  BF 94000000   MOV EDI,94
00463569   .  8BC7          MOV EAX,EDI
0046356B   .  E8 60230000   CALL ExcelSca.004658D0          4
00463570   .  8965 E8       MOV DWORD PTR SS:[EBP-18],ESP
00463573   .  8BF4          MOV ESI,ESP
00463575   .  893E          MOV DWORD PTR DS:[ESI],EDI
00463577   .  56            PUSH ESI                                 ; /pVersionInformation
00463578   .  FF15 A4B24800 CALL DWORD PTR DS:[<&KERNEL32.GetVersion>; \GetVersionExA   5
0046357E   .  8B4E 10       MOV ECX,DWORD PTR DS:[ESI+10]
00463581   .  890D ECCC4A00 MOV DWORD PTR DS:[4ACCEC],ECX               6
00463587   .  8B46 04       MOV EAX,DWORD PTR DS:[ESI+4]
0046358A   .  A3 F8CC4A00   MOV DWORD PTR DS:[4ACCF8],EAX
0046358F   .  8B56 08       MOV EDX,DWORD PTR DS:[ESI+8]
00463592   .  8915 FCCC4A00 MOV DWORD PTR DS:[4ACCFC],EDX
00463598   .  8B76 0C       MOV ESI,DWORD PTR DS:[ESI+C]
0046359B   .  81E6 FF7F0000 AND ESI,7FFF
004635A1   .  8935 F0CC4A00 MOV DWORD PTR DS:[4ACCF0],ESI
004635A7   .  83F9 02       CMP ECX,2
004635AA   .  74 0C         JE SHORT ExcelSca.004635B8
004635AC   .  81CE 00800000 OR ESI,8000
004635B2   .  8935 F0CC4A00 MOV DWORD PTR DS:[4ACCF0],ESI
004635B8   >  C1E0 08       SHL EAX,8
004635BB   .  03C2          ADD EAX,EDX
004635BD   .  A3 F4CC4A00   MOV DWORD PTR DS:[4ACCF4],EAX
004635C2   .  33F6          XOR ESI,ESI
004635C4   .  56            PUSH ESI                                 ; /pModule => NULL
004635C5   .  8B3D 98B24800 MOV EDI,DWORD PTR DS:[<&KERNEL32.GetModu>; |kernel32.GetModuleHandleA
004635CB   .  FFD7          CALL EDI                                 ; \GetModuleHandleA
004635CD   .  66:8138 4D5A  CMP WORD PTR DS:[EAX],5A4D
004635D2   .  75 1F         JNZ SHORT ExcelSca.004635F3
004635D4   .  8B48 3C       MOV ECX,DWORD PTR DS:[EAX+3C]
004635D7   .  03C8          ADD ECX,EAX
004635D9   .  8139 50450000 CMP DWORD PTR DS:[ECX],4550
004635DF   .  75 12         JNZ SHORT ExcelSca.004635F3
004635E1   .  0FB741 18     MOVZX EAX,WORD PTR DS:[ECX+18]
004635E5   .  3D 0B010000   CMP EAX,10B
004635EA   .  74 1F         JE SHORT ExcelSca.0046360B
004635EC   .  3D 0B020000   CMP EAX,20B
004635F1   .  74 05         JE SHORT ExcelSca.004635F8
004635F3   >  8975 E4       MOV DWORD PTR SS:[EBP-1C],ESI

修复代码   LORDPE dump  程序。。。。。
 
OEP 1CC4E9 IAT 247000 长度:CE4 修复DUMP的文件。

执行一闪而过。OD载入,下GetFileSize 断点

005F1C77    8BF9            MOV EDI,ECX
005F1C79    50              PUSH EAX
005F1C7A    FF77 04         PUSH DWORD PTR DS:[EDI+4]
005F1C7D    FF15 9C756400   CALL DWORD PTR DS:[64759C]               ; kernel32.GetFileSize
005F1C83    83F8 FF         CMP EAX,-1
005F1C86    8945 F8         MOV DWORD PTR SS:[EBP-8],EAX
005F1C89    75 19           JNZ SHORT DataExpl.005F1CA4
005F1C8B    56              PUSH ESI
005F1C8C    8B35 60736400   MOV ESI,DWORD PTR DS:[647360]            ; ntdll.RtlGetLastWin32Error
005F1C92    FFD6            CALL ESI
005F1C94    85C0            TEST EAX,EAX
005F1C96    74 0B           JE SHORT DataExpl.005F1CA3
005F1C98    FF77 0C         PUSH DWORD PTR DS:[EDI+C]
005F1C9B    FFD6            CALL ESI
005F1C9D    50              PUSH EAX
005F1C9E    E8 10250000     CALL DataExpl.005F41B3
005F1CA3    5E              POP ESI
005F1CA4    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
005F1CA7    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
005F1CAA    5F              POP EDI
005F1CAB    C9              LEAVE
005F1CAC    C3              RETN

返回后向下看:
0045D758   /EB 06           JMP SHORT DataExpl.0045D760
0045D75A   |8D9B 00000000   LEA EBX,DWORD PTR DS:[EBX]
0045D760   \0108            ADD DWORD PTR DS:[EAX],ECX
0045D762    83C0 04         ADD EAX,4
0045D765    3D 447E6A00     CMP EAX,DataExpl.006A7E44
0045D76A  ^ 7C F4           JL SHORT DataExpl.0045D760
0045D76C    3B4C2E FC       CMP ECX,DWORD PTR DS:[ESI+EBP-4]    比较文件长度。
0045D770    74 18           JE SHORT DataExpl.0045D78A          不跳EXIT。
0045D772    E8 30141B00     CALL DataExpl.0060EBA7
0045D777    8B40 04         MOV EAX,DWORD PTR DS:[EAX+4]
0045D77A    8B40 2C         MOV EAX,DWORD PTR DS:[EAX+2C]
0045D77D    6A 00           PUSH 0
0045D77F    6A 00           PUSH 0
0045D781    6A 12           PUSH 12
0045D783    50              PUSH EAX
0045D784    FF15 88796400   CALL DWORD PTR DS:[647988]               ; USER32.PostThreadMessageW
0045D78A    C686 FFFF7F00 4>MOV BYTE PTR DS:[ESI+7FFFFF],4D
0045D791    C686 FEFF7F00 5>MOV BYTE PTR DS:[ESI+7FFFFE],5A

两种方法 第一种:只接改跳走即可。第二种,改文件最后四个字节为AEX的值也可。

保存OK。 

执行 正常进入程序  5秒后 退出。惨

OD载入 
005646DD   .  52            PUSH EDX
005646DE   .  EB 11         JMP SHORT DataExpl.005646F1
005646E0   >  68 90AE6500   PUSH DataExpl.0065AE90
005646E5   .  68 80AE6500   PUSH DataExpl.0065AE80
005646EA   .  8D85 70FDFFFF LEA EAX,DWORD PTR SS:[EBP-290]
005646F0   .  50            PUSH EAX
005646F1   >  E8 619A0600   CALL DataExpl.005CE157
005646F6   .  83C4 0C       ADD ESP,0C
005646F9   .  CC            INT3                   停在这,程序无法调试        
005646FA   .  B9 02000000   MOV ECX,2
005646FF   .  894D D4       MOV DWORD PTR SS:[EBP-2C],ECX
00564702   .  B8 20000000   MOV EAX,20
00564707   .  8945 D8       MOV DWORD PTR SS:[EBP-28],EAX
0056470A   .  8945 DC       MOV DWORD PTR SS:[EBP-24],EAX
0056470D   .  894D E0       MOV DWORD PTR SS:[EBP-20],ECX
00564710   .  8D4D D4       LEA ECX,DWORD PTR SS:[EBP-2C]
00564713   .  51            PUSH ECX
00564714   .  57            PUSH EDI
00564715   .  8BCE          MOV ECX,ESI
00564717   .  E8 24F9FFFF   CALL DataExpl.00564040

难道壳脱的有问题,请高手指点。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
网比较卡,发重了,请版主删除一个。
2010-3-11 14:53
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
不是你脱的问题
2010-3-17 05:11
0
游客
登录 | 注册 方可回帖
返回
//