网上冲浪发现该软件,仅供学习交流!!软件逆向思路
还是老样子,先进行查壳
没有保护壳(摩拳擦掌)
先正常打开,看看有没有什么可以利用的特征,比如信息框或者标签等,方便入手
有信息框,那我们可以从这儿入手
载入xdbg
F9运行,让他跑起来
然后ctrl+g输入
MessageBoxA
在该位置的返回处下条件断点(F2)
然后我们在密码位置输入一堆111方便后续观察
点击登录,弹出信息框,点击确认,我们发现xdbg断在了我们刚刚下断点的位置
我们在右下角堆栈找到提示内容,并单机后回车,让cpu窗口跳转到对应位置
我们发现在上面有个je跳转,会跳过该段代码,我们随即在je位置双击下断点
我们发现该软件出现CDK提示后,登录按钮没办法再次点击
所以我们在je位置留下断点和提示方便重新载入后可以很快的定位到
我们从新载入一次
再次F9运行并输入一堆111,点击登录
直接断在我们之前下断点的位置并提示跳转不会执行,我们直接在该位置空格,然后将je代码改为jmp,让他强制跳转
然后右键补丁,修补文件,省的每回都要在此修改
然后我们载入刚刚生成的文件(跳过CDK.exe)
同样ctrl+g在信息框函数处下断点
MessageBoxA
再次F9运行并输入假码
我们同样在右下角堆栈处找到提示内容,然后点击下方第一个返回并回车跳转到cpu处
我们发现是该call调用的,我们在该位置双击下断点并且再次运行
会在该位置断下,断下后我们F7进入该call进行查看,然后F8进行一步一步的查看
最终会发现该位置正好对应我们的提示框,上面的跳转并没有跳过,我们同样将该代码修改为jmp,让他强制跳转
继续F8一步步查看,在该位置同样发现登陆错误
我们双击jb跳转会发现他直接就会跳转到登录失败,那我们就不让他跳转
我们直接右键---二进制---nop填充
如果我们发现只要一动鼠标滚轮,代码就会发生变化的情况下,我们就在当前位置右键,在内存窗口中转到----选定的地址
并将该位置的十六进制数据记录下来
然后滚动鼠标滚轮
等他变化后在变化后的第一行位置右键,在内存窗口中转到----选定的地址
右键二进制编辑----编辑
将当前代码改为909090即可解决
我们发现如果一直跳转到最后才行进行该报错,那么他应该是先进行判断密码是否正确,如果不正确再进行逐一判断,那我们就直接往上面找
果不其然发现了有一个大跳转,我们在该位置下断点,然后再次运行程序看看会不会断下
果不其然在该位置断下了,并且即将跳转,那我们将该位置直接nop掉,再逐步运行
发现他开始写入配置文件了,那我们直接补丁该文件,然后直接打开补丁后的文件
还是随便输入假码并登录
提示不一样了!
看来是破解成功了
那我们使用同样的方法将该信息框给他nop掉,看看能不能进入界面
登录成功!
我已向作者提交该方法!!作者已经进行修复!请勿私信索要!