注册码仅在堆栈里,用keymake一样制作出内存注册机的方法
注册码仅在堆栈里,用keymake一样制作出内存注册机方法看了某论坛版主回帖内容“只要你搞清了keymake中各个选项的含义,这个软件的注册码非常简单就能找出来。”
“中断地址随便找一个,就把你看到注册码时OD里显示的EIP值填入就可以,注册码选择内存方式,因为是堆栈上的,算一下堆栈中注册码的位置到ESP的差值,再钩选上宽字符串,地址指针选一层即可”
经过一下午实验,终于把注册机做对了。总结以下经验
77D5085C > 8BFF MOV EDI,EDI 断在这里,堆栈里出现的注册码
中断地址填断下的EIP地址77D5085C
次数1 指令填 8B长度 填 2 (8BFF是2个长度)
右边注册码里选择“内存方式”
然后填偏移,计算出现注册码的地址减去esp的地址
这是右下角堆栈里的
--------------------
0012CDA4 77D5082F /CALL to MessageBoxExA from USER32.77D5082A
0012CDA8 0044047A |hOwner = 0044047A ('软件注册',class='#32770',parent=00640212)
0012CDAC 005152C8 |Text = "注册失败,无效的注册码"
0012CDB0 003D5EF0 |Title = "qqtk"
0012CDB4 00000030 |Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0012CDB8 00000000 \LanguageID = 0 (LANG_NEUTRAL)
0012CDBC 0012CE60
0012CDC0 73D48044 RETURN to mfc42.73D48044 from USER32.MessageBoxA
0012CDC4 0044047A qqtk.0044047A
0012CDC8 005152C8 qqtk.005152C8
0012CDCC 003D5EF0 ASCII "qqtk"
0012CDD0 00000030
0012CDD4 003D5030 ASCII "1f53040f"
0012CDD8 0012D910
---------------------
双击堆栈里的0012CDA4,变为 $==> 那么注册码的位置变为$+30
所以偏移里写30,就不用计算器算了
现在说一下宽字符串(重点)
因为这个软件的注册码显示的是ASCII,那么不选宽字符串。如果是UNICODE就要勾选“宽字符串”
内存单元不勾选(待高人解答原因)
地址指针1层(再等高人解答2)
最后,生成exe到要破软件文件夹里。完毕!
keymake就是强啊 学习了 勾选寄存器选择esp没说。 人才啊!!!!!!!顶~ 又一个精品。谢谢楼主,太谢谢了,支持 学习了,谢谢楼主的精品文章 不错 不过来张图片的话更好 ~ 直观 谢谢介绍,如果加几图就更好了。