前言

之前一直学的是用esp定律进行脱壳,可是脱完壳的软件往往无法运行。

而之前也从来没有接触过对upx壳进行修改的方法,导致使用 upx -d 命令不成功。

本文就upx魔改的方法来讲解一下如何使用十六进制工具+upx -d进行脱壳。顺便复习一下PE文件知识。

本文的主要内容来自于下面这个链接

链接如下:

https://www.pianshen.com/article/4621592135/

UPX壳的特征

1. 区段名

upx壳保护的exe文件中,会有以下几个区段,upx0,upx1,resc。

其中upx0的实际大小是0。

实际上,UPX压缩器将这些节区压缩后放置于UPX1中,并且将压缩和解压代码也放到里面去。一旦该程序被加载运行,位于UPX1节的解压缩代码会释放原数据到UPX0中并且让PE正常运行。

https://blog.csdn.net/qq_37232329/article/details/97131186

“.rsrc”是程序资源信息区段名,这个区段含有原资源段的完整头部以及图标、Manifest、版本等未被压缩的资源,当然还有UPX自身需要的导入信息等(如果程序自身不含资源段,加壳后就是“UPX2”)。

2. upx1头部的信息

在upx1这个区段中,最开始是关于upx壳的信息,比如版本、压缩方式等等。

这段内容对程序运行无影响,但对工具脱壳有影响。

upx

这段信息如果进行修改,那么就无法使用-d命令进行脱壳了。

修复upx信息

通过以上知识,我们只需要将Upx壳的关键信息进行恢复,那么就可以使用upx -d命令进行脱壳了。

常见的魔改upx壳的方法就是单纯的修改区段名和upx1的信息,因此我们在十六进制工具中,找到对应的信息进行修改就好了。

后言

emmmm ,这么一点东西是不是不值得写在博客里?

手动脱壳?见我第一篇文章。