首页
社区
课程
招聘
[求助]Aspr 2.1 SKE,答疑解惑。。。。高手进来看下
发表于: 2006-4-22 21:32 4221

[求助]Aspr 2.1 SKE,答疑解惑。。。。高手进来看下

2006-4-22 21:32
4221
学着,各位高手的教程,脱一DELPHI的程序时遇到些困难,希望路过的高手帮帮忙。谢谢!!!

:问题一,[如何确定 windycandy 所说的 重要数据① 呢?]

00975BD0    55              PUSH EBP
00975BD1    8BEC            MOV EBP,ESP
00975BD3    83C4 EC         ADD ESP,-14
00975BD6    33C0            XOR EAX,EAX
00975BD8    8945 EC         MOV DWORD PTR SS:[EBP-14],EAX
00975BDB    B8 F0439700     MOV EAX,GGJ.009743F0
00975BE0    E8 A316A9FF     CALL GGJ.00407288-----是这个吗?重要数据①
00975BE5    33C0            XOR EAX,EAX
00975BE7    55              PUSH EBP
00975BE8    68 1D5E9700     PUSH GGJ.00975E1D
00975BED    64:FF30         PUSH DWORD PTR FS:[EAX]
00975BF0    64:8920         MOV DWORD PTR FS:[EAX],ESP
00975BF3    E9 01000000     JMP GGJ.00975BF9
00975BF8    19A1 641B9800   SBB DWORD PTR DS:[ECX+981B64],ESP
00975BFE    8B00            MOV EAX,DWORD PTR DS:[EAX]
00975C00    E8 7B35B2FF     CALL GGJ.00499180

问题二,如何确定IAT的开始位置:

...........省略部分代码

009941EC  00597820  test.00597820 [test为目标文件名称 ]
009941F0  00594C30  test.00594C30
009941F4  00000000
009941F8  00000000
009941FC  00000000
00994200  00000000
00994204  00000000      
00994208  77F87BF9  ntdll.RtlDeleteCriticalSecti[这里是否是开始位置?]
0099420C  77F89134  ntdll.RtlLeaveCriticalSection
00994210  77F89103  ntdll.RtlEnterCriticalSection
...........省略部分代码

问题三,如何确定IAT的确定IAT的结束位置:

...........省略部分代码

00994C30  77E69BBA  kernel32.MulDiv [这里是否是结束位置?]
00994C34  00000000
...........省略部分代码

00994E00  005A3476  test.005A3476
00994E04  00000000

...........省略部分代码

问题四:关于ESI值的变化

如何确定要更改的,那三个数字.
(就是其中两个跳转有效,如何辩别哪个数字对应的是IAT加密。)
这个问题困扰偶好久了,不知是什么原理。。。

015574FE    3BF0            CMP ESI,EAX
01557500    75 5E           JNZ SHORT 01557560


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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
你问的问题和壳没多大关系
自己用aspr加个delphi的看看就知道了
2006-4-22 21:42
0
雪    币: 219
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
搬个凳子,坐前排。
好好学习,天天向上。
2006-4-22 21:45
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
排排坐,吃果果
2006-4-22 21:51
0
雪    币: 219
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
搬个凳子,坐前排。
好好学习,天天向上。
2006-4-22 21:55
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
排排坐,吃果果
2006-4-22 21:56
0
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
2006-4-22 23:26
0
雪    币: 236
活跃值: (100)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
8
00975BE0    E8 A316A9FF     CALL GGJ.00407288-----是这个吗?重要数据①
这个不是 重要数据①
重要数据①是指call到壳里去的
一般都是这个样子call 00D00000,这里是00D00000(其中前面三个00D可以是别的,后面的5个一般都是0),如何找这个,可以参考loveboom,syscom,林海雪源等大大的文章.

问题三,如何确定IAT的确定IAT的结束位置:

把修改代码写进去:
01640000   - 0F84 F37548FF           je 00AC75F9------这个是00AC75F6 处jmp的地址
01640006     81FE 89000000           cmp esi,89
0164000C   - 0F84 427648FF           je 00AC7654
01640012     BE 89000000             mov esi,89
01640017   - E9 387648FF             jmp 00AC7654

写好代码后,取消00AC75F2及00AC75F4 两处的断点,F9运行中断在00AC7989,中断后取消断点
看看数据窗口,是不是得到所有的IAT了?
这个时候才好确定,因为这时所有的IAT都出来了.

问题四:关于ESI值的变化

如何确定要更改的,那三个数字.
(就是其中两个跳转有效,如何辩别哪个数字对应的是IAT加密。)
这个问题困扰偶好久了,不知是什么原理。。。

脱壳到达这里后:

00AC75F2     3BF0                    cmp esi,eax
00AC75F4     75 5E                   jnz short 00AC7654

每人的机子不一样数值也不一样,我这里的esi有三个值96,77,89(这几个数值好象每天都不一样),其中esi的值为77,89时00AC75F4处的
跳转成立,但两个数中只有当esi=77时才会对IAT进行加密,这时对照OD左下角数据框,看IAT是否出现,要一个一个数值看,你可以在上面的两个地址00AC75F2和00AC75F4 都下断,比较容易看出esi等于哪个数值时,IAT被加密了.如果你还不明白,可以参考我的动画<配套脱壳动画在bbs.chinapyg.com视频区>
因此只要将77改为89就可以避开IAT加密了
2006-4-23 06:56
0
雪    币: 219
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
真是太感谢,windycandy,兄的详细解说了。



照你的方法已经脱壳成功,脱壳后文件为64K,你的是202K?,呵呵,差那么多。

不过还有一点不明白,希望能再讲一下。

在你的修复代码里有一行。

0164001D 81FA D04F4000 cmp edx,404FD0 -确保所有的call0D00000被修改过来

这句话,如何理解。 404FD0 这个值是如何得到的?
2006-4-23 08:57
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
排排坐,吃果果
看雪学院里朋友多.
2006-4-30 16:27
0
游客
登录 | 注册 方可回帖
返回
//