UltraDebug

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[CTF] [GKCTF2021] SoMuchCode

[复制链接]
English

主题

0

回帖

UD

新手上路

UID
34
积分
34
注册时间
2022-4-4
最后登录
1970-1-1
2022-5-13 00:14:47 | 显示全部楼层 |阅读模式

很惭愧,这篇题解写的并不是很好,因为我平时刷题的题解都是做题笔记,并不像比赛上交的题解那样直入主题,做破解的时候肯定要尝试猜测,会走很多弯路,比赛题解不会记载这些弯路,而做题笔记会.

这样的笔记更能让读者了解到我到底是怎么做的,这也是我入门期期望能读到的东西. 直接向答案去的题解虽然能看懂,但是只是授之以鱼, 很难让我积累太多经验,当然,复现的时候也是经验的积累

为什么说这篇题解写的不好呢,因为走的弯路实在是有点多,把无效的分析当重点,最后才发现题的核心部分只有短短一段,而且很好识别,如果早些采用这个路线,这道题早就做出来了.但是我还是把它发出来了,希望各位师傅看到其中的缺点也能加以指导吧.

这是一道核心加密为XXTEA,并且加了大量混淆的普通加密逆向, 废话就说到这儿,下面上做题过程

[GKCTF2021] SoMuchCode - English_UltraDebug

这题的名字叫SoMuchCode, 先来欣赏一下main的长度

[GKCTF2021] SoMuchCode - English_UltraDebug

这是把最上面放大了的,可以看到跳转也不是特别清晰,跳来跳去的.

但是还是那句话,我们在做题而不是实战, 既然是题,它就是为了我们能做出来而生的. 类似这种超长的,难以人力分析的, 无非两种情况:有固定模式或规律/用自动化解题脚本.

否则大概只有刚学C++的新手才会把一个main写这么长吧(((

通过IDA的图, 我们把这个大概分成几段结构相似/相同的代码,一一去分析

首先是这部分:

[GKCTF2021] SoMuchCode - English_UltraDebug

这三个黄框里的代码块结构大体相似,我们先分析上面独立的代码块,再分析这部分

独立代码块里主要完成了两部分工作, 一是给一些变量赋初值:0或0xF,二是给buf2和一段明文内存放进6160函数, 动调跟了一下感觉就是一个申请内存并memcpy, 并且还动了一个Size变量的值

[GKCTF2021] SoMuchCode - English_UltraDebug

[GKCTF2021] SoMuchCode - English_UltraDebug

Buf2附近的内存,可以猜测这还是一个String, size就是该string的size, 声明一个结构体

看到这儿内存的中文我认为应该先运行一下看看前面是不是都是输出,都是输出就没什么好看的了, 直接分析下面的代码块好了

接下来是这样的结构,我们结合动调看看

[GKCTF2021] SoMuchCode - English_UltraDebug

给106一个定值,然后转成字符串塞到以432+5为末尾的内存, 有点类似栈的先进后出

[GKCTF2021] SoMuchCode - English_UltraDebug

112和113分别是字符串的首地址和末地址

还有更多的精彩内容,作者设置为付费后可见
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 08:05 , Processed in 0.038488 second(s), 12 queries , Redis On.

Powered by Discuz X3.4

© 2001-2023 Discuz! Team.

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