首页
社区
课程
招聘
[求助]脱PeCompact 2.98.4(应该是这个)受挫
发表于: 2011-4-15 15:56 6760

[求助]脱PeCompact 2.98.4(应该是这个)受挫

2011-4-15 15:56
6760
看了网上一篇很详细的说明,脱PeCompact2.98.4b。
工具:ollydbg
先断VirtualAlloc;F9,Shift+F9,F9
来到:
7C809AF1 >  8BFF            MOV EDI,EDI              'F2,去掉断点
7C809AF3    55              PUSH EBP
7C809AF4    8BEC            MOV EBP,ESP
7C809AF6    FF75 14         PUSH DWORD PTR SS:[EBP+14]
7C809AF9    FF75 10         PUSH DWORD PTR SS:[EBP+10]
7C809AFC    FF75 0C         PUSH DWORD PTR SS:[EBP+C]
7C809AFF    FF75 08         PUSH DWORD PTR SS:[EBP+8]
7C809B02    6A FF           PUSH -1
7C809B04    E8 09000000     CALL kernel32.VirtualAllocEx
7C809B09    5D              POP EBP
7C809B0A    C2 1000         RETN 10                   'F2,加断点

F9,F8
来到:
009B2C5D    5A              POP EDX                                  ; dbcore4o.00870000
009B2C5E    8BF8            MOV EDI,EAX
009B2C60    50              PUSH EAX
009B2C61    52              PUSH EDX
009B2C62    8B33            MOV ESI,DWORD PTR DS:[EBX]
009B2C64    8B43 20         MOV EAX,DWORD PTR DS:[EBX+20]
009B2C67    03C2            ADD EAX,EDX
009B2C69    8B08            MOV ECX,DWORD PTR DS:[EAX]
009B2C6B    894B 20         MOV DWORD PTR DS:[EBX+20],ECX
009B2C6E    8B43 1C         MOV EAX,DWORD PTR DS:[EBX+1C]
009B2C71    03C2            ADD EAX,EDX
009B2C73    8B08            MOV ECX,DWORD PTR DS:[EAX]
009B2C75    894B 1C         MOV DWORD PTR DS:[EBX+1C],ECX
009B2C78    03F2            ADD ESI,EDX

往下拉,拉到这里:
009B2CC6    FFE0            JMP EAX                            'F2,加断点
009B2CC8    0000            ADD BYTE PTR DS:[EAX],AL
009B2CCA    0000            ADD BYTE PTR DS:[EAX],AL
009B2CCC    0000            ADD BYTE PTR DS:[EAX],AL
009B2CCE    0000            ADD BYTE PTR DS:[EAX],AL
009B2CD0    0000            ADD BYTE PTR DS:[EAX],AL
009B2CD2    0000            ADD BYTE PTR DS:[EAX],AL
009B2CD4    0000            ADD BYTE PTR DS:[EAX],AL
009B2CD6    0000            ADD BYTE PTR DS:[EAX],AL
009B2CD8    0000            ADD BYTE PTR DS:[EAX],AL

F9,F7 4下,来到:

009D0F24    55              PUSH EBP               '教程中说是这个位置,复制地址009D0F24
009D0F25    8BEC            MOV EBP,ESP
009D0F27    83C4 E8         ADD ESP,-18
009D0F2A    53              PUSH EBX
009D0F2B    57              PUSH EDI
009D0F2C    56              PUSH ESI
009D0F2D    E8 00000000     CALL 009D0F32
009D0F32    5B              POP EBX
009D0F33    81EB 90170010   SUB EBX,10001790
009D0F39    8B75 08         MOV ESI,DWORD PTR SS:[EBP+8]
009D0F3C    33C0            XOR EAX,EAX
009D0F3E    33C9            XOR ECX,ECX
009D0F40    034E 3C         ADD ECX,DWORD PTR DS:[ESI+3C]
009D0F43    74 0A           JE SHORT 009D0F4F
009D0F45    8B56 08         MOV EDX,DWORD PTR DS:[ESI+8]
009D0F48    8BFE            MOV EDI,ESI
009D0F4A    83C6 50         ADD ESI,50
009D0F4D    EB 07           JMP SHORT 009D0F56
009D0F4F    5E              POP ESI
009D0F50    5F              POP EDI
009D0F51    5B              POP EBX

复制地址009D0F24到IMP工具的OEP D0F24
点 IAT AutoSearch 按钮,提示找不到任何信息,那应该是OEP不对,于是就接着F7,F9的按下来,找到了这个:
009832E0      55            DB 55                                    ;  CHAR 'U'
貌似找到了。

