老办法,先拖进OD中动态分析再说:
然后F8进行调试这时候发现了一个条件跳转函数jnz下面是说跳转未实现,那我们发现上面有个Key.dat文件,应该是授权文件,但是我们没有,我们可以尝试跳转,jnz条件是>>ZF=0,即修改值为1可以跳转,我们这里可以汇编进行无条件跳转,函数是(jmp):
然后继续调试F8:,又发现一个跳转函数jnz,按照老办法对上面进行无条件跳转:
继续F8进行调试下面,又发现了一个跳转函数jl,跳转条件是SF!=ZF,即SF值不等于ZF是跳转,顺着函数红线查看跳转位置,指向了key文件无效,这说明我们不能跳转,一跳转就指向无效提示了,这时我们可以nop填充汇编
然后继续F8调试,又碰到je函数,不过看跳转位置,不用修改,因为没有指向无效key文件
继续F8调试,又发现了jl跳转函数,又一看位置,指向无效key文件,果断nop填充
然后继续F8调试,发现了一个无条件跳转函数jmp,我们看一下指向,这是正确的,即我们成功跳转到授权成功画面了:
全选上述修改进行保存为reverseMe1.exe:
然后测试一下
原文件
修改后的文件:
这就类似于补丁,通过修改文件来修改执行方式.
不容易破解。license授权的原理也很简单,给入一些数据,只有厂商知道哪些数据是符合的,哪些是不符合的。如果license很容易被破解,那么就可以伪造license文件了。若二进制代码中只有一个点检查license,那很容易就被跳过。
授权文件是指,对一些应用软件为了防盗版,开发公司采取的一种自我保护方式,有时一些软件过期了,如果还要用的话,就必须使用授权文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)