crackme -002

打开后也是输入账号和序列号来进行判断的。

在弹框处设置断点,打开堆栈

从msvbm50可知,这是一个vb写的程序。右键显示调用

调用为加断点的那一行,上边有一个jmp的跳转。,应该是无条件跳转到注册正确的call那里。那么推测会有一个判断并跳转到jmp的下一行的指令。向上找果然找到了。

这有一个je指令,当ZF为1时跳转。即和上边的test有关。

单步测试,果然过了test以后ZF变成了1。test为与运算。

在je之前将ZF改成0,测试成功。

因此把je 这一行NOP掉就可以了。

注册算法的话,向上找到这段程序的开头开始逐步分析。

上边乘了0x17CFB,在这里有一个溢出跳转

经过上边的call以后,出现了“585235”

此时已经出来了输入的654321.

先得到注册码的长度, 然后取出注册码第一个字符的ANSI值cName, 让后计算长度*0x17CFB+cName,将计算的值转换为10进制文本,前面加上”AKA-”组成最后的注册码。

发布了125 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Fiverya/article/details/100939777
002