news 2026/4/15 12:26:56

2025年网络安全黄金赛道:年薪30万+,小白/程序员必看收藏的学习指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025年网络安全黄金赛道:年薪30万+,小白/程序员必看收藏的学习指南

一、软件逆向工程的简介

(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 反编译效果或者程序有混淆,不能读懂其中逻辑时,应针对关键函数采用动态分析方法,通过动态调试跟踪函数操作来确定其内部逻辑。动态分析是静态分析的补充。

静态分析和动态分析没有孰优孰劣,需要具体问题具体分析,因此两种分析方法都要尽量掌握。如果读者暂时不能掌握动态分析方法,也一定要熟练掌握静态分析方法。

如何学习黑客/网络安全?

网络安全不是「速成黑客」,而是守护数字世界的骑士修行。当你第一次用自己写的脚本检测出漏洞时,那种创造的快乐远胜于电影里的炫技。装上虚拟机,从配置第一个Linux环境开始,脚踏实地从基础命令学起,相信你一定能成为一名合格的黑客。

如果你还不知道从何开始,我自己整理的282G的网络安全教程可以分享,我也是一路自学走过来的,很清楚小白前期学习的痛楚,你要是没有方向还没有好的资源,根本学不到东西!

下面是我整理的网安资源,希望能帮到你。

😝需要的话,可以V扫描下方二维码联系领取~

如果二维码失效,可以点击下方👇链接去拿,一样的哦

【CSDN大礼包】最新网络安全/网安技术资料包~282G!无偿分享!!!

1.从0到进阶主流攻防技术视频教程(包含红蓝对抗、CTF、HW等技术点)


2.入门必看攻防技术书籍pdf(书面上的技术书籍确实太多了,这些是我精选出来的,还有很多不在图里)

3.安装包/源码

主要攻防会涉及到的工具安装包和项目源码(防止你看到这连基础的工具都还没有)

4.面试试题/经验

网络安全岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)

😝需要的话,可以V扫描下方二维码联系领取~

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

如果二维码失效,可以点击下方👇链接去拿,一样的哦

【CSDN大礼包】最新网络安全/网安技术资料包~282G!无偿分享!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 16:57:39

基于SpringBoot的智慧农家乐管理系统毕业设计项目源码

题目简介 在乡村旅游数字化、农家乐运营精细化需求升级的背景下,传统农家乐管理存在 “预订混乱、资源调度低效、客群分析缺失” 的痛点,基于 SpringBoot 构建的智慧农家乐管理系统,适配游客、农家乐经营者、乡村文旅管理员等角色&#xff0c…

作者头像 李华
网站建设 2026/4/9 0:13:31

基于微信小程序的执业药师题库系统毕业设计项目源码

题目简介在执业药师备考场景移动化、刷题需求个性化升级的背景下,传统题库存在 “适配性差、刷题无规划、错题管理低效” 的痛点,基于微信小程序构建的执业药师题库系统,适配备考考生、题库管理员、教研人员等角色,实现章节刷题、…

作者头像 李华
网站建设 2026/4/13 17:07:23

Vue——Vue 3 + Vite + Ant Design Vue + Pinia 数据库系统技术重难点解析

Vue 3 + Vite + Ant Design Vue + Pinia 数据库系统技术重难点解析 在开发数据库管理系统的过程中,我们遇到了一些技术难点,本文将围绕这些难点展开讨论,并提供相应的解决方案和示例代码。 一、复杂表单状态管理与字段权限控制 技术难点 数据库系统中的表单往往具有复杂…

作者头像 李华
网站建设 2026/4/7 19:21:34

概论统计思维导图

概率论与数理统计思维导图 一、概率论基础 1. 随机事件与概率 随机试验:可重复、结果已知但不确定样本空间(Ω):所有可能结果的集合随机事件:Ω的子集 基本事件:单元素子集必然事件(Ω):一定发生不可能事件(∅)&#x…

作者头像 李华
网站建设 2026/4/14 15:42:33

【导弹】基于matlab模拟反舰导弹对移动航母的打击

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码获取及仿…

作者头像 李华
网站建设 2026/4/4 5:28:23

SVG 路径详解

SVG 路径详解 SVG(可缩放矢量图形)是用于描述二维矢量图形的XML标记语言。在SVG中,路径是构建图形的主要元素之一。本文将详细介绍SVG路径的概念、语法、常用命令以及路径的绘制技巧。 一、SVG路径概述 SVG路径是SVG图形的核心,它由一系列的命令和参数组成,用以描述图形…

作者头像 李华