| 利用DLL来完成注册器的制作 |
|
| 作者:未知 文章来源:网络收集 点击数: 更新时间:2006-3-29 15:49:10
|
| 有些软件,注册码是由DLL来计算的,这样,要是分析DLL就显得很烦琐, 有一个好方法,那就是利用这个DLL来完成计算。当然这得找到DLL的入口参数 要知道入口参数,你必须动态分析。 我分析了一个软件,并写了keygen, 就是采用这种手段, 我写的倒入函数如下: procedure GetRegisterString(company,username,serial:string; outStr:String;var nMax:Integer)stdcall; procedure GetEncodeString(userNum,serial:string;outStr:PChar)stdcall; procedure GetSerialString(company,usernam,outstr:string;var nmax:integer) stdcall; implementation procedure GetRegisterString; external 'cwRegister.dll' name 'GetRegisterString'; procedure GetEncodeString; external 'cwRegister.dll' name 'GetEncodeString'; procedure GetSerialString; external 'cwRegister.dll' name 'GetSerialString'; 程序中的汇编代码如下: :004728C5 8B75F8 mov esi, dword ptr [ebp-08] :004728C8 8D45F8 lea eax, dword ptr [ebp-08] :004728CB 50 push eax===????还不清楚参数的来源 :004728CC 8D8367010000 lea eax, dword ptr [ebx+00000167] :004728D2 50 push eax===代输出的地方 :004728D3 8B4508 mov eax, dword ptr [ebp+08] :004728D6 50 push eax===显示的序列号 :004728D7 8B45FC mov eax, dword ptr [ebp-04] :004728DA 50 push eax===用户名 :004728DB 57 push edi===公司名 * Reference To: cwRegister.GetRegisterString, Ord:0000h//GetRegisterString(edi,eax,eax,eax,eax) | :004728DC E88FFFFFFF Call 00472870 0047293C 50 push eax========(获得的编码) :0047293D 8D83EE000000 lea eax, dword ptr [ebx+000000EE] :00472943 50 push eax========(用户数的字符串) * Reference To: cwRegister.GetEncodeString, Ord:0000h| :00472944 E82FFFFFFF Call 00472878 :00472949 83C40C add esp, 0000000C
|
|
[ 收藏此页到: 天天|和讯|博采|ViVi|狐摘|我摘|天极 ] 文章录入:kinda 责任编辑:kinda |
|
上一篇文章: 求职专员1.3破解心得(增强版,标准版需要注册) 下一篇文章: VBPcode破解方法及实例 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |