首页
社区
课程
招聘
Asprotect 1.31 crackme菜鸟手记
发表于: 2004-8-16 22:53 8872

Asprotect 1.31 crackme菜鸟手记

Sen 活跃值
1
2004-8-16 22:53
8872

大家好啊,这是我第一次发这种帖子。我很菜的,胜的论坛大家的帮助,所以略有小成。进来脱aspr的壳比较多,以下只是linhanshi 介绍给我的破解文章,我只是作一个翻译作用而已,如果有什么说的不对,欢迎大家指出。谢谢了。
载入crackme前要设置一下异常
然后载入,记得IsDebugPresent隐藏起来。
隐藏后,就可以Shift+F9了,呵呵,先看看多少次后运行起来,然后重新载入到就差一次程序就运行起来的那个位置,按Alt+M,然后在00401000下断点
再按一下Shift+F9,看看是不是到程序的入口来了??呵呵
不过Aspr1.31不是这么好对付的,这个Crackme 没有stolen code所以不用补代码(其实是我不会补^_^),但是1.31版的会对IAT加密(是这么说吧^_^)。所以我们要解密(还是别的说法?),程序才能算是脱掉。

往下看,找到有很多JMP的地方(004013FE)[IMG]然后在命令行那里键入:dd 004013FE
其中的四个字节是有数据的。好了,我们重新来,重新载入,再看看4013FE那个地方,根本没有东西是不是?这个意味着ASPR在后来的地方写入了一些东西,呵呵,这时候你应该想到要下断了吧?好了,我们内存写入断点。

呵呵,然后shift+f9,注意od坐下角的状态。左下角的应该是“写入00401400时内存中断”
继续shift+f9,知道第二次出现“写入00401400时内存中断”

注意上面图的
009557A9  ^\E9 ADFDFFFF        jmp 0095555B
这里很重要。在上面下硬件断点(不知道是不是硬件断点)。

然后看看都有几个这个JMP

现在找找看哪个JMP上面的Call里面有“E8”这个值的?记下那个Call
我这里是0095369A,这里储存着“E8”这个值。
嗯,现在你Alt+M看看里面的情况,看看00403000这个区段,现在是不是没有“包含”这个部分?你再重新载入看看情况是不一样的,原来这个区段是有东西的。壳运行了以后往后就没有了,其实这个就是aspr1.31的IAT加密(不知道是不是这样,但这是我的理解)。双击进去看看,再往下看看,有一个地方是空的(00403670)

我们准备在这里改造IAT,前辈解释给我的文章是用OllyScript修改的。我这里也用这个方法吧。(确实是我不知道别的方法^_^)
用刚才下内存访问断点的方法走到第二次断下的那个地方,然后运行这个OllyScript(记得清除所有的断点):
var inc
var dlls
var pri

mov inc,403690
mov pri,1

start:
bphws 95555b,"x"
bphws 95369a,"x"
eob break
run

break:

cmp eip,95369a
je calles
cmp eip,95555b
jne final

cmp pri,1
je siga

continua:

gmi ebp,MODULEBASE
cmp dlls,$RESULT
log dlls
log $RESULT
log inc
log ebp
jne agrandar

siga:

gmi ebp,MODULEBASE
mov dlls,$RESULT

bpmc
mov [inc],ebp
mov [esi],inc
add inc,4
inc pri
jmp start

agrandar:

add inc,4
inc pri
jmp siga

jmp start

final:

ret

calles:

mov [ebx],#FF25#
mov eip,9536a0
jmp continua

运行之后就可以把IAT解密了。然后再内存断点到OEP处。分析后,往下看那些很多JMP的地方,到最后的那个JMP。

我们用脚本新建的那个区段是00403690至004037B8其中004037B4是空的,这个可以通过Alt+M然后双击进去查看。我们要之前的那些函数(就是004013FE到0040156C的那些JMP),连接到我们新建的那个部分才算完成IAT的解密。
这时候我们只要把0040156C指向004037B4,并且在004037B4中填充0040156C指向的函数就行了。(不知道对不对)
好了,首先是修改0040156C地址中A4879700改成B4374000,注意,数据是倒着的。

然后我们查查看原0040156C的函数(PrintDlgA)在哪里,命令行里面键入“? PrintDlgA”在命令行的右边出现了“761A84AB”然后我们在004037B4那里填入“AB  84  1A  76”就差不多了。现在可以dump了。上面的数据因不同的机器而有差异。
接下来就是ImportRes修复了(可以直接用OD载入的进程),Rav:00003690,然后大小是004037B8-00403690=128。入口点00001000。没有无用函数,FixDump,完毕。
我有一次是刚刚运行那个脚本就开始Dump的,也可以用,不知道有什么不足。还忘高手指点。本人很菜,只是依葫芦画瓢。还忘大家多多包涵。另外,谢谢你看完这篇东东
附件:CRACKME+asp.rar


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

收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
thanks Sen for the translation...and thanks for Ricardo also...:)
2004-8-16 23:40
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用的IsPresent1.4隐藏插件,就是隐藏不了!
只能够想其它的办法了,谢谢你的文章~~!
颇受启发!
2004-8-16 23:45
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
呵呵,只要有用就好
2004-8-17 00:41
0
雪    币: 97697
活跃值: (200829)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
你的系统是98?
2004-8-17 02:07
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
不是,我的系统是2003
2004-8-17 10:30
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
7
最初由 limee 发布
用的IsPresent1.4隐藏插件,就是隐藏不了!
只能够想其它的办法了,谢谢你的文章~~!
颇受启发!

直接到IsDebuggerPresent把它消灭...改成xor eax,eax;ret
2004-8-17 10:33
0
雪    币: 234
活跃值: (61)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
写的不错,我顶你一下!(小子)
2004-8-17 10:33
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
我截了好多的图,但是我第一次发长贴,不知道一个帖子对图片有限制,现在把图都发一下。
2004-8-17 10:38
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10

这个是刚刚载入的时候
2004-8-17 10:40
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11

入口,分析过的
2004-8-17 10:41
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12

下了硬件断点后对JMP的设断
2004-8-17 10:42
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
13
好像可以多个附件吧
2004-8-17 10:43
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
嗯,谢谢提示,我把所有的图片压成个附件就可以了。
附件:crack.rar
2004-8-17 10:47
0
雪    币: 303
活跃值: (466)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最初由 forgot 发布

直接到IsDebuggerPresent把它消灭...改成xor eax,eax;ret

我到IsDebuggerPresent
把:
    mov eax, fs:[18]
    mov eax, dword ptr [eax+30h]
    movzx eax, byte ptr [eax+2h]
        ret
改成:xor eax,eax
     ret
不行的说:哪位试试,因为XP-SP2IsDebuggerPresent插件不好使
2004-8-20 21:15
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
好,支持,先学习一下
2004-8-21 15:48
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
很菜,连看都看不懂。
2004-10-7 21:02
0
游客
登录 | 注册 方可回帖
返回
//