selph
selph
发布于 2022-07-21 / 242 阅读
0
0

新160个CrackMe练习:020-cosh.3

算法难度:⭐⭐

爆破难度:⭐

信息收集

运行情况:

image

查壳与脱壳:

无壳,MFC程序

image

字符串:

提示字符串

image

调试分析

静态分析从字符串入手或者从函数调用的交叉引用入手比较方便,可以查MessageBox函数的调用,也可以查提示信息字符串的交叉引用,这里从后者入手(方便),这个字符串大概率会出现在校验函数里

首先进行两个操作,判断编辑框输入的长度,用户名和序列号得是大于5,然后保存到局部变量里CString

image

接下来保存Name和Serial,分别对这两个值进行了一个运算:

image

再往下就是strcmp了:两个计算后的结果相同,则跳转到成功分支

image

注册机

#include <iostream>
int main()
{
    char name[20] = "selph1";
    char serial[20] = { 0 };
    int Len = strlen(name);

    for (int i = 0; name[i]; i++)	serial[i] = name[i] ^ (i + 1);
    for (int i = 0; serial[i]; i++) serial[i] = serial[i] ^ (i + 10);
    std::cout << serial;
}

效果:

image

总结

感觉已经看这种反汇编越来越快了


评论