• 标 题:再谈小李注册表大师 v1.11的注册以及另类注册机的编写 -高手莫进 (4千字)
  • 作 者:pzero
  • 时 间:2001-10-7 16:07:14
  • 链 接:http://bbs.pediy.com

题目:小李注册表大师 v1.11的注册以及另类注册机的编写
下载地址:www.csdn.net 中国共享软件中心
目的:获取注册码,并写出另类注册机。
工具:Trw2000 v1.22
    首先用fi查看一下程序(习惯了),还好,没加壳。再运行一下程序,看看程序不注册有哪些限制。该程序不注册时,启动的时候会出来一个框,叫你输入注册名字和注册码。大概了解一下后,准备开工了:
方法一:(最常用的方法)
    运行程序,输入注册名字和随便输入注册码,Ctrl+N呼出Trw2000,bpx hmemcpy,F5返回,点击注册,被断下来后 bc * 清除断点,pmodule返回程序领空,按F12 8次就报错,于是重来,按F12 7次,小心来到以下地方:
    ……
* Possible StringData Ref from Code Obj ->"key"
                                  |
:0047F563 BADCF64700              mov edx, 0047F6DC
:0047F568 E8EB53FDFF              call 00454958
:0047F56D A1D0824800              mov eax, dword ptr [004882D0]
:0047F572 8B00                    mov eax, dword ptr [eax]
:0047F574 E83F4DFDFF              call 004542B8
:0047F579 8D55F0                  lea edx, dword ptr [ebp-10]
:0047F57C 8B83DC020000            mov eax, dword ptr [ebx+000002DC]
:0047F582 E8B106FBFF              call 0042FC38
:0047F587 8B55F0                  mov edx, dword ptr [ebp-10]
:0047F58A A1A8804800              mov eax, dword ptr [004880A8]
:0047F58F 8B00                    mov eax, dword ptr [eax]
:0047F591 8B8064030000            mov eax, dword ptr [eax+00000364]
:0047F597 E848E4FEFF              call 0046D9E4
:0047F59C 8D45FC                  lea eax, dword ptr [ebp-04]
:0047F59F 8B15A8804800            mov edx, dword ptr [004880A8]
:0047F5A5 8B12                    mov edx, dword ptr [edx]
:0047F5A7 8B9264030000            mov edx, dword ptr [edx+00000364]
:0047F5AD 8B524C                  mov edx, dword ptr [edx+4C] ;<-D EDX可看到真注册码
:0047F5B0 E84344F8FF              call 004039F8        ;**在此中断,写另类注册机
:0047F5B5 8D55EC                  lea edx, dword ptr [ebp-14]
:0047F5B8 8B83E0020000            mov eax, dword ptr [ebx+000002E0]
:0047F5BE E87506FBFF              call 0042FC38
:0047F5C3 8B45EC                  mov eax, dword ptr [ebp-14]
:0047F5C6 8B55FC                  mov edx, dword ptr [ebp-04]
:0047F5C9 E82247F8FF              call 00403CF0
:0047F5CE 755F                    jne 0047F62F    ;****爆破注意点之一
:0047F5D0 8D55E4                  lea edx, dword ptr [ebp-1C]
    ……
    由于程序很简单,我也不想多讲(其实是我对算法很糊涂,呵呵),下面是另类注册机的编写:
   
程序名称:小李注册表大师1.11.exe
中断地址:47F5B0
中断次数:1
第一字节:EB
指令长度:5
注册码->内存方式 EDX


方法二:
考虑到程序启动肯定也要比较注册码的,而且注册码放在注册表里,于是我们换个断点来试试看:
用Trw2000 Load 该程序,下断点 bpx regqueryvalueexa,F5返回,被断下来好几次,小心找到正确断下来的地方,按F10来到如下地方:
    ……
* Possible StringData Ref from Code Obj ->"user"
                                  |
:00485CFF BAE05D4800              mov edx, 00485DE0
:00485D04 8B06                    mov eax, dword ptr [esi]
:00485D06 E879ECFCFF              call 00454984
:00485D0B 8B55EC                  mov edx, dword ptr [ebp-14]
:00485D0E 8B8364030000            mov eax, dword ptr [ebx+00000364]
:00485D14 E8CB7CFEFF              call 0046D9E4
:00485D19 8D4DE8                  lea ecx, dword ptr [ebp-18]

* Possible StringData Ref from Code Obj ->"key"
                                  |
:00485D1C BAF05D4800              mov edx, 00485DF0
:00485D21 8B06                    mov eax, dword ptr [esi]
:00485D23 E85CECFCFF              call 00454984
:00485D28 8B45E8                  mov eax, dword ptr [ebp-18]
:00485D2B 8B9364030000            mov edx, dword ptr [ebx+00000364]
:00485D31 8B524C                  mov edx, dword ptr [edx+4C]  ;<-EDX 为正确的注册码
:00485D34 E8B7DFF7FF              call 00403CF0
:00485D39 752E                    jne 00485D69  ;***爆破注意点之二
:00485D3B 8D4DE0                  lea ecx, dword ptr [ebp-20]
    ……
    很简单吧,另类注册机如下(注意:这个注册机与前面那个用起来不一样的,必须得先运行程序,填入注册码和注册码并点击注册后才好用,而前面那个可以直接用的):
   
程序名称:小李注册表大师1.11.exe
中断地址:485D34
中断次数:1
第一字节:EB
指令长度:5
注册码->内存方式 EDX

********************************
    写完了,好累啊,这两天共写了4篇破文,为了加入BCG嘛,再累也不怕,呵呵。希望能对比我更菜的朋友有所帮助,祝大家每天都在进步!