HadgeROL 发表于 2014-11-17 12:35

AsProtect 1.2 简单脱壳+脚本编写

本帖最后由 Blackk 于 2014-11-17 12:57 编辑

    尽管它是老壳,尽管它已被通杀,但某些壳注定一出身就不平凡!
    这么多年过去了,依然通过它还可以学习到很多!
~

    我是小菜,只能玩di版本,记录一下自己的学习记录。图片更换为高清大图,点击“实际大小”即可

一、查壳

    使用PEID的OEp查找插件可以直接找到OEp的位置

http://pic.yupoo.com/178273541/EdiuLEZv/lHOEu.png

二、脱壳

    下面开始手动找到OEp,OD载入,停在入口点。忽略除了“非法访问内存”的所有异常

http://pic.yupoo.com/178273541/EdiuN2cW/eYsSf.png

    21次SHIFT+F9之后程序运行。
    重载程序,在20次SHIFT+F9之后,停到此处,我们对代码段下内存访问断点

http://pic.yupoo.com/178273541/EdiuNX74/d4mIr.png

    SHIFT+F9之后就停在OEp了
    可以看到程序的IAT都已被移到壳的区段了

http://pic.yupoo.com/178273541/EdiuPkTE/xxDb0.png

    我们来看一下怎么还原IAT
    重载程序,忽略所有异常,对00460ADC下内存写入断点

http://pic.yupoo.com/178273541/EdiuQmVp/h7Wux.png

    第二次断在这里
    EDX指向要处理的IAT,EAX是该IAT的值(处理过),ESI可以看到IAT的名称

http://pic.yupoo.com/178273541/EdiuQTJd/cXeUv.png

    在上面的第一个CALL下F2断点

http://pic.yupoo.com/178273541/EdiuRMHX/DFKQl.png

    F9运行,此时EAX的值就是真实的函数地址,这里是个循环,直到IAT处理完毕

http://pic.yupoo.com/178273541/EdiuSdoR/tzYKZ.png

    如果你时间够多我不介意你一个一个手动修复,我很懒的,还是写一个脚本吧~

//定义要用到的变量,并且清除断点
var oep
var getapi
var apiaddress
var fixapi
bphwc
//获取GetSystemTime函数的地址(因为壳会用到这个函数,方便我们找到壳的区段)
    rtr是执行到返回,那么就到了壳区段,然后搜索二进制(这个二进制就是CALL上面的那几句代码,你也可以自己找,我样本不多,不通用也说不定)
    找到就继续处理,没找到就停止脚本
gpa "GetSystemTime","kernel32.dll"
bp $RESULT
esto
bc $RESULT
rtr
find eip,#8DB5FFFEFFFF568B450C50#
cmp $RESULT,0
je error
//设置OEP、IAT获取、IAT处理的地址(就是我们找到的CALL和写入的地址)
    运行一次
mov oep,4271b0
mov getapi,$RESULT+10
mov fixapi,$RESULT+19
bphws getapi
bphws fixapi
bphws oep
esto
//此时停在CALL处,将EAX的值(函数地址)保存
    运行一次
    将函数地址修复
    是否停在OEp?停在OEp就停止脚本
fixbegin:
mov apiaddress,eax
esto
mov ,apiaddress
esto
cmp eip,oep
je finsh
jmp fixbegin

//错误和脚本的停止处理
finsh:
MSG "IAT修复完成,请检查"
ret

error:
MSG "未搜索到获取API地址,请使用手动输入。"
ret
    好了,全部组合起来,OD开始跑脚本,可以在数据窗口查看IAT的修复情况

http://pic.yupoo.com/178273541/EdiuU8Jv/JqsXd.png

    IAT修复完成后,我们检查一下,发现还有一个函数没有修复

http://pic.yupoo.com/178273541/EdiuUOTK/hAr0J.png

    来到指向的函数地址,我们手动修复一下

http://pic.yupoo.com/178273541/EdiuVqUf/2a8bP.png

三、收尾

    在OEp处Dump程序,然后修复IAT,没有错误^_^
附件下载,脚本在第一个附件中,测试了一下,这个脚本也支持1.23RC =-=

HadgeROL 发表于 2014-11-17 12:37

本帖最后由 Blackk 于 2014-11-17 12:53 编辑

沙发自己坐呃~

520Kelly 发表于 2014-11-17 12:43

你电脑的字体好卡哇伊 叫什么名字?

netryl 发表于 2014-11-17 12:46

修复IAT才是难度。{:1_906:}

851518232 发表于 2014-11-17 12:59

不错的教程,谢谢分享

Avenshy 发表于 2014-11-17 13:28

前排膜拜大神 顺便出售瓜子可乐爆米花

天大啊 发表于 2014-11-17 16:10

学习了虽然没怎么看懂,但是还是感谢分享

连晋 发表于 2014-11-17 16:43

感谢楼主分享辛苦了

Scar-疤痕 发表于 2014-11-17 19:30

感谢楼主分享!!

manbajie 发表于 2014-11-17 22:21

学习大神介绍
页: [1] 2 3 4
查看完整版本: AsProtect 1.2 简单脱壳+脚本编写