如何用x64dbg UPX手动脱壳(64位)

示例为 [SWPUCTF 2022 新生赛]upx 中的附件(64位,UPX3.96壳),可以用工具脱壳。下面尝试手动脱壳。

XP后的系统都有ASLR(地址空间随机化),导致dump后程序运行出错,因此我们首先用CFF Explorer修改该文件的Nt Header,禁用ASLR

在Nt Header下的Optional Header里修改Characteristics,勾选Relocation info srtipped from file。关闭后记得保存。

用x64dbg打开文件,进入系统断点(push rbx)。

按F9到达该断点(这里要按两次,上面还有个别的什么断点)

F7走完push压栈部分

观察到RSP的变化,在其上右键“在内存窗口中转到”

在右下角该地址右键,设置硬件断点

F9运行到断点处,看到下面的jmp大跳应该是入口,设置断点,F9跳过去

F7步入程序

往下翻可以看到提示字符串

这就正式进入了原程序,可以进行dump了

先点“IAT Autosearch”,再点“Get Imports”,在“Imports”中删除掉带有红色叉叉的,再点击“Dump”,之后“Fix Dump”选中之前的Dump文件,修复成功。

p04 副本_dump_SCY.exe 也可以正常运行

拖入IDA中,这里会不报错,Yes不用管它

(由于某种神秘力量?)没有main函数,只能通过字符串来找函数

X键找一下位置

可以看到大致的代码

如果想把字符串展开看,可以(退到IDA View-A中)修改Segment,取消w勾选

修复后

显然sub_140001540是printf函数,脱壳结束

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值