crackme--Afkayas 1

这题需要输入用户名和序列号通关
image
由于知道这是个vb的程序,所以直接尝试用VB Decompiler打开,查看按钮点击的事件处理消息的反编译代码
很明显0x00402400地址的代码像是一个算法的计算过程,由于无法动态调试,所以配合x32dbg看一下var_1c和var_18这两个值是什么
image
先看第一个var_1c,此时的edi是我们输入的用户名的长度,对应上len(var_1c)那么var_1c就是我们输入的用户名
image
而0x00402436行代码中,edx上的值是我们输入的用户名的第一个字符的ascii码,对应的上Asc(var_18)
image
最后拼接上前缀AKA-结束战斗
注册机代码如下:

#include <stdio.h>
#include <string.h>
int main()
{
    char szBuffer[30] = {0};
    printf("请输入用户名:");
    scanf("%s", szBuffer);
    int result = szBuffer[0] + 97531 * strlen(szBuffer);
    printf("AKA-%d", result);
    return 0;
}
posted @ 2023-07-28 14:51  墨宸  阅读(16)  评论(0)    收藏  举报