但是还是木有用。。。。。。
我试过找一个未加壳的dll,用PE加壳后,按上面的方法,可以成功找到OEP并完成后面的脱壳操作。
但是好像这个方法对我要脱的这个文件不管用。
高手们,能帮忙解释一下吗?
新手,求技术增长!
附件为dll

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 136
活跃值: (105)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
09832E0   -400000=5832e0
2011-4-15 16:04
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
木用。GET imports 是空的。。。。我偶尔还找了一个正确的地址,get到了imports但是,plugin tracers 无用。估计还是没有找到OEP。估计这个dll被手工改过吧。严重受挫。
2011-4-15 16:17
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
脱壳的时候,StartAddr填:870000,EntryPoint Modify填 1132E0。
2011-4-15 16:27
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
找到的地址是
003F0F24
IMP 中得到imports
? FThunk:00114040 NbFunc:2 (decimal:2) valid:NO
         rva:00114040 ptr:00942500
         rva:00114040 ptr:009426AC

plugin tracers : pecompact 2.7.x 无反应。。。。。。
郁闷中。
2011-4-15 16:29
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
44这个吧。。。
上传的附件:
2011-4-15 16:50
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你直接用工具破的吗?不行。无用。
2011-4-15 16:51
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我不是要你脱掉,我是想知道,我的方法有什么地方有问题。当然,前提是,你必须可以脱掉!
2011-4-15 16:55
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
首先这个壳不需要太麻烦的步骤,入口造了一个SEH。

009B1F3E >  B8 042C9B00     mov     eax, 009B2C04
009B1F43    50              push    eax
009B1F44    64:FF35 0000000>push    dword ptr fs:[0]
009B1F4B    64:8925 0000000>mov     dword ptr fs:[0], esp
009B1F52    33C0            xor     eax, eax
009B1F54    8908            mov     dword ptr [eax], ecx

在OD里Ctrl - G到009B2C04,然后往下找到JMP EAX,按F4。JMP之后就是OEP了。

009B2CC0    5A              pop     edx
009B2CC1    5E              pop     esi
009B2CC2    5F              pop     edi
009B2CC3    59              pop     ecx
009B2CC4    5B              pop     ebx
009B2CC5    5D              pop     ebp
009B2CC6    FFE0            jmp     eax

剩下就是脱壳了。样本的ImageBase是00400000,在加载的过程中,由于LoadDll.exe占用的是这块内存,因此进行了重定位加载。

真实的基址变为了870000。根据地址相减就可以得出这个数了。
所以,脱壳的时候,ImageBase要写870000,EntryPoint就要写相对的值。在OD中OEP是9832E0,减去基址870000,所以EntryPoint就是9832E0-870000=1132E0。

大概就是这么个意思。
2011-4-15 17:36
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
按你的说明我操作了一下,怎么PE检查出来的是这个:

什么都没找到  [Overlay] *
2011-4-15 21:38
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=besoohi;948352]按你的说明我操作了一下,怎么PE检查出来的是这个:

什么都没找到  [Overlay] *[/QUOTE]

我这显示的是Borland Delphi DLL
2011-4-15 21:55
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
还在吗?
我从这里开始脱
009B2CC8   /E0 32           LOOPDNE SHORT dbcore4o.009B2CFC
009B2CCA   |98              CWDE
009B2CCB   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CCD   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CCF   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CD1   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CD3   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CD5   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CD7   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CD9   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CDB   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CDD   |0000            ADD BYTE PTR DS:[EAX],AL
009B2CDF   |0000            ADD BYTE PTR DS:[EAX],AL

用ollydump脱壳
起始地址:870000
OEP 也是按你说的1132E0,点击 脱壳,导出来的DLL 用pE查的时候,还是得不到你查到的结果。
不过 这个dll确实是delphi的。
能告诉我错在哪里了?是ollydbg版本问题吗?
2011-4-16 22:51
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
LZ 还在吗? OEP是00931000
2011-4-16 23:55
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
不小心弄错了 容我再看看
2011-4-17 00:01
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
还在。OEP dangliang已经说了。
2011-4-17 00:28
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
壳脱掉了。dll里函数全部乱掉了。。。新手,求修复方法。只为学习。
看过一些文章,但是不是很懂。手脱PECOMPACT 本以为很复杂。看到 dangliang如此轻松脱掉,看来基础要打牢。
脱掉,该如何修复呢?
2011-4-17 10:13
0
游客
登录 | 注册 方可回帖
返回
//