UPX壳是一个开源的压缩壳,既然是开源基本上就没啥秘密可言了,因其压缩率高,短小精悍,深受初级加密用户喜欢。破解一款软件时,发现竟然用的是UPX壳,UPX壳本来可以用-d参数完美自解压,试了一下,报错!一看不要紧自解压信息全部清空了,虽然也可以用esp
定律等方法脱壳修复,但
是要完美
脱壳工作量有点大。一个这么简单的壳,还要自作聪明的变形,简直是太不把广大破解工作者放在眼里,叔可忍婶不可忍!
但要把删除的东西找回来,就要先知道聪明人删除了啥?
二、UPX文件结构:
找来大神的帖子(链接:https://www.52pojie.cn/thread-222719-1-1.html),了解了一下都丢了些啥,顺便看了一下大神的脚本,由于本人是X64程序,大神的脚本在x64dbg上直接用不了,修改嫁接的话部分脚本指令不支持,嫁接的难度比找失物似乎更难。
三、失物招领:
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值。
投怀送报:
现在来找前面分析的数据,先找压缩前后长度。
call r11
adc ecx,ecx
cmp rbp,0xFFFFFFFFFFFFFB00
adc ecx,0x2
call livelicense (完美修复).7FEE6E805EA
jmp livelicense (完美修复).7FEE6E80635
pop rsi
pop rdi
pop rax
mov dword ptr ds:[rdi],eax
mov rdi,rsi
push rsi
mov rdi,rsi
mov rsi,0x43800
mov dl,0x12
push rbx
push rdi
lea rcx,qword ptr ds:[rdi+rsi-0x3]
pop rsi
push rsi
pop rbx
jmp livelicense (完美修复).7FEE6E80725
cmp rsi,rcx
jae livelicense (完美修复).7FEE6E8072D
push rsi
pop rsi
lodsb
cmp al,0x80
jb livelicense (完美修复).7FEE6E8070C
cmp al,0x8F
ja livelicense (完美修复).7FEE6E8070C
cmp byte ptr ds:[rsi-0x2],0xF
je livelicense (完美修复).7FEE6E80712
sub al,0xE8
cmp al,0x1
2.jpg (102.33 KB, 下载次数: 0)
下载附件
2022-8-9 16:05 上传
数据结构中的压缩文件的相关参数已经都找齐了,现在来找剩下的两个hash以及最后的校验和。
3.jpg (50.55 KB, 下载次数: 0)
下载附件
2022-8-9 16:05 上传
header corrupted 4 的上面,就是计算校验和的call,upx中跟踪测试压缩文件,al中为正确的校验和。
4.jpg (149.27 KB, 下载次数: 0)
下载附件
2022-8-9 16:05 上传
5.jpg (105.01 KB, 下载次数: 0)
下载附件
2022-8-9 16:05 上传