二进制方向

二进制方向安全更关注底层原理,无论是安全研究或者红队渗透,对整体架构和底层原理的学习能力要求一定是非常高的,所以这也就是为什么在CTF中一般二进制方向(RE、PWN)都比较难入门

以下,我分享以下学过的内容和走过的弯路,如有更好的内容请指正:)

首先是计算机基础,二进制方向更关心操作系统、协议等更底层的内容

  • CS:APP
    • 相信相关专业的一定不陌生,如果培养计划没有更改的话,大三左右会开一门计算机体系结构的课程,其中大部分内容在CS:APP上都有,并且由于网安学院太新,没有服务器,学校无法为同学们提供良好的Lab环境,所以缺少了很多锻炼的机会,对于每一个同学来说,这门课是非常有必要且必须要完成的
  • Kernel
    • 无论是xv6,还是清华的ucore,亦或是南京大学的OS课程,其目的都是为了让同学更好的了解操作系统底层是如何实现的,而并非背PPT式的完成课程。我更推荐南京大学蒋炎岩老师的课程,更新、资料更多
    • 如有可能,请搭配陈海波教授的「现代操作系统:原理与实现」一起看,效果更好:)
  • Compiler
    • 计算机学院是有这个课的,所以为什么推荐CS呢(
    • CS143,经典,好用,详细
    • 其实对于学习编译器来说,先从写一个简单编译器开始比从词法分析、语法分析、语义分析、中端优化、代码生成这一套学下来更好,前者已经有相当多的教程了,比如七天写一个可以自举的简单C编译器,先整体了解编译器是干什么的,编译到底在做什么,然后再开始学习每一个环节会更好
    • 龙书依旧是经典,但是现在可能有更好的书?我不敢随意推荐,看的很少
  • Programming
    • 优先锻炼C/C++能力,tinySTL也好,Webserver也好,总之先模仿着写一个出来
    • 不要拘泥于C++98和C with STL了,现在已经是C++20甚至23了,26都在提案了(,学习更新的特性和用法
    • 适当写一写算法

在以上四个基础上,其实大部分就已经能有个比较感兴趣的方向了,下面以Compiler为主要方向继续介绍

  • Programming Language | Optimization
    • CSCD70,基于LLVM的中端Pass优化
    • NJU软件分析,一套基于Java的程序分析框架Tai-e,里面的Assignment很有意思,对数据流分析、指针分析能有个全面的了解
    • CodeQL,与程序分析相关的Datalog,Github有关的博客内容质量也非常高
  • Fuzzing
    • AFL,通过这篇文章可以了解Fuzzing的过程以及是如何在实战中进行漏洞挖掘的https://evilpan.com/2023/06/10/fuzzing-qrcode/
    • libFuzzer,LLVM的Fuzzing库
    • 阅读近年的Fuzzing相关论文,顺便一提,如果你想了解某一个方向的学术内容,可以在Github上面搜索「Awesome-xxx」,xxx是你想了解的内容

再往下Linux方向和Windows的Kernel方向其实看个人兴趣了,大佬可以都深入:)

results matching ""

    No results matching ""