CTF逆向工程简单介绍以及解题通用思路入门
一、软件逆向工程的简介
(1)、软件的生成
软件的编写语言经历了从机器语言到汇编语言,再到如今高级语言的变化。最开始使用的都是机器语言进行的编写,机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。机器语言使用绝对地址和绝对操作码。不同的计算机都有各自的机器语言,即指令系统。从使用的角度看,机器语言是最低级的语言。而二进制代码则是机器语言的具象表示。机器语言有着其独特的优势——不用编译且所有设备均可以识别,所以其跨平台性举世无双,但是冗杂的代码难以记忆,难以编写,难以阅读则是天堑般的弱点。
为了解决这一问题,汇编语言出世了,汇编语言是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。不难看出,汇编语言的优点依旧明显——不用编译。可扩展性依旧很高,并在一定程度上易于记忆,但是依旧单调而冗长。

在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素——程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。因此高级语言诞生了(对于码农而言,这是史诗级福报)。
高级语言是一种独立于机器,面向过程或对象的语言。高级语言是参照数学语言而设计的近似于日常会话的语言。例如,要将2个变量相加并赋值给第三个变量,用高级语言表达为var3=var1+var2。高级语言相对低级语言有较高的可读性,更易理解。但是很可惜的是,由于早期计算机行业的发展主要在美国,能开发语言的大牛也都在那边吗,因此一般的高级语言都是以英语为蓝本。但是现在的仓颉和易语言等都是基于中文开发的,只是还有待推广。

