UltraDebug

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: A C D R G Y M Z X S P
公益项目,接受捐赠
查看: 1494|回复: 0
收起左侧

[原创] 完美UPX脱壳之投怀送抱篇适合所有变形

[复制链接]
Pandora

主题

0

回帖

UD

新手上路

UID
73
积分
11
注册时间
2022-7-31
最后登录
1970-1-1
2022-8-10 19:49:42 | 显示全部楼层 |阅读模式

一、前言:

UPX壳是一个开源的压缩壳,既然是开源基本上就没啥秘密可言了,因其压缩率高,短小精悍,深受初级加密用户喜欢。破解一款软件时,发现竟然用的是UPX壳,UPX壳本来可以用-d参数完美自解压,试了一下,报错!一看不要紧自解压信息全部清空了,虽然也可以用esp定律等方法脱壳修复,但是要完美脱壳工作量有点大。一个这么简单的壳,还要自作聪明的变形,简直是太不把广大破解工作者放在眼里,叔可忍婶不可忍!但要把删除的东西找回来,就要先知道聪明人删除了啥?

二、UPX文件结构:

找来大神的帖子链接:https://www.52pojie.cn/thread-222719-1-1.html,了解了一下都丢了些啥,顺便看了一下大神的脚本,由于本人是X64程序,大神的脚本在x64dbg上直接用不了,修改嫁接的话部分脚本指令不支持,嫁接的难度比找失物似乎更难。

三、失物招领:

  • 从upx文件结构可知,自解压需要一个0x25字节的数据结构,这个结构对于EXE文件为upx1的头部前0x25个字节,dll文件在PE头的尾部,紧接着就是upx1。
  • 前9个字节为版本号,直接照抄。
  • 第三个双字中,前俩字节照抄,我的样本是0D 24 (64位PE),第三个字节是压缩算法,这个要猜,查UPX手册,可能的取值是1- 0xE,第四个字节是压缩级别,对应1-0xA。测试一下三四字节,默认压缩组合是 0808或0807 ,带-rebute-ultra压缩的话是0E0A,这个也可以看一下upx1的数据前两个字节,1A03的压缩算法是0E,F77F的压缩算法是08,就这几个压缩算法,特征太明显。第四个字节似乎随便设置,不影响自解压。
  • 第四个双字是解压后文件的hash,第伍个双字是压缩前的hash。这俩需要upx上门送货。
  • 第六个双字是解压后数据大小,第七个双字是解压前的数据大小。这俩需要跟踪计算,让其自动呈上。
  • 第八个双字是压缩前文件的虚拟大小,这个保存在压缩文件内部,解压后尾部保存的原始文件的完整PE头,最后一个区段的RVA加上长度。
  • 最后一个双字中,第一个字节是filter ID,我的样本X64程序是49,这个取值变化不大,第二个是cto,查手册是为了处理E8调用,增加压缩率,在快速压缩选项下,这俩字节可以全为0,也就是不数据处理,这个可以从压缩文件处理api函数前有没有sub al,0xe8,这条指令来判断。例如:
cmp byte ptr ds:[rsi-0x2],0xF
je livelicense (完美修复).7FEE6E80712
sub al,0xE8
cmp al,0x1
ja livelicense (完美修复).7FEE6E806F6
cmp rsi,rcx
jae livelicense (完美修复).7FEE6E8072D
push rsi
lodsd
  • 在cmp rsi,rcx上下断点,RSI 地址中的值,就是filter属性中的cto值。
  • 最后一个字节是前面36个字节的校验和,没啥用,upx会自动呈上。

四、投怀送报:

现在来找前面分析的数据,先找压缩前后长度。

1.压缩文件解压完成,处理E8前的最后一步,寄存器肯定会呈现压缩前后的数据长度,这是由它的解压过程决定的。在POP RSI 上下断点,rsi – UPX1段首地址就是压缩前数据大小,rdi – UPX0段首地址就是解压后数据大小。

jmp livelicense (完美修复).7FEE6E806C1
call r11
还有更多的精彩内容,作者设置为付费后可见
UltraDebug免责声明
✅以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
✅The above content is forwarded or original by netizens. If there is infringement, please send the email to the destination 9003554@qq.com handle.
回复 打印

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|站点地图|UltraDebug ( 滇ICP备2022002049号-2 滇公网安备 53032102000034号)

GMT+8, 2025-6-18 20:26 , Processed in 0.032285 second(s), 11 queries , Redis On.

Powered by Discuz X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表