最近对逆向稍微有点兴趣,自学了一点。写这个文章主要用于记录学习的过程。
首先看一下这个程序,其实就是个简单的比对程序,主界面按左侧按钮进入Name Serial界面,点击【Check it Baby】,则弹出窗口【Sorry, The serial is incorect!】。主界面按右侧按钮进入Serial界面,点击【Check it Baby】,则弹出窗口【Try Again!!】。
先检查有没有加壳,看到【Borland Delphi】,很显然没有壳,可以直接分析。
先搜索字符串,很容易就找到刚刚那两个字符串
我们先从【Try Again】开始分析,找这个地址相关的指令
找到两条相关指令,但是不知道哪个是真的相关程序,于是我们加这两个指令上都打个断点。运行相关程序,我们发现程序并没有进断点。可能是没找对,我们重新查找,发现确实有另一个相同的字符串。
这次只有一个指令调用这个地址。
我们给他打个断点 ,这次点击【check】后,进入断点了。
现在,我们查看一下它上下文代码,发现是从这里跳转到后面来的 ,此处修改汇编指令为je
测试结果,成功
然后,看另一个界面的【Check】,发现它正好停到我们刚刚第一次打的断点处。我们观察上下文,发现和之前一个界面完全相同。此处也修改汇编指令jnz为je。
测试,发现没问题。直接保存修改