【网络安全】CTF逆向Reverse入门

一、CTF之逆向

CTF主要分为五个方向,Web、pwn、crypto、misc和reverse(逆向)

CTF竞赛中的逆向:

涉及 Windows、Linux、Android 平台的多种编程技术,要求利用常用工具对源代码及二进制文件进行逆向分析,掌握 Android 移动应用 APK 文件的逆向分析,掌握加解密、内核编程、算法、反调试和代码混淆技术。 ------ 《全国大学生信息安全竞赛参赛指南》

这里主要还是windows平台的逆向入门

二、基础

1.语言基础

逆向首先要学好的应该是汇编语言,入门推荐的是王爽的汇编语言。

C语言推荐《C primer plus》书有点厚,但是不难理解,作为入门的语言学习资料,很不错。

python也要学点,这里就不推荐书了,因为博主也没有系统学过hh。

win32编程,我个人认为做题的时候用到的时候再查就好,多积累,也可以看看《windows程序设计》不过真的很厚。

2.简单加密算法

CTF中的逆向题目,经常是看反编译后的伪代码,分析代码逻辑和加密算法进而求解出flag。所以这里入门我们需要了解一些简单的加密算法,如RC4,TEA,和base系列编码。

3.主要工具介绍
动态调试:ollydbg,Xdbg

ollydbg,简称OD已经蛮久没有更新了,而且OD主要支持32位的PE文件调试和分析;所以这里我比较推荐使用Xdbg,Xdbg经常更新,还有自动中文汉化。

顺便讲下简单使用:

随便拖入一个可执行文件,这可以看到四个窗口;

左上角的反汇编窗口,这里显示是我们要分析的程序的反汇编代码:

截取一行讲解00007FFA5A3C076A | 55 | push rbp | 看这里!!!

最右侧的00007FFA5A3C076A是内存地址,55是操作码,push rbp是汇编语言,最左侧是调试器或者我们添加的一些注释。

右上角的寄存器窗口显示调试程序的寄存器信息。

左下角的数据窗口:这里是内存地址的内容。最左边是内存地址,接着是对应地址的十六进制数据,最右侧是十六进制对应的ASCII码。

右下角是堆栈窗口,显示的是堆栈信息。

还有一些基本的指令操作:

F2 设置断点

F7 单步步入(遇到call会进入call调用的函数内部)

F8 单步步过(遇到call直接跳过)

F9 运行程序

F12 暂停程序

Ctrl+F2 重新调试程序(断点还在)

Ctrl+G 可以快速定位地址

静态调试:IDA

IDA是yyds,可以将程序反编译成伪代码,在调试分析的时候很方便。

IDA的基本指令和Xdbg的类似,一般使用IDA的基本流程就是,将待分析文件拖入IDA32或IDA64中,按f5进行反编译后分析伪代码。

简单看下,拖入一个可执行文件

这个是程序的流程图,入门题目逻辑还很清晰,按一下f5,

左边一栏的函数列表。右边是经过反编译的main函数。按一下tap回到流程图再按一下空格就可以查看汇编代码的窗口了。

关于IDA更详细的使用,可以自行查阅其他文章,也可以看《IDA权威指南》。不过我更加推荐上刷题网站,找一些入门题或是新生赛的题目练习,不会写没关系看看wp,当例题来完成。

PE文件分析工具

我比较喜欢用exeinfope,下载地址http://www.exeinfo.byethost18.com/?i=1

使用方法是,拖入待分析文件就好,可以查看文件位数或是否有壳。

pe工具蛮多的,都可以用。

十六进制编辑工具

Winhex和010editor 都很好用。

可以用于修复PE文件,或是一些魔改upx壳的修复。不过,嗯应该有点超纲,不着急,后面再看。

三、进阶一点

代码混淆

这里不做细讲:提一点知道有这个知识点就好。

