悠扬随风 发表于 2024-7-12 21:22:26

一道关于逆向的实战CTF题目分析

前言

本题自带call型花指令,磨练选手对花指令的理解程度。加密属于基础的异或和左右移位加密。主要考察选手的基础能力,动态调试和写脚本的能力。在这篇文章,详细记载了我的分析过程,相信你会有很大收获。
1、查壳

https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411324.png​
PE64位,没壳步伐
2、IDA分析去花指令

使用IDA打开时,发现一片红,很正常的CTF考点:花指令
sub_main

https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411326.png​
当务之急是如何去除花指令,继续向下分析,发现了一些端倪
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411327.png​
花指令的形成是干扰编译器的分析,但又不会影响步伐的正常运行。
那么显而易见,会将某个寄存器进行push(生存)然后对其进行复杂操纵,最终pop(恢复)该寄存器的值,步伐正常执行。
而在本步伐中,可以发现该手法:
push ebx
.....
pop ebx中心的过程均无需再看,直接NOP操纵。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411328.png​
nop完记得生存修改。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411329.png​
接下来就可以分析main函数啦
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411330.png​
而这两个函数恰好均为关键的函数。
【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
sub_401040

https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411331.png​
此时,我们可以看到函数开头的位置存在多个push操纵,不要急着nop。对照函数结束的部分,避免误杀友军。
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411332.png​
可以看到pop和push是相互对应的,开头push,结束就要pop。
此时注意到:push、pop不是要nop的点,我们继续分析
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411333.png​
熟悉混淆的朋友一定可以辨认出这是一个call型混淆。
call一个地址,然后修改堆栈返回值,retn跳过混淆,相对之前的混淆需要对堆栈有一定的理解。
辨认出来,进行nop即可
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411334.png​
得到加密函数
https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202407121411336.png​
int __cdecl sub_401040(char a1, int a2)
{
 return ((a2 ^ a1) << 8) - a2;
}到此,恭喜你学会了分析一道CTF题目最根本的步调。
更多网安技能的在线实操训练,请点击这里>>
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 一道关于逆向的实战CTF题目分析