【转载】x64dbg手脱64位程序upx3.96壳后修复

测试系统:Win764
调试软件:x64dbg
下载地址:https://github.com/x64dbg/x64dbg/releases
64位软件:write
64位加壳软件:upx3.96
下载地址:https://github.com/upx/upx/releases
PE工具:studyPE++64x64dbg手脱64位程序upx3.96壳后修复现在64的程序越来越多了,正好前几天看了一个坛友发帖求脱upx的壳(64位程序),估计是变种壳,直接用upx -d失败,只能手脱了。
关于IAT修复,强烈建议大家看下锻钢著的“加密解密第4版”,介绍很详细,一本好书,如果此推荐触犯论坛规则,版主可直接删除,也可通知我删除。

依然是入门小白贴,大神请跳过吧。

1、x64dbg熟悉
2、寻找OEP
3、脱壳插件Scylla使用
4、修复异常

一、x64dbg打开后如下,简单介绍,全凭OD一一对应相似功能,如有不对,尽情谅解。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图

如果没有入口点没有停在软件模块,选项-事件后去除系统断点前的选中状态。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图1

系统API断点设置方法,类同OD的Ctrl+N。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图2
二、打开加壳后的64位write.upx3.96(write为Win7系统标配,可下载加壳软件后自制),我们通过ESP定律找到OEP。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图3

直接F9运行,暂停在这里。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图4
F8单步执行到jmp处,再按一次f8就到了软件OEP处。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图5
三、选择插件-scylla,打开dump窗口,此处已经自动获取了OEP,直接点击dump就好。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图6
保存文件后再单击Autosearch,修复IAT。

【转载】x64dbg手脱64位程序upx3.96壳后修复插图7
【转载】x64dbg手脱64位程序upx3.96壳后修复插图8
一般dump数据和修复IAT后正常应该可以打开了,可是爆了异常。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图9
四、异常修复,我们用x64dbg加载write.upx3.96_dump_SCY。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图10
原因知道了,是因为软件的基址不同,软件找不到正常地址而报错,可是64位软件的基址是动态(ALSR机制),每次加载都不同,可是原程序(未加壳的原程序)可以完成自动修改,我看看源程序的基址和我们脱壳软件有啥不同。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图11

【转载】x64dbg手脱64位程序upx3.96壳后修复插图12

解决补丁思路
1、禁用ALSR机制。
2、加入代码实现自动修改基址。
因为我比较懒,打开studyPE++禁用了ALSR机制,这样每次都用默认基址就能正常打开。
【转载】x64dbg手脱64位程序upx3.96壳后修复插图13

总结,软件脱壳后区段看着和原文件有差异,不够完美,也变大了,需要优化。
ASLR机制禁用只是权宜之计,后续需要编写脚本修复,这个留给大神研究。

本站资源来自于互联网 如有侵权请立即与我们联系! 客服TG:shashoufc 你想吧官方通知群:https://t.me/pcruanjpojie
逆向资源分享,逆向思路交流分析,软件破解 » 【转载】x64dbg手脱64位程序upx3.96壳后修复

提供最优质的资源集合

逆向吧官方TG通知群 逆向吧官方群