下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理
注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)
用PEiD查看这3个连续程序,都是用VC6.0编写,没有壳
1.程序信息
程序就一个有用的按钮,点击出现错误提示框,程序显示的是光盘检测
扩展:光盘检测
就是程序运行时有可能检查下面信息;若检测符合要求,才会执行正常的程序流程
- 1.是否存在特定的磁盘?
- 2.磁盘里存在特定的文件?
- 3.检测特定文件的内容?
常用函数:
GetLogicalDriveStrings或GetLogicalDrives //得到所有驱动器的列表 GetDriveType //函数检查每个驱动器 CreateFile或FindFirstFile //检查特定的文件是否存在,或者检查属性大小等
GetDriveTypeh
函数返回值含义
2.按钮对应函数入口
因为函数入口找起来会有一点点麻烦,下面列举了2种方式,可以看到OD和IDA配合使用可以提高效率
- 1.OD查找函数入口
OD加载程序,找到错误字符串被引用的地址0x4013A4
通过地址0x4013A4
找到Check for CD
按钮的处理函数,起始地址为:0x401207
小插曲:找到按钮的入口稍微浪费一点时间,因为函数入口不是常规的
push ebp
,不过操作几次就可以找到,不难
- 2.IDA直接找函数入口
定位到错误字符串被引用的地址0x4013A4
,F5
执行反编译,一步到位,直接找到函数入口
3.分析注册按钮
直接上IDA分析后的截图
逆向成功需要的处理流程:
- 1.关键跳转1:遍历驱动器列表,找到一个非固定磁盘,比如U盘或者CD
- 2.关键跳转2:非固定磁盘里要有一个文件名 + 后缀为
CD_CHECK.DAT
的文件
4.验证
直接在U盘里里新建一个文件名 + 后缀为CD_CHECK.DAT
的文件),程序就可注册成功
由于手头暂时没有U盘,用OD
将IDA
分析中的2个关键跳转改成nop
和jmp
,间接验证一下IDA
分析的是否正确
将修改保存到文件
执行被修改后的文件,直接被爆破成功
5.参考
- 1.常用软件可以在这里下载:爱盘 - 最新的在线破解工具包 (52pojie.cn)
- 2.【反汇编练习】160个CrackME索引目录1~160建议收藏备用
- 3.160个Crackme_鬼手56的博客-CSDN博客
- 4.《使用OllyDbg从零开始Cracking》系列的文章也不错