Syclover逆向入门

简介

搜了很久发现似乎并没有对二进制安全的定义,从我的理解来看,二进制安全就是从安全的角度出发,在二进制的层面上分析程序的行为.

这个二进制层面是什么呢?运行一个程序,你可能用它来放音乐、播视频,但是它为什么放音乐,播视频呢?你可以说这是程序员们的代码写出来的.但是继续追问,为什么程序员的代码可以让它做到这些呢?也许这样不断的追问下去,大家会有种"我从哪里来"的感觉,但幸运的是在计算机的世界并不存在"我从哪里来"这样的终极问题,从CPU架构,到汇编指令,再到操作系统,API,最后是呈现在大家眼前的应用程序,每一个看似理所应当的功能,都离不开这一层一层之间的协调,而二进制安全就是研究这之中的每一层,只不过目的并不是理解为什么应用程序可以放音乐、播视频,而是进行软件破解、恶意代码分析、漏洞挖掘等安全行为.

书籍资源

网站

BLOG

如何学习

我推荐的学习方式是由点及面,由浅入深,从实践开始学习.

二进制入门很难,确实是这样,如上所说,二进制安全需要CPU架构、汇编指令、操作系统、API的知识,他们互相牵扯、浑然一体,你没有办法找到一个准确的切入点,因为当你想学习某一部分的知识时,必然会涉及到其他部分的知识,让你寸步难行.因此我的建议是下好工具,IDA或者OD,找一个crackme拖进去,然后哪里不会点哪里.

初期你会觉着很难,这个时候最重要的是克服自己恐惧的心态,将所有的困难一点一点的克服.当你被一个点困住时,它的背后可能牵扯到许多你尚不了解的东西,那么就把这些东西一并学习,不要只是着眼于解决这一个点.可能一次难以触及到所有的东西,或者难以理解很深入,这些都没有关系,如此反复下去,整座计算机世界的大楼都会在你的知识体系中建立.

逆向分析中逆向的工作大多都是工具完成的,我们的工作是分析,一定要多去看代码,不能眼高手低,刚进小组时muhe师傅和我说:XX师傅工作10年,看汇编比你看C++都快,你怎么和他比?这句话我一直记到了现在,逆向就是需要积累,如果你感觉你看不懂汇编,你感觉你看的很慢,你感觉逻辑很复杂你看不懂,如果你感觉你不适合逆向分析,那你就坚持10年,然后再来和我说.

学习了一段时间后,我推荐你再去看看一些比较"厚"的书,当你的知识体系构建的差不多后,你会觉着原来那些晦涩难懂的书并不是那么的晦涩难懂,你可以很快的看完这些书,帮助自己更深入的理解知识.

具体的学习路线,我并不打算推荐,老实说回顾我的学习路线:我先系统的学习了汇编,然后看完了《C Primer Plus》,之后我再去看一个程序,有一种在读源码的感觉.但我极力不推荐这样畸形的学习路线,我也不认为有多少人能复制我的学习路线.你可以先学汇编再学C,也可以先学C再学汇编,也可以看完汇编的条件分支再对比学习C的条件分支,可以在做crackme的过程中学习语言,可以选择看书也可以选择看视频,条条大路通罗马,选择适合自己的方式才是最好的方式.