代码混淆常见的是花指令和SMC,花指令就是在代码中插入一些垃圾数据,或是构造一些跳转语句来干扰静态调试。SMC是自修改代码,通过修改内存地址,使程序无法静态分析,但是在程序运行时会进行自解密,也就是我们调试的方法就是通过动态调试 调试到修改后的代码处,然后再dump’出来就好。

除了花指令和SMC 还有ollvm。ollvm里面主要有三个功能,待解锁。

脱壳

初学时遇到的upx壳一般都比较简单,可以通过upx工具直接脱壳。再难一点点的魔改upx壳,推荐一篇文章:UPX防脱壳机脱壳、去除特征码、添加花指令小探 - 吾爱破解 - 52pojie.cn

至于手动脱壳,也是后面再学啦。

四、其他以及刷题平台推荐

其他诸如C++逆向,C++异常处理机制,python库的使用(Z3约束求解,Angr符号执行),VM虚拟机逆向,Go语言逆向,Rust逆向,Wasm逆向,python字节码逆向的内容留待以后再解锁了。

刷题平台 buuctf,nssctf,攻防世界

我个人比较推荐nssctf,因为题目比较新,持续都有更新题目,而且它上面有很多新生赛的题目,绝对适合新手入门。讲讲我个人建议的入门方式,我上面说了那么多基础的知识点,可以先去百度谷歌相关知识点的学习,比如RC4,学完后,再去nssctf上找含有rc4标签的入门题

这也是我推荐nssctf的原因之一,nssctf上面有题目的知识点标签。

除了刷题平台,还有俩个我比较喜欢逛的:

52pojie和看雪论坛。推荐多看看。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包,需要点击下方链接即可前往获取

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

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

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

03-26
### 逆向工程与反编译概述 逆向工程是一种通过对软件的目标代码进行分析,将其转化为更高级别的表示形式的过程。这一过程通常用于研究现有系统的内部结构、功能以及实现细节。在Java和Android领域,反编译工具被广泛应用于逆向工程中。 #### Java逆向工程中的Jad反编译工具 Jad是一款经典的Java反编译工具,能够将`.class`字节码文件转换为可读的`.java`源代码[^1]。虽然它可能无法完全恢复原始源代码,但它提供了足够的信息来帮助开发者理解已编译的Java程序逻辑。Jad支持多种反编译模式,并允许用户自定义规则以适应不同的需求。此外,其命令行接口和图形界面使得复杂代码的分析变得更加便捷。 #### Android逆向工程中的JEB反编译工具 针对Android应用的逆向工程,JEB是由PNF Software开发的一款专业级工具[^2]。相较于其他同类产品,JEB不仅具备强大的APK文件反编译能力,还能对Dalvik字节码执行高效而精准的操作。它的核心优势在于以下几个方面: - **广泛的平台兼容性**:除Android外,还支持ARM、MIPS等多种架构的二进制文件反汇编。 - **混淆代码解析**:内置模块能有效应对高度混淆的代码,提供分层重构机制以便于深入分析。 - **API集成支持**:允许通过编写Python或Java脚本来扩展功能并完成特定任务。 #### APK反编译流程及其意义 当涉及到具体的APK包时,可以通过一系列步骤提取其中的信息来进行全面的安全评估或者学习目的的研究工作[^3]。这些步骤一般包括但不限于获取资产目录(`assets`)内的资源数据;解密XML配置文档如`AndroidManifest.xml`定位应用程序启动点;最后利用上述提到的各种专用软件重现整个项目框架供进一步探讨。 ```bash # 使用apktool反编译APK示例 apktool d your_app.apk -o output_directory/ ``` 以上命令展示了如何借助开源工具ApkTool轻松拆卸目标安卓档案至易于探索的状态下。 ### 结论 无论是传统的桌面端还是现代移动端环境里头,恰当运用合适的反编译解决方案都是达成逆向工程项目成功不可或缺的一环。每种工具有各自专精之处,在实际应用场景当中应当依据具体需求做出明智的选择。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值