能力值:
( LV9,RANK:290 )
|
-
-
2 楼
这是一个动过手脚的aspack的壳,首先在OD中,把调试选项中的事件项,设置为"标记首先暂停在系统断点",之后就可以用OD正常载入了.
载入后,Alt+M,在401000段上设置内存写入断点,F9运行,即会中断在aspack的解码段中,之后的方法与脱普通的aspack就没区别了.
oep:401000
写的有些乱,希望对你有所帮助
|
能力值:
( LV9,RANK:3410 )
|
-
-
3 楼
|
能力值:
( LV13,RANK:460 )
|
-
-
4 楼
再请教两个问题:
一:壳脱下来了!!可是无法运行,现在是怎样修复输入表???
(我用的工具是 LoadPE + ImportREC )一运行程序就自动退出
我跟了一下原程序,发现有些(很多)函数ImportREC没有发现!!(如USER32)不知道下一步再怎么进行?
二:“这是一个动过手脚的aspack的壳”请问怎么个动手脚法??(请教原理)
谢谢!!谢谢!!!鞠躬!鞠躬!!!!
|
能力值:
( LV13,RANK:460 )
|
-
-
5 楼
嘻嘻!!真是巧!!正在编辑回复FLY大哥先发了!!!
主要是第一个问题了!!怎么办??
我的脱壳水平只是入门级的!!有很多东东只是看教程做,
根本不明白是怎么回事!!唉PE这东西,真难懂,大家可多教教我原理方面的东
东。谢谢各位的热心!! :);)
|
能力值:
( LV9,RANK:290 )
|
-
-
6 楼
还是Fly牛啊,我还以为外面的是手动修改成的呢,原来是LC Crypto,当回去研究一下:D
1关于对Aspack的输入表的修复,个人认为用<<加密与解密>>第二版中的方法较好,就是在aspack解码完毕后,又未对输入破坏之前脱壳最好了,这样只要修改一个入口点和输入表入口地址就好了.
2另外,以可以在跟到程序入口点外再脱,最后用ImportREC修复就行了
|
能力值:
( LV9,RANK:290 )
|
-
-
7 楼
[QUOTE]最初由 fly 发布
设置OD的暂停选项,不会直接运行
Fly兄说的暂停选项是哪个呀?我只能设置暂停在系统断点才管用,不然它总是直接就运行了
|
能力值:
( LV9,RANK:3410 )
|
-
-
8 楼
用修改版的配置文件就行
首先暂停在 主要模块的入口点
|
能力值:
( LV9,RANK:3410 )
|
-
-
9 楼
最初由 FishSeeWater 发布 嘻嘻!!真是巧!!正在编辑回复FLY大哥先发了!!!
主要是第一个问题了!!怎么办??
我的脱壳水平只是入门级的!!有很多东东只是看教程做,
根本不明白是怎么回事!!唉PE这东西,真难懂,大家可多教教我原理方面的东
东。谢谢各位的热心!! :);) 帖子里面已经告诉你IAT的参数了
学习关键是自己的努力
多看看《加密与解密》、《看雪论坛精华》
这个程序脱壳很简单,你脱几个压缩壳就明白了
|
能力值:
( LV13,RANK:460 )
|
-
-
10 楼
TO clide2000大哥 AND fly大哥,我跟到401000了,并且也DUMP了。
如果直接在 ImportREC 的 OEP 输入 1000 点 AUTOSEARCH 得不到正确的 IAT 与 SIZE。
现在是不明白IAT与SIZE是怎么得到的?
(是不是我知识面有问题?我一贯是用 ImportREC 输入 OEP 后直接获取并修复)
另:FLY大哥这三个参数输入到 ImportREC 后点 GET Imports 后还是有那么多NO。
不过FIX后能用:)
平时我一般没时间搞这个东西,这个软件在网上找不到破解版,所以只能自己动手了。
再次感谢两位大哥的热心帮助!!!
|
能力值:
( LV9,RANK:290 )
|
-
-
11 楼
说明:原来我是用OD1.9调试的,后来改用OK1.10后,就可以正常的载入程序并中断在入口处了(不用做什么4特别的设置了)
说一下对aspack壳的输入的简单处理,主要是如何确定正确的脱壳时机,即在壳解码后还没来的极破坏输入表就脱壳,从而可以得到一个正常的输入表(注:此方法源于《加密与解密》第二版)
1在401000设置内存写入断点后,F9运行程序,会中断在下面这里
2移除内存断点
0061D115 C607 C3 mov byte ptr ds:[edi], 0C3
0061D118 FFD7 call edi
0061D11A 8F07 pop dword ptr ds:[edi]
0061D11C 50 push eax
0061D11D 51 push ecx
0061D11E 56 push esi
0061D11F 53 push ebx
0061D120 8BC8 mov ecx, eax
0061D122 83E9 06 sub ecx, 6
0061D125 8BB5 52010000 mov esi, dword ptr ss:[ebp+152]
0061D12B 33DB xor ebx, ebx
0061D12D 0BC9 or ecx, ecx
0061D12F 74 2E je short ZimoIII.0061D15F
0061D131 78 2C js short ZimoIII.0061D15F
0061D133 AC lods byte ptr ds:[esi]
0061D134 3C E8 cmp al, 0E8
0061D136 74 0A je short ZimoIII.0061D142
0061D138 EB 00 jmp short ZimoIII.0061D13A
0061D13A 3C E9 cmp al, 0E9
0061D13C 74 04 je short ZimoIII.0061D142
0061D13E 43 inc ebx
0061D13F 49 dec ecx
0061D140 ^ EB EB jmp short ZimoIII.0061D12D
0061D142 8B06 mov eax, dword ptr ds:[esi]
0061D144 EB 00 jmp short ZimoIII.0061D146
0061D146 803E 31 cmp byte ptr ds:[esi], 31
0061D149 ^ 75 F3 jnz short ZimoIII.0061D13E
0061D14B 24 00 and al, 0
0061D14D C1C0 18 rol eax, 18
0061D150 2BC3 sub eax, ebx
0061D152 8906 mov dword ptr ds:[esi], eax
0061D154 83C3 05 add ebx, 5
0061D157 83C6 04 add esi, 4
0061D15A 83E9 05 sub ecx, 5
0061D15D ^ EB CE jmp short ZimoIII.0061D12D
0061D15F 5B pop ebx
0061D160 5E pop esi
0061D161 59 pop ecx
0061D162 58 pop eax
0061D163 EB 08 jmp short ZimoIII.0061D16D
0061D165 0000 add byte ptr ds:[eax], al
0061D167 0102 add dword ptr ds:[edx], eax
0061D169 0000 add byte ptr ds:[eax], al
0061D16B FE01 inc byte ptr ds:[ecx]
0061D16D 8BC8 mov ecx, eax
0061D16F 8B3E mov edi, dword ptr ds:[esi]
0061D171 03BD 22040000 add edi, dword ptr ss:[ebp+422] ;edi指向区块数据大小(VOffset)
0061D177 8BB5 52010000 mov esi, dword ptr ss:[ebp+152] ;esi指向已还原的数据
0061D17D C1F9 02 sar ecx, 2 ;ecx是区块数据大小(VSize)
0061D180 F3:A5 rep movs dword ptr es:[edi], dword ptr d>
0061D182 8BC8 mov ecx, eax
0061D184 83E1 03 and ecx, 3
0061D187 F3:A4 rep movs byte ptr es:[edi], byte ptr ds:>
0061D189 5E pop esi
0061D18A 68 00800000 push 8000
0061D18F 6A 00 push 0
0061D191 FFB5 52010000 push dword ptr ss:[ebp+152]
0061D197 FF95 51050000 call dword ptr ss:[ebp+551]
0061D19D 83C6 08 add esi, 8
0061D1A0 833E 00 cmp dword ptr ds:[esi], 0
0061D1A3 ^ 0F85 1EFFFFFF jnz ZimoIII.0061D0C7 ;注意这里,可在此设断,dump出文件
说明:上面的这段代码作用是aspack外壳将已还原的区块数据放回将要执行的区块空间里.当上面的jnz不在跳转时,表示已经所有加壳区块已经还原完毕,这个软件这时会跳转三次(不同的软件的区块数大都不会一样,所以这里的跳转次数会根据软件的实际区块数而有所不同)。当所有区块都还原后,此时的输入表还是完整的,所以只要在此时dump出文件,就不用再修复输入表了。
不过应该注意的是,虽然不需要用ImportREC修复输入表了,但要找到输入表的地址,并用LoadPE之类的工具手动修改正确才可以(这个在这就不多说了)。
注:此方法试用于所有的aspack加壳的程序
|
能力值:
( LV13,RANK:460 )
|
-
-
12 楼
To clide2000 大哥:
您的留言大部分能看明白,
这个地方可是真不懂!去书店请回《加密与解密》第二版,照猫画虎,是找到了KERNEL32.DLL 可是找不到它的地址啊!!
(我的步骤是在0061D1A3 ^ 0F85 1EFFFFFF jnz ZimoIII.0061D0C7 处下断,不跳时用不着LoadPE DUMP Full然后用HEX WorkSHOP 打开查找KERNEL32.DLL得到了一个地址 向上看全00地址是 11223344 ,然后查找44332211,找不到啊?:( )
假如(地址没找到只能假如了:))找到了地址,是不是直接将这个地址用PEditor 修改 ImageTable 就可以了????
(2)假如我是在 OEP 处 DUMP 用 ImporREC 修复输入表,输入 1000 点 AUTOSEARCH 然后点Get Imports无法得到正确的函数。就必须手动输入 IAT 与SIZE 可这 IAT 与 SIZE 怎样得到?是从下面的三个地址计算的吗??还是???
0061D171 03BD 22040000 add edi, dword ptr ss:[ebp+422] ;edi指向区块数据大小(VOffset)
0061D177 8BB5 52010000 mov esi, dword ptr ss:[ebp+152] ;esi指向已还原的数据
0061D17D C1F9 02 sar ecx, 2 ;ecx是区块数据大小(VSize)
本来这个软件到我第三次复时就已经可以用了!不过想借这机会一并学习一门新知识.
再次谢谢您的热心帮助!!
|