二进制安全学习路线

决定学二进制,总结的一套学习路线。坚持,不懈,你一定能成功。

二进制安全未来就业方向:

  • windows(逆向分析、病毒分析、爬虫)不太推荐,要求高,岗位少。

  • Linux环境:二进制漏洞挖掘与研究,包括IOT、车联网、移动安全(漏洞挖掘,加固开发,爬虫开发)等(目前有一定需求,待遇还不错)。

学习的同时参加CTF比赛,以赛促学,学习CTF中的技术。学习道路并非一定顺序进行。多实战、多自我总结、规划。同时不要自我局限,同时接触一些其他领域将更有竞争力。

  • 基础(3-4个月):C/C++(侯捷C++教程、visual c++2013入门经典),C++数据结构,x86汇编(王爽汇编语言、李忠从实模式到保护模式)

    • 环境编程(1-2个月):windows/linux环境编程(精通windowsapi)。

    • 操作系统(1-2个月):操作系统导论、程序员的自我修养(必看)、CSAPP

    • 逆向工程入门(1-2个月):C++反汇编与逆向分析技术解密、逆向工程核心原理、IDAPro权威指南

  • 进阶阶段:

    • 移动安全:Java、安卓开发、NDK开发、smali/Darvik汇编、arm汇编、Android软件安全权威指南、frida框架、Xposed框架、epdf等技术。

    • windows逆向、病毒分析、病毒挖掘:木马、病毒、渗透技术等、需要深入了解windows内核、尝试审计winxp的泄漏源代码、历史高危漏洞分析复现包括MS17-010、cve2020-0796等。

    • 二进制漏洞分析、IOT安全、Linux漏洞挖掘:需要学习栈溢出、堆溢出、污点追踪、符号执行、fuzz、等等等等。

Windows平台逆向学习路线

总结自B站大佬:逆向黑客零基础入门路线以及学习资料和书籍_哔哩哔哩_bilibili

首先语言:肯定要懂c++,学起来比较平顺的是visual c++2013入门经典(第七版)十二章之前看完就行了,然后就是汇编语言基本上你能看懂就行了,王爽或者黑皮书

然后你就要了解操作系统,windows看精通windowsapi,看完才真正能够在windows下做东西了,但是用起来还有很多注意的地方更深入的了解内存和操作系统一些机制就要去看windows核心编程(第五版),这些都是基于windows公开api,还有非公开的api有windowsnt/2000本机api,这书中文基本上买不到了

应用层的开发你基本上懂了就可以去看内核的开发,这里有windows内核编程,包含内核驱动开发的东西,然后源代码现在微软泄漏了xp的源代码,可以对着去看他是怎么实现内存管理异常管理这些东西

内核开发会了以后可以去了解windows底层的实现的机制,可以去看windows内核原理与实践,也讲了很多细节性的东西,然后有本比较小的windows内核安全编程,适合快速地看一下,这几本书看完再加上源代码看的差不多再内核基本上你去一些杀毒软件公司当一个比较强的技术岗没什么太大问题了,那么windows的修行到这个地方就可以了。

逆向的话静态分析像ida这种工具使用还是比较简单复杂主要是在他的使用技巧上面,这里有idapro权威指南,然后你会发现逆向汇编看不懂干了啥,这里比较好的就是钱林松的c++反汇编与逆向分析技术揭秘,这本书看懂了你可以把汇编还原成c++,到了后期你一看到汇编代码脑子里马上就是c语言代码。除了静态分析以外动态调试讲得最全的一本书就是张银奎的调试软件,你有了这些调试的技术以后遇到问题你也好处理了,你也明白调试是什么样子的了。

有了这些东西你分析肯定能分析了,逆向也能逆向了,但是你要想怎么做的更快,更敏捷迅速更强,这时候就考验你对代码的识别能力这里你就要懂数据结构和算法。这里有两本黑皮书可以看,除此之外windows最重要的数据结构就是pe,这里可以看windowspe权威指南,这东西你看一眼目录将来用的时候可以拿来查。

基本上到了看这个书的时候你的学习能力已经非常强了,到了这个阶段基本上ok了,你的逆向分析能力开始上段位了,这个时候想让逆向能力更上一层楼上限就取决于你的开发能力,所以你肯定要有项目的经验。比较好的就是做一个像远程桌面的项目,可以用到p2p或者cs的技术,发现知识面不够可以去看《tcp/ip网络编程》,比较简单。然后再自己做个调试器。

接下来就是大量的分析对程序彻彻底底从头到尾捋明白了。业余学逆向最大的问题就是有时候能搞出来有时候你能搞出来,所以核心的问题就是什么时候都可以分析出来,这个时候基本上你就成功了

C/C++汇编学习建议

image-20221129004505817

2022高级安全攻防与渗透测试

image-20221129005340217

⬆︎TOP