crackme破解笔记(2)
本帖最后由 Nx3sdHy 于 2014-10-19 05:08 编辑说明:
此文为逆向cm的一个笔记,记录一路的成长,因为我本身就是一个新手,所以笔记会从一个新手的角度出发,所以适合和我一样刚接触逆向的新手学习。
由于本人工作原因及水平有限,有可能每天更新,也有可能每周更新,每月,每年。。 请见谅。
笔记中有任何错误的地方也请大家多多指正!
笔记中用到的cm均来自适合新手逆向的160个cm(非160cm的会提供附件)。
首先peid查壳,无壳,vb程序。
od载入,将程序运行起来,输入用户名和假码,点击ok,弹出了错误的对话框。
接下来,我们用f12暂停法。
弹出错误对话框后,不要关闭对话框,回到od按快捷键f12暂停程序,或者点击如图按钮:
程序直接暂停了,接下来我们alt+f9返回到用户执行代码:
这个时候程序还是暂停的,我们回到程序,点击错误提示的确定键,此时回到了程序领空,那么上面就是信息框的call了:
我们来看看有没有跳转是可以跳过这个call的,我们向上翻,没多远就发现了一个jmp跳转跳过我们的call,我们知道,jmp是无条件跳转,那为什么还会运行这个call呢,这说明还有跳转跳过了这个jmp,没有让jmp执行:
那么继续往上翻,果然在不远处有个je的条件跳转是可以跳过jmp的:
既然找到了关键跳,那么我们直接nop掉就可以了,但是我们这次尝试追码。
在条件跳转的上面肯定有注册码的比较,然后通过比较的返回值来决定je是否跳转,那我们继续往上看,果然,再上面就找到了比较的关键call,那我们在关键call下断:
我是如何知道这个call就是关键call的呢,我们看上图,vbstrcat,这是个字符串连接的函数,上面有敏感的字符aka,再看下面几行,vbstrcmp,这是字符串对比的函数,所以我们大概就能确定这是关键call了!
接下来运行,程序被断下,这时我们看堆栈窗口,看到了我们的假码,上面还有个aka开头的可以字符串,如果不出意外那就是真码了:
复制到剪切板,我们运行程序把这个可疑的字符串输入进去看看是不是真码,点击ok,成功!这就是真码。
总结:
f12暂停法的简单使用
通过函数名称来判断关键call追码
笔记中的任何问题可以私聊我交流,欢迎大家与我交流。
{:5_121:}多发点教程。升级快;
都是新手差距咋就那个大呢
严重支持一个
都是新手差距咋就那个大呢{:5_118:}
严重严重滴支持一个!
总结的非常详细,感谢作品!
好像我发过这个CM
请问调试文件在哪里下载?
彩虹 发表于 2014-10-20 17:14
请问调试文件在哪里下载?
论坛搜索一下160个cm 第2个就是 我手机上的,有空传附件。
楼主最好就是每次发图文的时候最好也传上附件,好让我们这些新手练习。不然就有看的份,支持你!
彩虹 发表于 2014-10-20 20:44
楼主最好就是每次发图文的时候最好也传上附件,好让我们这些新手练习。不然就有看的份,支持你!
好的,下次我会加上,多谢支持!