吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3196|回复: 4
收起左侧

[CTF] 2019xman个人晋级赛之little-unpack

[复制链接]
姚小宝 发表于 2019-8-14 13:29



逆向题有点坑,这道看到后边时间有点紧,看不下去,有点可惜。

题目 re2.rar (5.66 KB, 下载次数: 12)

一打开数据混乱,应该是加壳了。
11.png


直接在seg022段下断点,动态调试。
运行如下代码段。
[Asm] 纯文本查看 复制代码
seg024:000000000060309D cmp     rax, rcx
seg024:00000000006030A0 jnz     short near ptr loc_6030A4+1
seg024:00000000006030A2 jz      short near ptr loc_6030A4+1


发现解密循环判断,判断是否解密完。rax是段的起始地址,也就是0x400850,rcx代表段尾。

解密完之后进入代码段之间还有一个反调试。
[Asm] 纯文本查看 复制代码
libc_2.24.so:00007FBF48D4E344 mov     [rdx], eax
libc_2.24.so:00007FBF48D4E346 jz      short loc_7FBF48D4E354
libc_2.24.so:00007FBF48D4E348 xor     edx, edx
libc_2.24.so:00007FBF48D4E34A xor     esi, esi
libc_2.24.so:00007FBF48D4E34C mov     rdi, r9
libc_2.24.so:00007FBF48D4E34F call    near ptr __cxa_atexit

手动修改寄存器的值跳过。

进入核心段之后发现
}3H{8F`7T}6G[WV3JY)0@SX.png

造成这种原因为因为代码段中插入了很多0xE8数据,手段修改,得到。

}9IJB`S7@_DJV2BVBS2{BFN.png


虽然还有很多花指令在其中,但已经不影响阅读。

其中还有一些反调试,可以手动去掉、

程序大概流程是输入明文,经过des加密对比、

这是key的赋值
[Asm] 纯文本查看 复制代码
.text:00000000004009FC mov     qword ptr [rsp+28h], 0
.text:0000000000400A05 mov     byte ptr [rsp+20h], 31h
.text:0000000000400A0A mov     byte ptr [rsp+21h], 32h
.text:0000000000400A0F mov     byte ptr [rsp+22h], 33h
.text:0000000000400A14 mov     byte ptr [rsp+23h], 34h
.text:0000000000400A19 mov     byte ptr [rsp+24h], 35h
.text:0000000000400A1E mov     byte ptr [rsp+25h], 36h
.text:0000000000400A23 mov     byte ptr [rsp+26h], 37h
.text:0000000000400A28 mov     byte ptr [rsp+27h], 38h


即key=12345678

加密后,密文的对比方式
[Asm] 纯文本查看 复制代码
.text:0000000000400BE5 loc_400BE5:                             ; CODE XREF: .text:0000000000400BDF↑j
.text:0000000000400BE5 pop     rax
.text:0000000000400BE6 pop     rax
.text:0000000000400BE7 mov     edx, [rsp+0E0h]
.text:0000000000400BEE mov     eax, [rsp+0E4h]
.text:0000000000400BF5 mov     ecx, edx
.text:0000000000400BF7 sub     ecx, eax
.text:0000000000400BF9 cmp     ecx, 55F8FD5Bh
.text:0000000000400BFF jz      loc_400CA6


.text:0000000000400CA6 loc_400CA6:                             ; CODE XREF: .text:0000000000400BFF↑j
.text:0000000000400CA6 mov     ecx, [rsp+0E8h]
.text:0000000000400CAD mov     esi, [rsp+0ECh]
.text:0000000000400CB4 mov     edi, ecx
.text:0000000000400CB6 sub     edi, esi
.text:0000000000400CB8 cmp     edi, 3C763966h
.text:0000000000400CBE jnz     loc_400C05
.text:0000000000400CC4 imul    rax, rcx
.text:0000000000400CC8 mov     rcx, 13069E5EF81C51D0h
.text:0000000000400CD2 cmp     rax, rcx
.text:0000000000400CD5 jnz     loc_400C05
.text:0000000000400CDB imul    rdx, rsi
.text:0000000000400CDF mov     rax, 16DE11EA08E740B7h
.text:0000000000400CE9 cmp     rdx, rax
.text:0000000000400CEC jnz     loc_400C05
.text:0000000000400CF2 jnz     short near ptr loc_400CF6+1
.text:0000000000400CF4 jz      short near ptr loc_400CF6+1




[Asm] 纯文本查看 复制代码
one - tow = 0x55F8FD5B
three - four = 0x3C763966

tow * three = 0x13069E5EF81C51D0
one * four = 0x16DE11EA08E740B7


直接写脚本解
[Asm] 纯文本查看 复制代码
from z3 import *


x = Solver()

flag = [BitVec('flag%d'%i,64) for i in range(4)]

x.add(flag[0]>0)

x.add(flag[1]>0)

x.add(flag[2]>0)

x.add(flag[3]>0)


x.add(flag[0]-flag[1]==0x55F8FD5B)

x.add(flag[2]-flag[3]==0x3C763966)

x.add((flag[1]*flag[2])==0x13069E5EF81C51D0)

x.add((flag[0]*flag[3])==0x16DE11EA08E740B7)

print x.check()

print x.model()


得到
[Asm] 纯文本查看 复制代码
[flag1 = 780944752,
 flag3 = 741130309,
 flag0 = 2223325899,
 flag2 = 1755511211]


根据大端小端,得到密文
cb42858470458c2eabf9a26845c02c2c

此时还是解不开。后面发现是字秘钥处理方式被改了。
~4[A{{VNBHD5U8W@9U2GD04.png

就是生成16组字秘钥之后,再将每一组以64位操作下循环左移5位。

在标准的des代码中加入
[Asm] 纯文本查看 复制代码
	for (count = 0; count < 16; count++)
	{
		temps = sub_key[count];
		//sub_key[count] = ((temps << 5) & 0xffffffff) | ((temps >> 59) & 0xffffffff);
		sub_key[count] = (temps << 5);
	}


运行得flag

F6J5JMXPTZIQR9X`HQ5M0PU.png 1B3VF@JE4%L[QUFJ4%]MJVE.png

免费评分

参与人数 4威望 +1 吾爱币 +9 热心值 +4 收起 理由
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zhukai055 + 1 + 1 我很赞同!
笙若 + 1 + 1 谢谢@Thanks!
hans2000 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

piaoransfx 发表于 2019-8-14 15:12
惭愧。到现在还是看不懂
jasidy 发表于 2019-8-14 16:36
o651560441 发表于 2019-8-14 22:22
这些楼主分享思路,新人总是需要去尝试,但是没人带只能自己下琢磨
lixiaoben52poji 发表于 2019-8-23 15:35
软件真的好用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-10 21:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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