手撕WL/Themida最新版壳
本帖最后由 usualwyy 于 2018-2-6 14:40 编辑这是我人生中脱的第一个壳,难度大大小于我的预期,是不是因为是测试程序是console程序的原因?有知道的同学麻烦跟我说一下
壳版本:2.4.6 WL正版壳,应该是WL/Themida系列的最新版吧,除了反虚拟机、硬件锁、试用锁,其他一律全勾上
脱壳方法:
1.code段下hw断点,第一次断下是在校验,第三次断下开始解密VM段,解密的代码被填充到code段
2.只要push ebp一恢复,立马在push ebp下断,因为如果等整个OEP全部解密完,EIP也基本跑完了,程序就不会在OEP停下来。
3.让程序使劲儿跑,断点都不下,反正已经知道OEP位置,只要OEP完全解密就能dump了
4.dump,修复IAT,经过测试部分API被混淆加密,没法正常还原,不过没关系,dump出来的程序和原始程序一起跑,跑dump程序用F8跑,看看在哪儿崩的,找到错误的api调用,然后到原始程序中对着找,两边API调用的代码在内存地址一样,在原始程序中,被加密的API调用增加了大概20行左右的加密代码,不用管他,跟进去,最终会jmp进调用的API内部,这样我们就知道被调用的APi名了,参数什么不用管,进入加密call之前参数都push进来了,然后手动编辑dump的PE结构,增加一个新区段(因为要加导入函数,不加新区段之前的idata区段放不下),加完新区段,把之前的IAT在新区段重建,增加上刚才缺的api,这个时候跑起来就没问题了。
实在抱歉,这几天发现以上方法不通用,为了避免误人子弟,特此说明一下,这个方法只适合console编译的VC++程序。
Sound 发表于 2018-2-4 17:12
是咯, 目前Win下的加密壳对汇编、Cpp 类的支持是最好的。
然而,GUI程序仍然一个样,VM段解密完就在代码段,OEP根本不用找,剩下就是修复加密的API,说是修复,其实找到调用的API名字就行了,GUI的程序无非要修复的多点而已
不太清楚大家说的入口被偷代码是什么意思,我怎么没见过入口被偷代码。 Andre 发表于 2018-2-4 16:08
这个逼装的有点太过了吧,但是还是支持下。
我是真的纳闷儿,WL的强度竟然这么低,还是说我打开的姿势不对。
以前不懂脱壳的时候一直感觉WL是非常非常难脱,所以还买了一份正版自用,没想到啊,有点失望 人生的第一个壳就能脱掉TMD.也是6的 看来还需要多多学习啊 很了不起啊 这个逼装的有点太过了吧,但是还是支持下。 IAT有那么好修复吗晕 默认加密吧 兄tei,
我家WL/TMD这么弱的嘛? Sound 发表于 2018-2-4 16:48
默认加密吧 兄tei,
我家WL/TMD这么弱的嘛?
哇,S神,我是你粉丝兼用户,我的WL好像就是你手上买的。
强度低是不是跟console程序有关? usualwyy 发表于 2018-2-4 17:04
哇,S神,我是你粉丝兼用户,我的WL好像就是你手上买的。
强度低是不是跟console程序有关?
是咯, 目前Win下的加密壳对汇编、Cpp 类的支持是最好的。