zoukankan      html  css  js  c++  java
  • [CrackMe]160个CrackMe之09

    [CrackMe]160个CrackMe之09

    1. 常规通过栈回溯法

     2. 很容易追溯到爆破点,上面一个字符串比较函数

    用户名为 123456,则key为 0012F4B4  0026F214  UNICODE "381-8147-010"

    3. 分析key生成算法

    找算法的一个比较明显的特点就是找循环,因为key的生成一般来说会存在大量循环,我们就借助这个来分析它。

     循环获取和之后就乘以1234567890,之后再修改为'-',其最终获取的就是Key值了。

    4. 注意事项

      VB中的变量+0x8才是真正的值,因此分析内存时要注意。

      相乘后的结果是以浮点形式保存而不是整数,这可能给你带来分析困难,但是有Move等函数也可以分析出有关行为。

      VB中各个变量似乎不需要转换,通用,没写过VB,但这个应该留意一下。

    5.注册机编写

    #include <stdio.h>
    #include <iostream>
    #include <sstream>
    #include <windows.h>
    using namespace std;
    
    
    int main() {
        string userName;
        cin >> userName;
        ULONG64 sum=0;
        for (int i = 0; i < userName.length(); i++) {
            sum += userName[i];
        }
        sum *= 1234567890;
        stringstream ss;
        string key;
        ss << sum;
        key = ss.str();
        for (int i = 0; i < key.length(); i++) {
            if (i == 3 || i == 8) {
                cout << "-";
                continue;
            }
            else {
                cout << key[i];
            }
        }
    }

     

  • 相关阅读:
    MySQL高级查询总结
    MySQL数据库作业
    MySQLdump备份还原命令
    MySQL之Join
    MySQL课堂作业(一)
    Mysql数据库
    Js实例之简易计算器
    JS系统函数
    js课堂作业之转换月份
    C++ Name Mangling 为什么不编码返回值参数
  • 原文地址:https://www.cnblogs.com/onetrainee/p/12736863.html
Copyright © 2011-2022 走看看