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

 

猜你喜欢

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