zoukankan      html  css  js  c++  java
  • [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;
        
    }

     

  • 相关阅读:
    14-快速排序
    linux上挂在windows的共享文件系统,大小写不敏感
    【mount】linux挂共享盘
    监控windows服务或者进程
    自定义时间间隔
    示例
    filebeat
    kafka
    文档碎片
    简单DOM操作
  • 原文地址:https://www.cnblogs.com/onetrainee/p/12735344.html
Copyright © 2011-2022 走看看