这边文章是根据自己的学习经验来说的,如有雷同,纯属侃B话,请不要太当真!
逆的基础是正
这是真理,它要表达的意识是,如果要学习逆向或者从事逆向方面的工作,你必须掌握正向开发技术。
开发即是正向工程,这是艺术,伟大的人创造了伟大的程序,向他们致敬!
逆向所做的事是将获取到的程序进行逆向分析,获取自己想要的。
在进行逆向的时候,如果对目标一无所知,那我们将处于被动,不知道自己该怎么下手。
初学破解时,通过搜索字符串,找到关键地方,当时隐约知道 这大概就是一个函数,里面有跳转分支,跳转是成功,不跳转是失败。。。后来搜索字符串没搜索到,然后有知道API断点,说是断下API,然后再返回几个CALL,就到了函数。再后面VB程序,JAVA程序,.NET程序,貌似套路都不一样了。
如果我们正向足够扎实,可以通过程序界面反馈的消息猜测作者是通过什么实现的,如果我们对各种编译器足够了解,对文件格式足够了解,对各种程序开发套路都比较了解,那么我们做逆向的时候,应该难度不大了。
正向的重要性可想而知!
想做挂,请学游戏编程
想过保护,请学内核编程
想脱壳,请学壳
想破解,请学开发
逆向与正向相辅相成,逆即是正,正即是逆!
如下图所示: