使用x64dbg手动脱UPX壳(UPX4.1.0)

admin 2023年12月22日09:03:58评论36 views字数 988阅读3分17秒阅读模式

UPX4.1.0

本文选用的壳是4.1.0的UPX壳

使用x64dbg手动脱UPX壳(UPX4.1.0)

使用x64dbg手动脱UPX壳(UPX4.1.0)

使用x64dbg手动脱UPX壳(UPX4.1.0)

脱壳

将加壳的exe文件拖入 x64dbg

使用x64dbg手动脱UPX壳(UPX4.1.0)

使用x64dbg手动脱UPX壳(UPX4.1.0)

打开符号,进入第一个sample.exe

使用x64dbg手动脱UPX壳(UPX4.1.0)

进入后在第一个位置下断点,按下F9运行

使用x64dbg手动脱UPX壳(UPX4.1.0)

继续按下F9

使用x64dbg手动脱UPX壳(UPX4.1.0)

单步运行到此处,发现只有RSP变红,根据ESP定律,进行下面的操作

所谓定律就像墨菲定律,想表达事物规律往往是这样的

ESP定律就是当只有ESP(RSP)变红,变红就是值发生了改变,这时候找到ESP所指向的内存位置,打一个硬件断点,按下F9运行到停下的位置,这个位置后面一般有一处跳转,完成跳转之后的地方就是OEP(程序真正的入口点)

我们按照这个定律操作一下

使用x64dbg手动脱UPX壳(UPX4.1.0)

打断点cc

使用x64dbg手动脱UPX壳(UPX4.1.0)

使用x64dbg手动脱UPX壳(UPX4.1.0)

打好断点后运行,停在了此处

使用x64dbg手动脱UPX壳(UPX4.1.0)

使用x64dbg手动脱UPX壳(UPX4.1.0)

我们在紧跟的跳转处设断,运行

使用x64dbg手动脱UPX壳(UPX4.1.0)

F7单步运行进行跳转

使用x64dbg手动脱UPX壳(UPX4.1.0)

这个位置就是OEP

在此处用插件进行dump就可以了,就是点击转储

dump文件是什么意思?

就是将加载到内存的模块的完整数据保存到文件中。相当于模块内存的一个拷贝

因为在加了壳的程序中,原代码和数据是以加密或压缩的形式存放在文件中,执行到OEP的时候,跑完了壳这个解密或解压缩的程序,内存中的代码已经还原,此时dump内存中的数据就可以得到完整的源代码和数据。

使用x64dbg手动脱UPX壳(UPX4.1.0)

如果你是要用IDA反编译exe,此时点击转储就可以实现了,指令已经恢复了

但是程序还不能正常运行,需要修复IAT

修复IAT

IAT(Import Address Table)和 API(Application Programming Interface)是在程序开发和执行过程中密切相关的概念。

IAT 是一种数据结构,常见于可执行文件或动态链接库(DLL)中,用于记录程序运行时所需的外部函数或符号的地址。当程序运行时,它需要调用其他模块中的函数或符号来执行特定的操作,例如文件读写、网络通信或图形绘制等。而这些外部函数或符号的地址可以在编译时无法确定,因为它们位于其他模块中,可能在程序运行时才被加载到内存中。

作者:UKFC-烨鹰

欢迎大家进入UKFC安全团队预备队,开始进入成为网络安全大佬的快车道。UKFC安全团队是一个社会组织,主要参与网络安全CTF竞赛。对网络安全感兴趣的所有各专业学生进行保姆级别网络安全竞赛培训,目的是为提升山西省在安全行业知名度,培养出“晋翼造”网络安全方向的高级人才,提升山西安全行业整体水平。


qq群码


使用x64dbg手动脱UPX壳(UPX4.1.0)


原文始发于微信公众号(UKFC安全):使用x64dbg手动脱UPX壳(UPX4.1.0)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月22日09:03:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用x64dbg手动脱UPX壳(UPX4.1.0)http://cn-sec.com/archives/2326596.html

发表评论

匿名网友 填写信息