老办法,先拖进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:
然后测试一下
原文件
修改后的文件:
这就类似于补丁,通过修改文件来修改执行方式.
据我所知有下面两种方法:
截取网络封包进行分析,伪昌历中造服务端,架设本地服务端,修改host文件,将原软件验证服务器地址指向本机,进行欺骗验证。
调试程序,跳过验烂拆证。
利用h a c k技术,这个就不说了,如果有这种技术那问题就迎刃而解了。
以上的前方法一般只适用于只是进行联网验证(如用户名、密码或注册码等),软件算法存在软件中,如果算法存在远耐山程服务器上,那就只能采用第三种方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)