好友
阅读权限30
听众
最后登录1970-1-1
|
本帖最后由 a070458 于 2015-8-3 12:38 编辑
-------------------------------------------------【文章简介】-------------------------------------------------
【文章标题】 VMProtect 2.12.3 IAT修复方法&修复脚本
【文章作者】 a070458
【作者邮箱】 无
【作者主页】 无
【软件名称】 C++.vmp.exe
【软件大小】 自己加壳
【下载地址】 自己搜索下载
【加壳方式】 VMP2.12.3
【保护方式】 VMP
【编写语言】 VC
【使用工具】 OD
【操作平台】 XP
【软件介绍】 自己搜索
【作者声明】 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
-------------------------------------------------【文章正文】-------------------------------------------------
1.加壳设置,这里就不V掉OEP和资源保护了 其他默认设置
2.OEP的寻找
OEP的寻找也是用很旧很旧大牛们总结的方法了 VirtualProtect下段 一路F9等他设置最后一个区段的时候 找个Vm_retn 下断点运行后直接对text段下断点一路F9就到达OEP或OEP附近了
3. 修复call的寻找
这个好找在代码断寻找所有call 然后看谁跳向vmp0区段就对了
4.寻找正确api
这个也好找 随便跟进几个call 你发现一路F7 最后会都会到达
push dword ptr ss:[esp+CONST];retn const
然后F7到达真正的API, 所以 这2句代码就有用了 可以剩下N个F7的时间
这里在VMP0区段搜索所有符合的代码下段
大概长成这样
这里吐糟一下od脚本的findcmd 命令 搜索命令是这样的 如果搜索call 如果发现E8 E8 ???????? 他就会搜索出第一个e8当做call 指令 然后+5继续寻找 这样就漏掉一个咯
5. 修复思路和IAT识别
脚本大概思路 就是寻找需修复的api的call的地址------保存当前的ESP和【ESP】的值,把寄存器全部变为0,然后运行 ,到达retn处-----F7一下到达api----------然后获取当前ESP的值和【ESP】的值,比较一下 就能识别所有类型
VMP会把所有IAT类型全都变为E8 CALL 5字节, 如果是FF15 FF25 这些6字节的剩下一字节就会随机填充
但是VMP会这样的 push r32,call VMP0 ;然后在call 里面pop 掉达到堆栈平行,这样就需要识别出来然后把call 的地址往上移动1字节了 ,这个也可以从[esp]的值可以看出来,因为他也要返回,所以到达API 他肯定要还原 所以从[ESP]的值就可以看出来了
基本就是6种类型
////////////////////////////
类型1 push xxx call xxxxxxx (FF15 XXXXXX) //FF15 前一字节NOP MEsp==NowEsp 进call前[MEsp]!=进call后[MEsp]
类型2 call xxxxxxx 一字节垃圾代码 (FF15 XXXXXX)//FF15 后一字节NOP MEsp-NowEsp =4
类型3 push xxx call xxxxx (FF25 XXXXXX) //FF25 后一字节NOP MEsp==NowEsp 进call前[MEsp]==进call后[MEsp]
类型4 call xxxxxxx 一字节垃圾代码 (FF25 XXXXXX)//FF25 前一字节NOP NowEsp- Mesp =4
类型5 mov r32,[api] (5字节)// mov r32,[api] 后 返回的地址的不会跳过1字节
类型6 mov r32,[api] (6字节)// mov r32,[api] 后 返回的地址跳过1字节
/////////////////////////////////
随便找个call跟进对照一下就明白了,可能有错,欢迎各位大牛指出
//////////////////////////////
6.其他问题
因为是采用寻找所有修复call 然后修复,肯定会有1 2个会找错或者修复错,如果这样把程序弄崩溃了,(脚本运行效率太慢了,如果运行到一半挂掉了 就白费功夫了)所以 HOOOK KiUserExceptionDispatcher 达到跳过修复的call 然后继续往下修复。
有的可能修复不了 具体看log窗口吧 有提示信息。
7.资源的修复
隔壁UPK大神有工具和方法,有兴趣自己去学习
/////////////////////////////////////////////////////////
基本框架都在啦 有兴趣自行扩展
然后就发现会修IAT才是长征的开始
////////////////////////////////////////////////////////
附上脱壳脚本
vmp.rar
(165.18 KB, 下载次数: 1534)
这里感谢吾爱大家庭,最开始就是接触到这个论坛,在这学会很多很多东西
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|