下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理
注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)
文章目录
提示:这个CrackMe例子适合手动调试一下,因为涉及到了UPX脱壳,keyfile文件,DarkDe工具、Process Monitor、IDA和OD的配合使用;学一下逆向中常用工具的使用场景
1.脱壳+基本分析
运行程序,只有一个提示框弹出来,显示缺少一个Reg.dat
文件,没有其他操作了;查看程序介绍,需要keyFile文件、正确的用户名和序列号
脱壳
逆向前先了解一下程序的基本信息,PEiD加载后发现有UPX
壳,是Delphi
编写;直接使用upx -d 文件名
原始命令脱壳,脱壳后程序可以正常运行
DarkDe分析
因为是Delphi
程序,所以直接使用DarkDe
工具先分析一波
可以看到程序有3个对话框,看样式可以确定有一个是用户名和密码的校验窗口,因此,先要想办法去掉缺少文件的提示框(这个提示框也可以当成是NAG窗口)
2.KeyFile破解
KeyFile基础知识
一种利用文件来注册软件的保护方式,简单的是检查文件是否存在,复杂一点的就是检查文件里某个值是否符合要求或者文件相关属性是否正确等等
常用函数
FindFisrtFileA //基本上是用来遍历,检查文件是否存在时调用
CreateFileA、_lopen //确定文件是否存在,这个在逆向程序操作文件中非常重要的函数
GetFileSize、GetFileAttribute //获取文件大小,属性等函数在逆向KeyFile时也要十分注意
SetFilePointer、ReadFile //移动文件指针、读取文件内容
破解KeyFile的常用方法
-
1.使用
Process Monitor
等工具监视对文件的操作,主要关注对KeyFile文件名的操作 -
2.在相应路径伪造一个KeyFile文件;如果需要的话,用16进制工具编辑KeyFile文件
-
3.给
CreateFileA
设置断点,查看文件名指针和返回的句柄;给ReadFileA
设置断点,分析是怎么操作的文件;这步最好结合IDA一起进行分析提示:步骤3非必须,当要检查KeyFile文件里的内容时才需要
破解本程序
既然是缺少文件,那么程序启动的某个时刻一定会检查文件是否存在;常规的针对错误框中错误字符串的方法就不用了
直接使用Process Monitor
监控被逆向程序,设置好过滤项:
-
1.进程名是crackme.2.exe
-
2.路径中包含
Reg.dat
设置好过滤后,启动程序,过滤结果如下: