逆向原理(破解教学)第一节 常用的调试方法
本帖最后由 soso 于 2014-11-15 21:26 编辑好吧,我可能不是写教学的料,不过应论坛的某位大大把自己的一些学习心得分享出来给大家。
大牛完全可以飘过,我是个新手,我只能按照新手的理解来写自己的一些学习心得。新手认为写的不好也飘过吧!!!{:5_185:}
既然是教学那么我还是循序渐进吧,。。其实也不是教学也是我的学习总结吧。
好了,学习前先发发我吾爱汇编论坛之路的一些牢骚。
逆向之路真心很难,因为很多时候我都有放弃学习的冲动了,但是无形当中又感觉不服输,既然会被一个程序调戏,心里那个不是滋味。又继续学习起来了。。。。太多废话了{:5_188:}。进入正题。
本来今天想从最基础的东西来说起的,好比介绍下汇编语言以及调试器以及OD基本指令等等,但是在吾爱汇编论坛看了很长时间,觉得没这个必要了。所以就不说了。
每次重新运行调试器时,调试都会返回到EP处,并从此处开始新的调试,使用起来相当不方便。大牛们们一般调代码时都会在某个重要的地址上设置一些点,使调试起来能快速转到设置点上。(因为调试软件不是一次就能成功的,也许你一个软件可能要调试几个小时要重复运行无数次)
所以,在一些重要的代码上设置点就像登山设置帐篷一样,登顶过程中需要设置多个营帐充当据点,如:大本营1,大本营2,大本营3,以及山顶营地。同样调试软件时如果在相应的位置上设置好据点,那么我们就可以逐步的来对软件进行分析,最终达到虐暴它的效果。这里就分享下我常用的4种调试方法(目测大家都已经会了,但是反过来想想,大家能很流畅的使用好这些方法么)
一、goto命令
比如说,我们调试某个软件的时候我们通过静态分析手段获取到了一些关键信息,比如100198DB这样一个地址标注了(登陆成功,按HOME呼出),那么我们就可以牢记这个地址。重新载入程序的时候直接输入ctrl+G,使用GOTO命令来直接到这个地址,为什么呢,因为这是一个很关键的信息,既然有登陆成功,那么我们向上分析,或者向下分析就可以达到逆向的目的。作为一个逆向分析者,你就可以这样认为。成功=失败,失败=成功。2者是互等的。有其一出现,那么另外一个在怎么隐藏都能被找到。(第一节课先说写基础吧,这软件逆向分析,以后会的学习中会介绍的)
二、设置断点
调试代码时,我们可以在有怀疑,或者暂时无法判断是否是关键的地址下使用Break point 俗称断点来调试程序。这种方法非常方便,而且效率很高。论坛里面的歪歪大牛,雨季大姐姐,鲨鱼大大,扫地大大等等貌似都在用设置断点法来调试软件,我们可以理解为排除法。
设置断点后,程序会运行到断点处暂停,那么我们就可以在有疑问这个跳转是否该跳的时候来设置断点,或者某个值的比较上来设置断点,也可以在CALL上设置断点,来进行逐步的排除分析。OD调试器中Alt+b就能显示你先过的所有断点,双击某个断点就能达到指定的代码位置。
下图中就是易语言的按钮事件,以及我分析出来的关键位置我都下了断点,如果程序有调试出错了,那么我重载程序的时候就可以利用这些断点快速达到当前的调试位置继续进行软件分析,或者进行疑问排除。
三、注释法
什么叫注释法,其实大家可以完全理解为,“自定义字符串搜索”。你在关键代码处自己标注,比如我找到一个关键位置,我能很肯定的判断他是需要跳转才不会出现错误,那么我就可以按键盘上的";"键来进行注释,注释后如果忘记了刚才你注释的在什么位置了,那么我们可以利用OD里的搜索用户定义的注释来快速选择到。
好吧,上面说了3点,大家可以分开来使用就逐步慢慢的运行在自己的调试上,就能体会到精髓了。其实我是不会告诉你们的,你用上面的三种方法结合起来,去调试一个软件,我敢说。这个软件就会变的很透明,被你分析的很透彻。
好了,今天说了很多很基础的东西,大牛啊,你们真心飘过吧!!你们看了会出现恶心,眩晕等各种恶劣情况的。
如果大家认为这一节很基础,那么下一节,我就吧我学习的“堆栈”,或者寄存器或者api钩取或者说些TEB结构体的一些常识分享出来。。。各位大大看后记得在本贴留言。需要继续的基础补充,还是直接来一些其他东西。或者,。。。。。叫停,让我别写这样的东西了。。。。都可以。。。
再次感谢,歪歪师父,雨季大姐姐,扫地师父,Shark恒大大的细心指导。。
吾爱汇编论坛:SOSO
支持哦 !!{:5_116:}
{:5_185:}{:5_185:}{:5_185:}{:5_185:}{:5_185:}{:5_185:}{:5_185:}{:5_185:}{:5_185:}{:5_185:}
大神。你坑爹,我啥都不懂
本帖最后由 轮回 于 2014-11-15 21:40 编辑
虽然很入门,,但是确实,如果这3个方法运用的好,基本上程序就变的很透明了!!!.。分析的很有道理,逆向确实因该把基础打结实,不然现在玩会了一个程序,另一个程序稍微变样子,就直接无从下手了!!!
我上面3个方法基本用的都很少。。。5555{:5_185:},以后一定要把3个方法结合在一起用,这样确实是神奇。。
学习了,对新很有用{:5_123:}
我去,我啥都不说了。。原来可以这样玩,
单步爆破了可可的DLL!!!
。。。。。看不明白啊!
感谢楼主!论坛有你更精彩 原创教程非常精彩 技术也很实用!
goto很常用,谢谢
温柔 发表于 2014-11-15 23:29
。。。。。看不明白啊!
很入门的一个东西,只不过总结了下经验。