http://hi.baidu.com/ximo2006/blog/item/9c61dd3ae2b6e63296ddd833.html

今天拿到了VMP2.07的bin,看了下新版的外壳,发现处理上有了些变化,于是,fuck之。

大致的脱壳流程还是没什么变:

1.到OEP后dump

2.生成IAT的对应关系txt

3.添加进DLL,实现跨平台

但是,IAT的处理,新版的VMP有了点变化,之前的版本,外壳是获取全部的IAT地址后,存放在某内存区域,然后进行填充;而新版的VMP的,则是获取1个,填充1个。其实也是换汤不换药的更新,只是,以前的脚本都失效了,于是只能自己动手搞一下。

首先,用fkvmp,获取2条handler的地址:VM_Retn和VM_WmDs32,这2跳handler的地址,一会要手动修改脚本里的2个地址。

具体不多说了,就给出2个脚本:

一:OEP Founder:

/*
VMProtect OEP Founder
by ximo[LCG][DFJG]
just for fun
*/

var imagebase
var tmp
var pNtHeader
var sectionaddr
var sectionsize
var sum
var protection
var retn

//VM_Retn
mov retn,0104f1fe

bc
bphwc

GMI eip, MODULEBASE
mov imagebase, $RESULT
mov tmp,[imagebase+3c]
add tmp,imagebase
mov pNtHeader,tmp
add pNtHeader,f8
mov tmp,pNtHeader
add tmp,c
mov sectionaddr,[tmp]
add sectionaddr,imagebase
mov tmp,pNtHeader
add tmp,8
mov sectionsize,[tmp]
mov sum,sectionaddr
add sum,sectionsize

gpa "VirtualProtect", "kernel32"
cmp $RESULT, 0
je err
bp $RESULT+13

loop:
esto
mov protection,[esp+c]
cmp protection,20
je next
jmp loop

next:
bc
rtu

find:
bp retn
esto
bc

bprm sectionaddr,sectionsize
esto

cmp eip,sum
bpmc
ja find

finded:
cmt eip,"this is OEP or Near OEP!"
ret

err:
ret

二:Fake IAT:

/*
VMProtect 2.07 Unpacker
by ximo[LCG][DFJG]
just for fun
*/

var getfunc
var dllname
var apiname
var writeaddr
var addr
var apiaddr
var key
var info
var end

var logfile
mov logfile,"FkIAT.txt"

/*
VM_WmDs32:      
01050DA5    8910                  mov dword ptr ds:[eax],edx
*/

mov writeaddr,01050DA5
//OEP or stop script addr
mov end,0100739d

bc
bphwc

gpa "CreateFileA", "kernel32"
cmp $RESULT, 0
je err
bp $RESULT+26
esto
bc
rtu

mov getfunc,eip
bphws getfunc, "x"
bphws end, "x"

loop:
run
cmp eip,end
je end
gn eax
cmp $RESULT,0
je next

do:
mov apiaddr,eax
mov dllname,$RESULT_1
mov apiname,$RESULT_2
bp writeaddr
esto
bc eip
mov addr,eax
mov key,apiaddr
sub key,edx
eval "{addr},{key},{dllname},{apiname}"
mov info,$RESULT
wrta logfile,info

next:
jmp loop

end:
ret

err:
bc
bphwc
ret

跑完脚本后,dump下来,然后添加进修复的dll,跟fkiat.txt放一起,就可以实现跨平台了。

附件是脚本跟试练样本:

http://u.115.com/file/f888266ccb

