2010.12.09_ximo_再来和谐下VMP2.07的脱壳
来源:互联网 发布:大数据时代电子书 编辑:程序博客网 时间:2024/04/29 19:08
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的脱壳
- 2010-08-22_ximo_也来谈谈VMP2.05的脱壳
- 2010.09.28_ximo_纠正下VMP脱壳中的修复DLL的错误
- 2010.10.26_ximo_简单分析下VM的跳转流程
- 脱壳(中) 脱壳的方法
- 2010.10.30_ximo_过VMP的vmware的检测
- 网络时代的和谐隐患
- 和谐的一家人
- 最不和谐的装饰
- 和谐的心
- 和谐的心
- 强大的和谐
- 强大的和谐系统
- 总结下学习脱壳的正确资料和方法
- ART模式下基于dex2oat脱壳的原理分析
- CSDN再来的感悟
- 和谐
- 和谐
- java基础之冒泡排序
- CopyComplexList2
- 为什么中国的大多数的互联网开发人员那么粗糙
- HDU 1372 knight moves
- 第十天 div+css网页标准布局实例教程(一)
- 2010.12.09_ximo_再来和谐下VMP2.07的脱壳
- java例程练习(TextField)
- oracle 日志文件无法归档导致的数据库无法启动
- Ophcrack 以及 彩虹表 下载地址
- java高新学习笔记1
- 与您分享来自zoomla!逐浪CMS的Web导航设计—面包屑的由来
- poj 1703 , hdu 1729 , poj 1182 并查集偏移量应用
- 海量数据面试题整理
- linux如何查看CPU、内存、机器型号、网卡信息