(2)、逆向工程的定义以及目标
软件逆向工程是通过对低级代码进行一系列提升和抽象,最终得到容易被人所理解的表现形式的过程。换句话说,软件逆向工程的目的就是从目标软件中找出设计思想。具体而言,软件逆向工程是指从可运行的程序(可执行文件)出发,运用解密、反汇编、反编译、系统分析、程序理解等计算机技术,对软件的结构、流程、算法、代码等进行分析,推导出软件产品的汇编/源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。或者直接理解为你想抄作业(读书人的事情怎么能叫抄呢,那是借鉴)但是你只有“参考”答案,只有答案没有过程,你为了应付老师的检查,不得不通过答案逆推过程,然后交上去蒙混过关。这个基本上就是逆向干的事情了。
而实际工作里的逆向工程主要应用就是恶意代码分析还有病毒分析,以开发杀毒或者防护软件。当然也可以制作外挂脚本什么的,但是你最好不要这么干。
二、CTF逆向工程入门
(1)、逆向题目特点
比赛它一定是会给定目标程序的,而这一类程序则通常分为两大类:第一类是由输入的,需要自己通过逆向分析找到正确的输入;第二类是在后台运行的(没有明显的显示),这里就需要去看看内存后者网络流向里找找了。很多恶意代码分析都是第二类的。
而比赛的考点也是非常的少而集中完事死难。一般会从程序保护、开发语言和核心算法三个层次出题。简单点的题目包括:程序没有保护、C语言开发、核心逻辑是简单加密或者对输入字符的ASCII码进行修改等题目。难点的(不止一点,两级分化之人和狗的差距)包括:程序加壳干扰且有反调试、Go语言开发、核心算法设计迷宫或者图论什么的。
逆向的难点也是非常的清晰:
1.RE 难点一:绕过程序保护
常见的保护措施包括:
-
编译器静态链接、优化。
-
加壳、加密、混淆、花指令。
-
反虚拟机、反调试、虚拟化等。
2.RE 难点二:理解程序开发语言
程序可使用的指令集和高级语言多种多样,包括:
-
指令集:x86、x64、ARM、ARM64、Mips。
-
操作系统:Windows、Linux、iOS、Android 等。
-
语言:C、Pascal、Haskell、C++、Go。
-
脚本:Java、C#、Perl、PHP、Python、Ruby、Lua。
-
脚本编译打包:pyc、pyinstaller 等。
3.RE 难点三:识别核心算法
常见的算法包括:
-
常见密码算法识别 (DES、AES、MD5、SHA1、TEA、RSA 等)。
-
密码算法变形。
-
矩阵求解。
-
迷宫问题。
-
经典图论算法 (Dijkstra 算法、KMP 算法) 等。
因此,逆向设计的点很多,而且对你的能力要求非常高。当然个人认为,比密码还好点(虽然逆向经常分析加密解密逻辑)。
(2)逆向解题入门思路
所谓逆向,就是有根据地“连蒙带猜”。(一发入魂超爽的)
对于要分析的程序,我们并不需要知道程序的所有细节,即使是分析关键函数,也可以利用函数中的某些特征猜测函数使用的算法。
注意逆向时,对于函数功能的猜测要有依据,也就是总纲中所说的“有根据地”,没有根据的胡乱猜测只会让自己陷入混乱。
逆向分析的操作要领可总结为:一看二猜三验证。
一看是指使用 IDA 或者 OllyDbg 等工具,静态或动态地查看程序的关键函数。具体操作时,虽然程序多种多样,但是逆向分析程序可以有统一的“套路”。针对逆向题目的三大考查层次,其分析步骤如下:
第 1 步:使用 DetectItEasy、EXEInfoPE、PEID 等工具查看壳和编译器信息,并能进一步推测出所使用的程序开发语言。
第 2 步:使用 IDA 等工具查看程序反编译后的伪码和程序中的所有字符串,静态分析程序的核心逻辑和关键算法。
第 3 步:针对第 2 步中没看懂的函数,使用 GDB、 OllyDbg 等动态调试工具分析关键函数的逻辑。
二猜是指通过“一看”中发现的特征,猜测关键函数采用的算法,这一步非常考验选手的经验。
三验证是指在“一看二猜”基础上,通过编写脚本或者多次运行程序,验证自己的猜测是否正确,如果不正确,则再次重复“一看二猜三验证”的过程。
在程序逆向分析中,要静态为主,动态为辅。
在“逆向分析的操作要领”中,“一看”涉及多个动静态分析工具的使用,如果新手不知道工具的使用顺序,就很容易“走火入魔”,迷失在代码的海洋中。
静态为主:是指优先使用 IDA 等工具查看程序伪码,通过静态分析快速定位关键函数,并仔细阅读关键函数中的算法逻辑。静态分析时,要求选手有一定 C 语言基础,因为 IDA 伪码与 C 语言类似。有相当数量的简单题目在这一步就能解决,这就意味着选手只要会看 C 语言、会使用 IDA 反编译,即使完全不懂动态分析,也能解题拿分。
动态为辅:是指在通过静态分析确定关键函数后,由于 IDA 反编译效果或者程序有混淆,不能读懂其中逻辑时,应针对关键函数采用动态分析方法,通过动态调试跟踪函数操作来确定其内部逻辑。动态分析是静态分析的补充。
静态分析和动态分析没有孰优孰劣,需要具体问题具体分析,因此两种分析方法都要尽量掌握。如果读者暂时不能掌握动态分析方法,也一定要熟练掌握静态分析方法。
最后提醒一下CTF逆向通常有windows系统、Linux系统、安卓系统的逆向题目哦!!!
文章来自网上,侵权请联系博主
互动话题:如果你想学习更多网安方面的知识和工具,可以看看以下题外话!
题外话
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习资源分享:
下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!

一、2025最新网络安全学习路线
一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。
L1级别:网络安全的基础入门
L1阶段:我们会去了解计算机网络的基础知识,以及网络安全在行业的应用和分析;学习理解安全基础的核心原理,关键技术,以及PHP编程基础;通过证书考试,可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。

L2级别:网络安全的技术进阶
L2阶段我们会去学习渗透测试:包括情报收集、弱口令与口令爆破以及各大类型漏洞,还有漏洞挖掘和安全检查项目,可参加CISP-PTE证书考试。

L3级别:网络安全的高阶提升
L3阶段:我们会去学习反序列漏洞、RCE漏洞,也会学习到内网渗透实战、靶场实战和技术提取技术,系统学习Python编程和实战。参加CISP-PTE考试。

L4级别:网络安全的项目实战
L4阶段:我们会更加深入进行实战训练,包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题

整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握;而L3 L4更多的是通过项目实战来掌握核心技术,针对以上网安的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
二、技术文档和经典PDF书籍
书籍和学习文档资料是学习网络安全过程中必不可少的,我自己整理技术文档,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,(书籍含电子版PDF)


三、网络安全视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的网安视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

四、网络安全护网行动/CTF比赛
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。


五、网络安全工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。


面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了技术之后,就需要开始准备面试,我们将提供精心整理的网安面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…


**读者福利 |** CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

4806

被折叠的 条评论
为什么被折叠?



