- UID
- 6086
注册时间2005-12-29
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
现在很多软件采用一机一码的注册方式,其中又以取硬盘ID的注册方式居多
我们知道,WIN32下的应用程序与系统打交道,都是通过调用API实现的,那么注册软件是通过什么来取得
硬盘ID的呢?我想也是通过API吧?
如果我们挂勾这个API,也就是常说的API HOOK技术,让这个API返回我们指定的硬盘ID号,不就
变相地达到了修改硬盘ID号的目地!我相信这个也应该很容易实现的.
好,假如我们现在有一个软件的正版KEY,它对应的硬盘ID号是159544386,我们写一个DLL(key.dll)
它的作用是修改载体(注册程序)取硬盘ID的API,使注册程序调用它时只返回我们指定的硬盘ID号(159544386)
我们现在要做的是,怎么让注册程序加载这个DLL,不知道这样可以吗?
我们先用Stud_PE查看注册程序入口点和Functions中LoadLibraryA的地址,记下,同时也记下这个地址,
用OD载入程序,点右键,搜索→二进制字符,出现一个搜索栏,在HEX栏里输入大量的0,点确定找到程序空
白代码处,我找到了这个地址:"00545B7E 0000 add byte ptr ds:[eax],al" ,下面有很多这样的空白行
就用它了,记下先,来看看我记下的东西:
LoadLibraryA的地址为:0054641C,原入口点为004FF657:,空白代码为00545B7E;
然后我们在找到的空间处顺序出写入下面的代码:
00545B7E push 00545B90 ;参数入饯
00545B83 call dword ptr[0054641C] ;调用LoadLibrary加载key.dll
00545B89 jmp 004FF657 ;跳到原来的入口点
00545B90 ascii "key.dll",0 ;和第一句代码对应
修改后,用keymake做个注册机,和key.dll以及KEY一起发布,放在要破解的程序的相同目录,运行注册机就OK了.
已上是我用汇编写HOOK API时忽然想到的,不知道行的通吗?
我本来是想用汇编写个这样的DLL,但汇编的一些基本用法我还没搞清楚,正在论坛请教呢.
还有取硬盘ID的API具体是什么?
如果那位大虾知道答案的话请一定要告诉我哦,我好写一个这样的DLL,
我以易语言4.03版做了个实验,插入key.dll成功,如果我们在key.dll里面勾住取硬盘ID的API,那么
呵呵,不用我说就知道结果了吧!放上实验品供大家研究: |
|