|
by CNwangba
http://www.ccgCN.com/bbs/viewthread.php?tid=1266
因为工作关系,本人断断续续接触逆向有几年了,想跟喜欢逆向的朋友讨论讨论这个问题.
本人菜鸟一个,刚开始接触破解(crack/0daying)那阵子,一心只想通过修改jnz,jz之类的关键跳转达到破解目的.于是只是追求去找关键破解点.根本没有想过弄明白整个软件的流程.(有时也不需要弄明白.)那时,自己心里对逆向还看不上.
工作以后,没有太多时间来学习破解,工作就是写代码来满足客户的需求,客户满意了,工作就干得好,客户不满意,工作就不行.唉!~~~偶然上网看一下,都只有膜拜高手的份,好想像高手们那样拉风地发几个精华帖.可实在是心有余而力不足.因为现在的软件基本上都是加了保护,我等菜鸟连简单的壳也脱不下,从哪里下手破解啊?虽然有些壳可以脱掉,但那种连壳的原理也没有懂就把壳脱了,这不是我所追求的境界.加上工作中也发现自己没有突破的技术对手居然突破并且成熟了.压力也随之而来.怎么办?
抱着试一试的心态,我部分逆向了对手的软件,通过努力解决了自己软件的不足之处.因为在最绝望的时候帮上忙,所以我开始慢慢喜欢逆向了.当然还要学习提高,所以我就是来跟大家讨论如何更有效率地逆向.
我自己的想法如下:
1.逆向之前先确定目标——是要完全逆向,还是只要逆向关键点.如果是后者,那么最好先用动态调试工具确定位置.然后再大致逆向一下.不过我因为太菜,往往是先打算不全部逆向后来又不得不全部逆向的.
2.界面部分一般不逆,因为这部分代码编写也不是很难,而且体积很大会得不偿失的.
3.逆向软件时,应该先猜想一下,上网搜一搜了解一下软件的功能.如果水平够好,可以想一想实现代码.再来逆向.不要追求一开始就弄懂软件的来胧去脉(如果你够牛X,我承认自己错了),先得到伪代码(我是借助F5),把软件的代码逆出来,然后再认认真真地去整理,校正,看懂,加注释.
4.逆向也要依靠软件功底,多看别人的源代码,多动手写代码,了解相关方面的知识才能少走弯路.如果你是那种别人加了注释的源代码你也没看懂的那类新手,逆向时肯定也是看不懂的.
5.逆向不是解决问题的全部办法,逆向是为了更好的应用,不能完全照抄,要有所创新,才能赢得市场.
6.IDA插件 F5功能确实很强大,但是在用F5之前一定要注意先保存一下。要不碰见某些复杂情况,会把先前辛辛苦苦弄的成果给搞乱。没办法,谁叫偶用不起正版的IDA呢?
|
|