AfKayAs CrackMe #2

弹窗去除

参考这篇文章

https://www.52pojie.cn/thread-612982-1-1.html

根据push指令,在内存窗口中转到 4067D4

image-20260605102157368

再转到偏移4c处的地址 406868

image-20260605102307253

根据原帖描述,这两处字节需要取反,如图所示

image-20260605102412822

然后运行,得到去除弹窗的软件,最后再ctrl + p保存一下

下面加载已经去除弹窗的程序

CrackMe分析

爆破

image-20260605102611446

可以看到Name和Serial输入框

输入错误序列号,引发错误提示框,然后在反汇编中定位两个字符串

image-20260605102657986

可以看到上方je关键跳

image-20260605103251640

把je的地址改成下一条指令保存即可

image-20260605103411130

算法分析

输入Name:12345678 Serial:98765432

思路同第二个crackme,在函数头部的push ebp指令设置断点,然后一步一步往下跟

image-20260605104718221

这里计算了输入name的长度 8 ,后边计算了 8 * 15B38,得到 AD9C0 ,然后取Name的第一个字节,计算 31 + AD9C0的值,得到 AD9F1 ,转换成10进制得到 711153

image-20260605105242747

然后加2,得到711155

image-20260605202218971

image-20260605202244159

这里计算了 711155 * 3 = 2133465

image-20260605202616993

减2得到 2133463

image-20260605202730207

减去-15得到 2133478

image-20260605202906601

这里计算输入的98765432与2133478的商,用于比较

image-20260605203235808

后边用fcomp与1进行比较,到这里计算就结束了,可以把2133478输进去测试一下

image-20260605203825883

总结出加密方法Serial = (DEC(len(Name) * 15B38 + Name[0]) + 2) * 3 +13 (13是-2-(-15)得到的)

注册机编写

Name = input("请输入Name: ")
Serial = (len(Name) * 0x15B38 + ord(Name[0]) + 2) * 3 + 13
print(f"Your Serial: {Serial}")
posted on 2026-06-06 15:46  %HuTao%  阅读(5)  评论(0)    收藏  举报