ZP1.4脱壳
双击打开软件。查看是否有类似对话框(无试用和注册框,有注册框的话 断点:DialogBoxIndirectParamA
)
拖进OD
F7运行一下,然后Ctrl+G
,输入DialogBoxIndirectParamA
来到这里,看右下方,数据窗口
对第一个Return 语句,右键,然后数据窗口处跟随,或者快捷键Enter
.png)
接着,往上拉,在je
处,下硬件断点,然后重新打开软件
打开软件后,F7运行一下,下ESP
断点
接着,按F9运行,回到刚才 下的硬件断点位置
点击右边的Z
,原本是0,左键点一下,让他转为1,使这个跳转发生
因为刚才下了ESP
断点,所以跳转产生以后,F9一次,然后F7一路跟下来,会到这么一段地址,在这里删除分析
删除分析后,就是易语言的入口头部特征了
接着打开LodePE
,对软件进行完整转存
在头部,记录下OEP的地址
打开这款工具,选择软件,输入OEP地址,获取输入表
可以看到,此时获取到的函数都是无效的。
打开ZP Fixer
,Process ID
输入进程ID,
开始字段,就是图片位置,不过要加400000,就是原本是00160000 ,就要改为00560000
结束字段也是一样
Patch VA
,回到OD,看到头部下的第一个call,一路F7,进入第一个CALL
接着在一路F7。直到进入到这样子的代码段,retn
,就是Path VA的地址
Zero VA
,看到retn 上面的 CALL,那个就是Zero VA入口点,F7进去,看到一个ResumeThread
,这个回调函数下,有一个cmp 比较,里面的基址就是Zero Va 的地址。
复制进去ZP 软件,点击Start,会生成一个地址,把他复制进OD,转到那个地址处
然后右键,将此处转为新的EIP
接着, 在下面那个XOR eax,eax 处下断
在回到Import REC那个软件。再次获取输入表,可以看到,没有无效函数了,然后转存文件
到这里,ZP1.4脱壳完成
vp1.9脱壳
拖入OD,运行,点击右上方那个M
,然后Ctrl +B ,复制机器码,搜索
第一次搜索结果,把它拉到一旁,快捷键Ctrl+L
在搜索一次
记录下第二次搜索出来的地址
点击一下C
,Ctrl+G,跳转到这个函数,这个函数是申请内存的函数VirtualAlloc
然后在retn 处下断,不能在函数头下断会被检测到。
然后重新启动软件,点击运行,运行两次到三次,在数据窗口处跳转到刚才搜出来的地址,在第二行最后一处下内存写入断点,接着运行两下,取消函数申请的那个Retn断点,然后单步运行,观察下方数据窗口处,等到出现机器码了,就将刚才的机器码替换成正确的机器码,然后配合Key,就破解完成了。
SE2.3.9脱壳
拖入OD,SE壳有个特征码8D4DD4E8
,在OD中CTRL +B 搜索这个特征
.png)
跳过去以后,在第一个CALL下断,接着F7跟进去,一路F7,直到看见PUSH ESI ,而且有个箭头往上跑的
.png)
把 push esi 的 地址保存下来。
放入脚本中
1 | /*****************************************/ |
然后在OD运行脚本,脚本运行完成后,会生成三个文件,然后就可以使用SEDEKEY
工具,生成data文件
把生成的data文件,拉进Keygan
文件夹内,使用注册机,生成一个KEY
然后把生成的KEY文件,拉到和EXE文件同目录,双击打开EXE文件,会显示文件已损坏,这时候要修复一下软件.
打开log.txt ,复制RSAPublicKEY的值,把软件拖进OD,然后在数据窗口中,跳转到这个地址
接着在打开C32ASM,把RSAPublic.bin
文件拖进去,以十六进制打开
然后把这里的数据,全选,以HEX格式化拷贝
回到OD,在数据窗口中,尽量选择多一点行数,二进制粘贴进去,多一点
然后运行,好了,大功告成。