qqc 发表于 2011-3-7 20:41

注册码仅在堆栈里,用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到要破软件文件夹里。完毕!

Kiζs~乄 发表于 2011-3-7 21:18

keymake就是强啊

小曲流水弯径 发表于 2011-3-7 21:09

学习了

yjd333 发表于 2011-3-7 21:29

勾选寄存器选择esp没说。

532098613 发表于 2011-3-7 21:42

超级战士 发表于 2011-3-7 21:49

人才啊!!!!!!!顶~

sgjf2010 发表于 2011-3-8 00:05

又一个精品。谢谢楼主,太谢谢了,支持

4709634 发表于 2011-3-12 11:15

学习了,谢谢楼主的精品文章

疯癫小子 发表于 2011-3-12 12:46

不错 不过来张图片的话更好 ~ 直观

cqcbc 发表于 2011-3-17 19:33

谢谢介绍,如果加几图就更好了。
页: [1] 2 3 4
查看完整版本: 注册码仅在堆栈里,用keymake一样制作出内存注册机的方法