[CrackMe]160个CrackMe之04
1. 如下界面,输入用户名和密码之后点击确定。
2. 先用OD来字符串搜索,搜索到如下字符串。
3. 关键位置,爆破法成功
爆破法破解成功,出现如下图。
4. 分析关键位置
查看其内存明显是0,但是下面有一些可以的内存
对应的账号和密码
其最后一行代码 黑头Sun Bird11dseloffc-012-OK123456 和用户名非常相似,其明显是 黑头Sun Bird 11 dseloffc-012-OK 123456 这四个属性组成的。
我们猜测其是注册码,猜测一波,发现成功。
5. 设置内存断点分析
1)我们现在再对其查看内存写入,查看什么时候写入,下内存写入断点,发现这是一个系统库,N多函数写入
2)一直跟,跟到CM.exe领空,如下:
3)再重新进入,发现其ebx作为一个指针指向一个结构体,其中里面的偏移是固定的,只要访问这块内存一定使用这种偏移。
明确之后再来重新分析算法,算法很明确:
存在四组数据,一个是用户名长度+5所获得的字符串,其余的如图所示,通过拼接来实现的。
6.注册机编写
其编写注册机比较容易,没有什么难度
#include <stdio.h> #include <iostream> #include <sstream> #include <windows.h> using namespace std; int main() { string userName; stringstream ss; cin >> userName; ss << string("黑头Sun Bird") << userName.length() + 5 << string("dseloffc-012-OK") << userName; string password = ss.str(); cout << password; }