记一道手工UPX脱壳逆向分析

admin 2025年2月12日22:38:39评论5 views字数 604阅读2分0秒阅读模式

分享一道来源HGAME2025的逆向题,UPX工具脱壳失败,练习手动脱壳。

F9找到ep入口这一串push

记一道手工UPX脱壳逆向分析

下面应该就是加壳的逻辑了

对rsp栈顶下硬件断点,当走完壳把参数都pop出去的时候rsp就会发生变化

记一道手工UPX脱壳逆向分析
记一道手工UPX脱壳逆向分析

下一个硬件字节访问的断点

F9运行,断在了一堆pop的后面

记一道手工UPX脱壳逆向分析

应该脱壳快结束了,再单步几下跳出jne这个判断,遇到一个非常大的jmp跳转

记一道手工UPX脱壳逆向分析

猜测这个大跳转应该就是oep,单步进入

记一道手工UPX脱壳逆向分析

Dump一下当前程序,点击Scylla

记一道手工UPX脱壳逆向分析

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

记一道手工UPX脱壳逆向分析

拖进IDA就可以正常反编译了

记一道手工UPX脱壳逆向分析

看key的加密函数,本质上是给输入的key逐位异或了一个值

记一道手工UPX脱壳逆向分析

直接输入7个1来调试

记一道手工UPX脱壳逆向分析

看到得到的结果是99 DD 73 38 B1 02 4D,和字符1再异或就能得到实际上a3那一堆生成的值了

记一道手工UPX脱壳逆向分析

再和期望的结果异或得到实际应该输入的字符串

记一道手工UPX脱壳逆向分析

得到key是ecg4ab6

继续到加密flag的地方,输入40个1,以同样的思路在最终比较出下断点

记一道手工UPX脱壳逆向分析
记一道手工UPX脱壳逆向分析

Flag加密后的结果在0x61FDF0里,期望结果在0x6aFDC0里

和key加密区别不同的是,flag加密函数用的是逐位减

记一道手工UPX脱壳逆向分析

通过测试的结果恢复出减掉的数字,从而恢复出flag

记一道手工UPX脱壳逆向分析
记一道手工UPX脱壳逆向分析

注意可能减成负数,需要对256取余。

原文始发于微信公众号(智佳网络安全):记一道手工UPX脱壳逆向分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月12日22:38:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一道手工UPX脱壳逆向分析https://cn-sec.com/archives/3733750.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息