[CrackMe]160个CrackMe之04

[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;
    
}

 

猜你喜欢

转载自www.cnblogs.com/onetrainee/p/12735344.html