AfKayAs CrackMe #2
弹窗去除
参考这篇文章
https://www.52pojie.cn/thread-612982-1-1.html
根据push指令,在内存窗口中转到 4067D4

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

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

然后运行,得到去除弹窗的软件,最后再ctrl + p保存一下
下面加载已经去除弹窗的程序
CrackMe分析
爆破

可以看到Name和Serial输入框
输入错误序列号,引发错误提示框,然后在反汇编中定位两个字符串

可以看到上方je关键跳

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

算法分析
输入Name:12345678 Serial:98765432
思路同第二个crackme,在函数头部的push ebp指令设置断点,然后一步一步往下跟

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

然后加2,得到711155


这里计算了 711155 * 3 = 2133465

减2得到 2133463

减去-15得到 2133478

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

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

总结出加密方法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}")
浙公网安备 33010602011771号