为什么学习逆向工程?

来自通约智库
跳转至: 导航搜索

  在2007年初,我国相关的法律为逆向工程正名,承认了逆向技术用于学习研究的合法性。获悉这个消息,国内软件逆向界人士纷纷奔走相告,雀跃不已。众所周知,我国的软件产业落后于西方列强,甚至落后于邻国印度和日本,而这个举措意味着我国的软件研发人员如果利用逆向技术去研究学习国外一流软件的开发方法,那么我国的软件技术将会有极大的提升,此举何其开明也!

  然而,逆向技术相关的培训实在少之又少,而各个大专院校虽然开设计算机相关专业,但是对此技术也尚未重视。社会上虽然涌现出大量软件开发培训机构,但是以培养软件蓝领为主要目标,对逆向技术更是避而远之。时下的IDE是极其优秀的,拜其所赐,市面上的程序员多出十几倍,但是又有多少能理解程序内部的机制呢?虽然很多人认为,去研究程序的内部原理,就是破坏了“黑盒子”封装性。但是如果只是能够在别人搭建好的平台上做开发,那么就只会被别人牵引技术方向,而自己始终只能追逐技术。如果我们能够充分掌握逆向分析的方法,就可以在一流的软件里直接学习各类先进技术,取长补短,为我所用。若如此,实为我国软件产业之幸事。

怎么学习逆向工程?

  逆向工程是一个综合性和实践性很强的学科,最需要的是耐心和毅力。初学者往往一开始就拿一个成熟软件去反汇编分析,结果被海量的指令和错综复杂的流程搞得晕头转向,然后大多数人就中途放弃了。

  最好从自己用汇编写的“Hello World”程序开始。然后在学习的过程中逐步将难度升级,一点点去看懂流程特性。等把汇编程序看顺眼了,就开始研究C/C++的流程特性,一边在老师的带领下去学习研究,一边勤做笔记、总结方法。几个月下来,就会形成属于自己的一套分析代码的风格或习惯,这样以来,任何软件在你眼中都没有了神秘感,只要你愿意投入时间去分析就一定会得到你所需要的知识。

来自:dongxuezhu