文章标题:PicturesToExe3.51的脱壳
加壳软件:Asprotect1.2以上(本人估计,不一定准确)
文章重点:输入表的修复(关于如何寻找入口点等可参考其他脱壳文章)
使用软件:Trw2000、Import REConstructor v1.2 beta2、procdump162、Uedit32
参考文章:BestFont《用Import REConstructor v1.2 beta2 修复输入表》
PicturesToExe3.51用Asprotect加的壳,估计是1.2以上版本,用caspr1.012无法脱壳,只能手动。
先用冲击波2000找入口点,竟然没有找到,看样子得全手动了。祭起Trw2000,经过若干小时的艰苦奋战(有点夸张),终于找到入口点为51133C,停下后用procdump162选“使用实际输入表”然后dump(full),再修改入口为51133C,到此第一场战役胜利结束。
接下来就该修复输入表了,按照《用Import REConstructor v1.2 beta2 修复输入表》的方法修复,最后发现还有几个无法解决,分别如下:
偏移 值
1161F8 E3C86C
116320 E3C874
116364 E3C834
1163B4 E3C864
1163BC E3C87C
那么这些值所指向的地址到底有什么呢?我们看一下:
0167:00E3C834 MOV EAX,[00E435D8]
0167:00E3C839 RET
(调用:00407824 FF2564635100 jmp dword
ptr [00516364])
0167:00E3C864 MOV EAX,[00E435E0]
0167:00E3C869 RET
(调用:00407784 FF25B4635100 jmp dword
ptr [005163B4])
0167:00E3C86C MOV EAX,[00E43678]
0167:00E3C871 RET
(调用:004012C0 FF25F8615100 jmp dword
ptr [005161F8])
0167:00E3C874 PUSH EBP \
0167:00E3C875 MOV EBP,ESP
|实际什么都没干,
0167:00E3C877 POP EBP
|相当于 ret 04
0167:00E3C878 RET 04 /
(调用:004078AC FF2520635100 jmp dword
ptr [00516320])
0167:00E3C87C PUSH EBP \
0167:00E3C87D MOV EBP,ESP
|同上
0167:00E3C87F POP EBP
|
0167:00E3C880 RET 04 /
(调用:00407774 FF25BC635100 jmp dword
ptr [005163BC])
先解决最后两个,我们找到:0040402A C20400 ret 0004,所以只要将上面两个调用处改为:
0167:004078AC E979C7FFFF jmp 0040402A
0167:00407774 E9B1C8FFFF jmp 0040402A
就行了。
再来看前面三个,发现:
[00E435D8]=C000A004
[00E435E0]=FFF9CAB3
[00E43678]=816CD848
而且都是固定不变的,所以可以这样改:
00407824 B804A000C0 mov eax,
C000A004
00407829 C3
ret
00407784 B8B3CAF9FF mov eax,
FFF9CAB3
00407789 C3
ret
004012C0 B848D86C81 mov eax,
816CD848
004012C5 C3
ret
现在输入表里那些无用的垃圾就都没用了,你可以随便选一个函数填上去。然后将脱下来的原始文件先修改一下,再修复输入表,都做好以后就可以运行了。
- 标 题:PicturesToExe3.51的脱壳 (2千字)
- 作 者:hying
- 时 间:2001-4-22 19:18:35
- 链 接:http://bbs.pediy.com