1.它有反虚拟机 在vm中要修改下配置 配置代码在最后面
2.查找什么写的
3.找OEP 有下断到 GetVersion 或者找 sub esp,0x58 这里要到401000那去搜索 不然找不到 有可能同时先要程序运行起来
直接搜索没有
定位到0x401000也没有
运行进来就有了
点下发现还是条花指令同时 不像OEP (因为它偷取了OEP)
nop一条 就是oep
通过对比没有偷取 OEP的程序发现少了不少指令
但只要还原俩条就可以了 (一定要还原 不然修改iat后运行不了)
就里又要注意了不能现在就修复IAT 因为程序跑起来的因此 在OEP下断 一般下硬件的 断到入口再 修复
发现软件断点去了
那就下硬件的 断下来了
改下指令
修复 IAT 这里又是一个坑不能简单的填代码段的结束(不然修复时程序直接报错)
到401000查看所有模块间的调用 填最后一个函数的地址
还有一点是填新的IAT时也要注意这个程序 填439000也报错 填438000可以
修改IAT后到这里就可以dump了 OEP为 94a0
再修复导入表 有一个点要注意的是大小填多点 这是我自己填的1000默认为500
脱壳完成 破解就比较简单了
在vmx文件最后加上 脱完要改回来 因为变卡了
配置:
isolation.tools.getPtrLocation.disable="TRUE"
isolation.tools.setPtrLocation.disable="TRUE"
isolation.tools.getVersion.disable="TRUE"
isolation.tools.setVersion.disable="TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"
usb:0.present = "TRUE"
usb:0.deviceType = "hid"
usb:0.port = "0"
usb:0.parent = "-1"