这个是 我们学校团队要求,,,, 让写一个二进制 (pwn/re)的学习路线,, 然后让大一 大二的学弟学妹们看看,,
我直接写到我博客里面 有什么错误或者问题还请各位指教
逆向学习路线
PC逆向方面
入门PC逆向,C语言必须要学的扎实,指针、链表一定要理解透彻,这是学习逆向的一个最基本要求。
所以要求要搞一个 链表实现的 学生管理系统
这方面学好之后,可以看一些OD(win32下的动态调试工具)以及IDA(著名的多架构跨平台静态反编译工具)的入门教程,可以对逆向进行一些初步了解。
入门了这两款逆向工具之后,这里是一个转折点,如果进行CTF方面的逆向,则推荐学习数据结构、算法方面的知识,CTF方面的逆向主要考察算法逆向,对于逆向实战考察的却不是很多。如果要进行真·逆向,则推荐看滴水逆向三期初级班视频,这个课程涵盖了很多很多知识面,基本上学完这套课程,逆向就算是入门了。
然后 中期就是做一个 软件的壳 压缩壳 保护壳 都可以
ps(如果想真正了解一样东西 就必须 自己做一个
比如想了解调试器 那么就可以 自己写一个简单的dos 调试器 根据网上的资料 还有 《软件调试》等等书
如果想了解壳 那么就自己做一个壳)
建议大一一年搞定这些东西
大二的话 就是根据自己的兴趣来搞 ,
如果想搞 CTF就可以 刷各大CTF网站的题目
参考 :为了CTF比赛,如何学习逆向和反汇编
https://www.zhihu.com/question/23810828
如果以后想搞接近逆向职位的实战 个人建议就是多学习 word 的那些文件病毒/漏洞的研究 然后C++还有 windows 内核开发一定要跟上,要多学习一些加壳 脱壳 反调试的东西 这是pc的基本功 然后多看看网上的视频 浸泡各大学习论坛
安卓逆向方面
安卓逆向入门容易,前期看一些*****之类的就可以入门了,主要是学会一些工具的使用,如Android Killer、APK改之理、JEB、GDA等、熟悉adb interface工具、适当学习一些java语法、Android开发,熟悉脱壳加壳、熟悉proguard反混淆、HOOK框架Xposed、Cydia、Frida等,JNI 混合编程也要有涉猎,对native层的逆向也是很重要的一部分,CTF中安卓逆向多是native层逆向,实战中native层逆向也很常见。
二进制漏洞:
二进制的话 的话 还是建议打两年的CTF 这样会对各种漏洞都会很有研究
pwn的基本功其实是 汇编+c 个人私心认为 pwn 和re 分不太开
汇编的话 熟悉汇编架构 然后传参之类的 搞明白
C的话 也是需要 懂指针+链表 要求要搞一个 链表实现的 学生管理系统 这方面搞定就可以和 逆向分开学习了
然后pwn的路线的话
个人建议入手先看 i春秋的
这个只有栈部分的内容 但是对新手比较友好
然后就是CTF wiki https://wiki.x10sec.org/
CTF wiki pwn这部分 讲的真的很不错
堆这方面可以 去看看 源码或者 看一下 翻译的 glibc内存管理ptmalloc源代码分析 这个pdf
然后就是各种刷题了
pwn这方面 前期就是多刷 多看wp
学pwn 需要一个良好的心态 = =
然后如果 不像 All In CTF 的话
可以 看看windows 下的漏洞 (0day+漏洞战争)
也可以用看看 iot 比如(家用路由器漏洞)
最后 就是 坚持,,, 然后的话 前期一定不要浮躁 建议前期 闭门造车
有了一定基础 刷题 或者学习路上提升的时候 一定要多和学长 还有圈内大师傅们多交流
还有一定要学会提问的艺术 (谷歌 百度 思考了 好久都没有出结果的时候 = = )
最后推荐几个 不错的学习网站 还有两个不错的图片
看雪论坛 吾爱** 先知社区 freebuf i春秋