AfKayAs CrackMe #1

爆破

image-20260604105802871

查找字符串,定位到YouGetWrong的反汇编,然后往上翻,找到je跳转

image-20260604105851490

它决定了弹出哪种提示框

改成je 下一条指令的地址

image-20260604110021651

然后提示You Get it

image-20260604110006360

ctrl+p选择修补文件就可以了

算法分析

在上边这些代码中看不出明显的加密逻辑,所以跳到函数头部的push ebp指令,从这里开始一步一步跟踪。这里输入Name:8888 Serial:9999 触发断点

image-20260604115514939

当跟踪到计算字符串长度这个函数的时候,需要停下来分析一下

image-20260604115757750

这个函数把“8888”的长度4给了edi,然后做了一个乘法计算,edi保存了 4 * 17CFB 的值 5F3EC

后边Ordinal函数取了"8888"的第一个字节 38,然后把这个值与上边的5F3EC相加,得到 5F424

image-20260604120238687

后边的 StrI4 把这个值从16进制转换为10进制的390180

image-20260604120523678

继续往下跟,StrCat把字符串 "AKA-" 和 390180 拼接起来,最后再用StrCmp比较我们输入的 9999 和 "AKA-390180"

image-20260604120649042

因此可以总结出Serial生成的算法

'AKA-' + DEC(len(name) * 17CFB + name[0])

验证一下

image-20260604121123383

注册机编写

据此写出注册机如下

Name = input("请输入Name: ")
Serial = 'AKA-' + str(len(Name) * 0x17CFB + ord(Name[0]))
print(f"Your Serial: {Serial}")
posted on 2026-06-04 13:00  %HuTao%  阅读(4)  评论(0)    收藏  举报