OD使用教程7(上)- 调试篇07

让编程改变世界

Change the world by program


  小甲鱼觉得,掌握逆向的思维尤为重要。 所以在咱的OD使用教程中,不单会告诉你怎么去逆向这个软件,小甲鱼更多想引导大家发挥自己的想象力,在理解原理的基础上用更多创新的方法实现突破。(此处应该有掌声)   好滴,咱一起来看一下今天的对手,正所谓知己知彼杀杀杀! 

破解的思路

  仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需要你掏腰包来获得更多的功能或者解除限制。 那么我们就可以逆向的来思考,如果该程序成功的注册后,那么程序的行为必将发生变化,如NAG去除了,如功能限制没有了等等。 也就是说,程序的代码的走法也会跟未注册的时候截然不同。因为程序的行为改变了,那么决定它所有行为的代码走法也会发生变化。  

小甲鱼在这里再举个例子:

未注册 -> 不跳过NAG窗口

已注册 -> 改编代码或条件,跳过NAG窗口

  说啥呢?也就是说我们只需要找到这个判断是否需要“跳”的条件即可。 另外补充说一点,一般我们说条件跳转,鱼油们一定会想到:cmp XX,XX 然后jz或jnz或jl等。   其实还有另外一种形式,叫做可变跳转。 小甲鱼描述能力仅限于美女,还是举个例子吧: 例如jmp eax,无疑是一个直接的跳转。但是我们知道eax是一个寄存器,对于高级语言的说法它就是一个变量,里边的值随时可以改变。  

那么完全可以这样:

未注册 -> eax == 004013A0

已注册 -> eax == 00401354

  所以这个例子告诉我们,世界很大,也很邪恶,坏叔叔很多,他们鬼点子更多,要实现技术的突破,就要打破传统的思维模式。