2010.12.09_ximo_再来和谐下VMP2.07的脱壳相关推荐

  1. http://www.blogjava.net/heyang/archive/2010/12/02/

    2019独角兽企业重金招聘Python工程师标准>>> http://www.blogjava.net/heyang/archive/2010/12/02/339589.html 使 ...

  2. 2010.12.14 关于decimal和Numeric类型

    decimal:从-10^38到10^38-1的定精度与有效位数的数字 numeric:decimal的同义词 怎么理解Numberic类型呢? Decimal数据类型,语法为:Decimal(P,S ...

  3. 台湾国立大学郭彦甫Matlab教程笔记(12) advanced 2D plot 下

    台湾国立大学郭彦甫Matlab教程笔记(12) advanced 2D plot 下 上文记录的是关于统计的图标的绘制 下面我们来到另一个模块:颜色 fill()填充函数 功能:某一个封闭曲线,图上特 ...

  4. 【Scrum】2010.12.27

    基本上从今天开始,各队员开始各司其职: 12.27队员的工作和将要做的工作 Hui, 作为leader, 主要从事developer: 解决一些BUG, 加入好友等功能,以及需要登陆才能获取的信息 L ...

  5. Cheatsheet: 2010 12.13 ~ 12.23

    Web Slow Website? 6 Ways to Speed it Up MongoDB Monitoring: Keep in it RAM Minify JavaScript on the ...

  6. [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹

    原文 张丹-小桥流水,C#2010 在TreeView控件下显示路径下所有文件和文件夹 C#2010学习过程中有所收获,便总结下来,希望能给和我一样在学习遇到困难的同学提供参考. 本文主要介绍两个自定 ...

  7. 2010.12.29(2)——— android GridView

    2010.12.29(2)--- android 可伸缩的GridView 用 GridView 来实现九宫格布局 并且一个格显示一个图片和一行字 [b]1.ImageAdapter[/b] pack ...

  8. 第12 课:HA下的Spark集群工作原理解密

    第12 课:HA下的Spark集群工作原理解密 本期内容: 1.Spark高可用HA实战 2. Spark集群工作原理详解 1,Spark高可用HA实战 Spark本身是Master/Slaves结构 ...

  9. 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | ART 虚拟机下 DexClassLoader 类加载器脱壳点总结 )

    文章目录 一.ART 虚拟机下 DexClassLoader 类加载器脱壳点总结 1.file_magic.cc#OpenAndReadMagic 函数 2.dex_file.cc#DexFile:: ...

最新文章

  1. postgresql数据库修改表
  2. python 链表的中间节点
  3. python能写桌面程序吗_python能写桌面程序吗
  4. mysql修改网络服务_MySql-Server 就要修改成允许 Web-Server 进行远程连接. 最后一步 需要使用ALTER USER … ACCOUNT UNLOCK语句进行解锁了:...
  5. antd option宽度自适应_网站自适应模板是什么
  6. 【Keras】学习笔记(一)
  7. JMM层面的内存屏障-HappenBefore
  8. 棋牌游戏服务器架构: 详细设计(一) 内核设计
  9. hibernate4调用mysql存储过程_hibernate调用存储过程
  10. 尚硅谷的 ediary 笔记_干货分享 | 硅谷创新加速营第五讲教您合理规划融资需求 降低投资风险...
  11. java学习(149):字符输入流
  12. mysql 5.7 远程端口_ubuntu 16.04 mysql5.7.17 开放远程3306端口
  13. 更喜欢使用Stream到byte[]
  14. Java二进制的符号位在哪一位_Java位运算符及二进制常识
  15. 利用ZEBAR 软件生成ZPL 代码
  16. NXP K60单片机Altium Designer电路设计教程(智能车)
  17. wireshark 查找内容
  18. 程序猿12个人艰不拆的真相
  19. 嵌入式常用裸机编程框架
  20. Proximity sensor---Px318J

热门文章

  1. 表格插件:GridManager
  2. Matlab-RGB-颜色对照表(0-1之间取值)
  3. dreamweaver后缀名_在 Dreamweaver 中添加或编辑识别的文件扩展名
  4. 黑客讲故事:攻下隔壁女生路由器后,我都做了些什么【转】
  5. linux下的串口通信
  6. How I Used a JSON Deserialization Oday to Steal Your Money on the Blockchain
  7. 博贤科技管理系统漏洞oday
  8. Nrf52832 SAADC
  9. windows python keylogger
  10. 人脸年龄估计matlab,基于人脸的年龄识别系统设计与实现