标 题: 【原创】内存注册机的工作原理及masm源码
作 者: 王仁军
时 间: 2007-06-05,15:22:21
链 接: http://bbs.pediy.com/showthread.php?t=45821
[编程工具]masm32(9.00)+RadAsm2.2.0.9
[调试工具]OD1.10[调试平台]WinXP/SP2
先说明一下,我编写这个内存注册机只是为了学习一点程序的调试原理,它的实用性不说也罢,因为现的软件保护谁都知道,想这么容易取得注册码,门都没有,这也许正是刘健英放弃KeyMake的原因吧。我不想,也没有能力去步他的后尘,只是好奇,玩玩而已。
内存注册机实际是个超小的调试器,以调试的方式打开目标软件进程,在特定的地址设置 int 3 断点,程序运行到断点处被挂起,这个时候就可以用 ReadProcessMemory 或 GetThreadContext 函数取得目标软件特定内存或特定寄存器中的内容,显示出来就好了。
只是前面提到的地址、寄存器等只有你跟踪了目标软件的注册算法后才会得到。根据注册算法的不同,注册机中的某些代码也可能要调整,所以我的代码对不会编程的人来说就是1000%的垃圾。
有些软件加了壳,不过我终于想出办法来对付它了,有壳我照样可以断下来,取到我想要的数据。杀毒软件对我的注册机也不感兴趣,大概是太臭了吧~O~。
http://pan.baidu.com/netdisk/singlepublic?fid=140393_1958810457
============
使用 修改点:
1、inc 文件里的 szEXEName、BreakPoint (后面的h别忘记了)、OldCode、Buffer(根据注册码长度改)
2、asm文件里的 DlgProc 函数里的 ReadProcessMemory,wsprintf 根据注册码在哪,使用哪个方式来得到注册码。([ebx].regEax 表示eax 寄存器)
3、下载 RadASM http://www.onlinedown.net/soft/26097.htm 导入项目,编译即可。