这两个指令分别是执行增加和减少的操作,如果是 INC 指令的话,就加 1,如果是 DEC 指令的话,就减 1。 我们跟之前一样用 OD 打开 cruehead 的 CrackMe。 EAX 在我的机器上面初始值是 0,如果你的机器上面不是 0 的话,你可以手动修改。 然后按下 F7 键,执行 INC EAX 指令,EAX 就会递增 1。 同样的,我们...
初步分析调试器显示的代码是函数的一部分,一个功能开始于 401362 弹出 No luck 的消息框。另一个功能开始于 40134D 弹出 Good work 的消息框。 如果突出显示该函数的第一行(地址 401362),提示框中会显示以下信息: 调试器提示调用来至于 401245,单击鼠标右键选择-Goto-CALL from 401245。 这里是典型的比较代码:...
现在我们可以看到OllyDbg的各个区段情况,接下来我们给MessageBoxA这个API函数设置一个断点。 由于我们单击错误消息框上面的OK按钮,就到达MessageBoxA函数的RET指令处,我们给该RET指令处也设置一个断点。 弹出错误消息框后,我们单击Aceptar(OK)按钮。就会断在MessageBoxA这个API函数的返回RET指令处,我们单击F7键单步。 下...
由于OllyDbg不允许我们输入CPU不可识别的指令,所以我们无法验证。但是程序员可以自己设计一些处理器并不支持的指令当执行到指令时显示相应的错误即可。最为典型就是INT3指令,INT3指令会产生一个异常,并且该异常会被调试器捕获到,比如,我们可以设置BPX断点来让程序中断下来,然后就可以对该 39、程序进行相应的控制了。
我们打开原始的OllyDbg程序,不使用重命名的,因为本章我们将对上一章的检测OD的方法进行延伸,因此让OD的文件名是OllyDbg.exe,保证该CrackMe可以检测出来OD。 我们用OD加载该CrackMe,接着将HideDebugger1.23版插件的IsDebuggerPersent选项勾选上。 这里只是为了防止该程序调用IsDebuggerPresent对OD进行检测。我们打开原始的...
所以这里大家遇到这个问题实在搞不定的话,就换XPSP2的系统吧)OllyBone这款插件的安装说明如下Copyollybone.dllandi386/ollybone.systoyourOllyDbgdirectory 至于Weasle这个插件,Importer.dll置于OD 大家在脱ASProtect这款壳的时候要格外,因为它会对INT3断点以及硬件断点进行检测,如果检测到的话,就会报错,那我们就只能据的...
我们用 OllyDbg 加载该 CrackMeA,这里我们使用原版的 OllyDbg,因为 Patch 过的那个 OD 添加代码有时候会失败。 我们单击工具栏中 E 按钮打开模块列表窗口,看看是加载的当前目录下的 MSVBVM60.dll 还是 system32 下的。 我们可以看到加载是当前目录下的 MSVBVM60.dll。
下面使用OllyDbg重新载入CrueHead'а(CrackMe的作者)的CrackMe。 我们可以看到反汇编的源代码,如上图第一条指令是PUSH 0,占两个字节,在这条指令上面单击鼠标右键选择Assemble. 或者直接使用快捷键-空格键,在弹出窗口的编辑框中输入NOP。 写入NOP指令后单击Assemble按钮。 这里我们可以看到OD设计的非常智能,考虑到PUSH指...
我觉得寻找序列号是最难的工作之一,特别是当我们遇到了强力的加密算法的时候,找序列号就更难了,我们先从简单的情况开始,慢慢的延伸到复杂的情况,逐步锻炼我们寻找序列号的能力。 这个部分我们专门讨论硬编码序列号,所谓的硬编码序列号就是不依赖于用户名来生成,总是由固定的字符和数字构成的固定不变的字符串,这种...
这两个指令分别是执行增加和减少的操作,如果是INC指令的话,就加1,如果是DEC指令的话,就减1。 我们跟之前一样用OD打开cruehead的CrackMe。 EAX在我的机器上面初始值是0,如果你的机器上面不是0的话,你可以手动修改。 然后按下F7键,执行INC EAX指令,EAX就会递增1。 同样的,我们可以使用DEC指令替换掉下面的指令。