版权声明:墨痕诉清风 https://blog.csdn.net/u012206617/article/details/88083491
查找关键字符串:Registration
可以看到没有任何函数跳转到此行验证成功的代码
最上面是retn返回上层函数
下面两个jmp跳转到了别处
jnz也是跳转到了别的地址
尝试jnz改为nop也没有用依然失败
右键此行命令,查看哪里还调用了此行指令
双击进入
我们看到又回到了以前的代码
这是Delphi的特性
如果看到push 004A5841
那么下面的retn其实就是jmp 004A5841等价的指令
往上翻页,看到很多注册验证时出现的错误字符串提示
我们在中间下断点
调试跟中
如果进入动态库领空直接将call改为nop
如果此跳转不改,会进入报错的字符串,所有这里我们改为jmp
继续调试。如果发现跳转到报错字符串我们就改指令
如果错过了注册正确的指令,那么往回翻修改跳转指令,看跳转红线如下图,改为不可以跳转
至此成功
总结:
Delphi有很多的call
push 后面经常是地址,后面跟一个retn,其用意其实就是jmp push后面的地址
F8逐步调试
发现进入错误字符串指令则修改前一个跳转指令
发现跳过正确字符串指令则修改前一封跳转指令
直至镇正确