还是好友发给我的题目,(老师规定3道题目解出2道才及格),首先看一下运行情况。双击之后弹出的对话框如下,这个比较熟悉,因为之前做过一个类似的破解序列号的demo。首先尝试随便输入name和serial,发现没有提示框弹出,这个就很奇怪,没有遇到过。
不慌,反正不是我的任务(bushi),先打开OD来调试一下。使用智能搜索,找到成功的字样,然后进入该处。
分析前后处的代码,暂时没有头绪,那就先在前面打个断点,然后运行,但是发现运行不到断点处。应该是前面的API函数捣鬼,上网搜了一下资料,可以使用Nop指令使其无效化,但是我不会。
那就思考其他办法,换一个工具,熟悉一点的IDA。
用IDA打开之后找到success的地址,然后转回到graph view,找到对应的指向关系。
按照前面使用OD调试的情况,应该无论输入什么都不会跳转到success那里,也就是说,jl恒为非,那么可以考虑把它取非,这样就能跳转了。
修改之后保存,再次运行的时候就没有问题了。