逆向工程入门

本篇只是为初入逆向工程大坑的新人们指出方向学习,没有实质性的技术。总的来说,基础才是最重要的。

逆向工程入门应该算是所有学习方向中最难的。但是选择了这一方向的请不要放弃,一旦学成,必定会是大神级别的存在。
那么,逆向工程的入门需要学习什么?

1.c语言

学习c语言是逆向工程的基础。如果是学习渗透方向的,也许可以选择python作为自己的第一门编程语言。但是作为逆向工程方向,第一门入门的语言没有选择,只有c语音。深厚的c语言功底是逆向工程的基础。如果想学习逆向工程,务必要有深厚的c语言功底。逆向工程中c和汇编就是好比是一颗树的根部和树干。没有扎实的基础是无法继续更加深入的学习的。
======> 推荐书籍:《c primer plus》业界经典

2.汇编语言

作为逆向工程的2大基础语言。汇编语言也是一切其他学习的基础。如果你认为已经具有深厚的c语言功底。可以清楚的理解指针的指针,数组指针,指向数组的指针,函数指针等等指针的概念之后,就可以开始学习汇编语言的。汇编语言是一门很非人类的语言,因为汇编语言其实就是非人类的二进制机器语言的另外一种表达形式而已。但是学习逆向工程,你就无法逃避学习汇编语言。

学习汇编语言,其实不只是入门而已。汇编语言是需要不断学习研究的。可以按照一下的路线学习

a.16位汇编
16位汇编语言可是老古董了。不过作为初始汇编的人来说还是很合适学习的。 =====> 推荐书籍:王爽的《汇编语言》经典必看

b.32位汇编
intel x86指令集的32位汇编是现在最主流的指令集了。它继承了16位的汇编指令并发展而来,是现在最主流的汇编语言了。 ======> 推荐书籍:钱晓捷的《基于Windows环境的汇编语言程序设计》个人感觉继续学习32位汇编不错的一本书。

32位汇编语言学习完成之后,就已经是算汇编,或者是逆向工程入门了。如果希望继续学习汇编,可以从以下方向中自由选择。
1.64位汇编语言。
32位汇编再进化,如今愈来愈多的软件支持64位的指令集。相信终有一天会代替32位汇编成为主流的汇编语言。
2.arm指令集汇编。
安卓逆向必备,许多的移动产品cpu都是使用arm指令,如果有兴趣可以深入学习
3.还有很多指令集,有兴趣可以自由的学习

其实到了这一步,其实已经可以算作是逆向工程入门了,接下来就是继续向更高的方向前进。
下面的是逆向工程几个方向分支。感兴趣就去学吧

1.window逆向工程

想继续在windows平台下玩耍的话可以选择这个分支。学习软件破解与加密技巧,游戏外挂以及反外挂的技术。病毒的编写以及分析的技术。其实都是建立在逆向工程技术之上的。
要学windows逆向,首先要对windows的api或者说是系统函数要有详细的了解。推荐两本书:
1.《windows环境下的32位汇编程序设计》(又名《琢石成器》)以汇编语言讲解WindowsApi,必看。
2.《windows程序设计》window开发界的圣经,不变的经典。

如果对windows的api有了一定了解之后。可以开始学习windows上逆向工程的更高级技巧了。继续安利两本书:
1.《加密与解密》看雪出品,必属精品。不可多得的逆向精品书
2.《逆向工程核心原理》评价挺不错的书,值得一看
除了看书之外,就是可以找一些ctf或者creakme来练练手了。学到的知识只有通过实践才能够完全掌握。

2.漏洞利用与防御

0day攻击。网络安全领域最可怕,最难以防御,后果最严重的攻击方式。掌握着未被公开的0day漏洞的黑客无疑是黑客中最为顶尖的存在。如果你学习linux,希望成为被人崇拜的2进制大牛,就向着这个方向前进吧。

这个方向资料实在不多,只有一本:《0day安全》依然是看雪出品。因为已经绝版,所以将就看盗版的吧。

3.安卓逆向

随着智能手机的普及,逆向工程也开始进入安卓手机平台。如果希望从事安卓逆向的人,可以学习此方向。
至于学习方法嘛。。。。首先,你要学会安卓开发。其次,你要学会arm指令集。然后开始安卓逆向之路。有一本推荐大家《Android软件安全与逆向分析》还是看雪出品。

相信对于初学者来说,这么多的方向已经看的够让人眼花缭乱的了。不要惊慌,从最初的c语言开始吧。坚持着一步一步向前。你会慢慢发现逆向工程的世界比我写的更加精彩。

本人能力所及范围内就只有这一些了。如果有疏忽以及不正确的地方,欢迎指正