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

     

  • 相关阅读:
    最大连续序列和
    打印有序链表的公共部分
    字符串最长子串大小
    jvm简介
    大浮点数乘法
    java代码的快速排序理解
    从内存分配分析程序初始化和存储
    时间复杂度
    Filter&Listener
    MVC开发模式&EL表达式&JSTL&三层架构开发
  • 原文地址:https://www.cnblogs.com/onetrainee/p/12736863.html
Copyright © 2020-2023  润新知