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

     

  • 相关阅读:
    Egret Inspector google 插件 浏览器报错的解决方案:
    egret 项目 支持 es6 解决方案
    promise-abortable
    BaseSocket
    【译】async/await 优点、陷阱以及如何使用 (经验总结)
    WebSocket 断线重连引入心跳的原因
    node js 项目: 采用typescript 编写的好文章
    创建Node.js TypeScript后端项目 demo
    vs code 提高工作效率的办法:
    cocos2d-x 贝塞尔曲线(Bezier)用法详解
  • 原文地址:https://www.cnblogs.com/onetrainee/p/12735344.html
Copyright © 2020-2023  润新知