您的位置:首页精文荟萃破解文章 → 神奇注册表1.0破解

神奇注册表1.0破解

时间:2004/10/15 1:00:00来源:本站整理作者:蓝点我要评论(0)

 软件用于通过修改注册表设置Windows系统。
  (一)用FI侦测mgreg.exe没有加壳。
  (二)用W32Dasm打开mgreg.exe分析。软件由于是启动时从C:\Windows\mgreg.ini中读取注册信息,用户名为UserName,注册码为RegCode。在W32Dasm中搜索"RegCode",共有两处,分别为41B3B0和4216F0,经过分析前者为启动时读取INI文件,后者为输入注册码后写入INI文件。
  (三)运行TRW2000,载入msreg.exe调试,g 41B3B0跟踪到读取INI文件处。代码如下:
:0041B3B0 68E8B04700              push 0047B0E8
:0041B3B5 8BE8                    mov ebp, eax
:0041B3B7 FFD7                    call edi ****读取INI文件
:0041B3B9 8D442438                lea eax, dword ptr [esp+38] ****EAX注册码地址
:0041B3BD 8D4C2460                lea ecx, dword ptr [esp+60] ****ECX用户名地址
:0041B3C1 50                      push eax
:0041B3C2 51                      push ecx
:0041B3C3 8BCE                    mov ecx, esi
:0041B3C5 E816030000              call 0041B6E0 ****根据用户名算出注册码并比较
:0041B3CA 85C0                    test eax, eax ****正确时返回EAX=1,否则返回EAX=0
:0041B3CC 7410                    je 0041B3DE ****EAX为0则转出错,出现输入用户名与注册码的窗口
  跟踪进入比较注册码的子程序,前面一段为赋值(共计80个字节),用于与输入的用户名字符异或,EBX为用户名地址,ECX为用户名长度,并对长度进行测试。接下来的代码如下:
:0041B99C 7E4D                    jle 0041B9EB ****用户名长度小于等于0转直接比较,此时比较肯定是不对的
:0041B99E 8D74240C                lea esi, dword ptr [esp+0C] ****ESI为异或用值的地址
:0041B9A2 8BC3                    mov eax, ebx ****EAX为用户名地址
:0041B9A4 2BF3                    sub esi, ebx ****ESI为两地址差

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041B9E9(C)
|
:0041B9A6 8A10                    mov dl, byte ptr [eax] ****取用户名字符
:0041B9A8 84D2                    test dl, dl ****是否为负数,最高位为1,此字符为汉字
:0041B9AA 7D04                    jge 0041B9B0 ****非负数为一般字符,直接异或
:0041B9AC F6DA                    neg dl ****为负数(汉字),则取反送回原地址
:0041B9AE 8810                    mov byte ptr [eax], dl

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041B9AA(C)
|
:0041B9B0 8A1406                  mov dl, byte ptr [esi+eax] ****取异或用值
:0041B9B3 3210                    xor dl, byte ptr [eax] ****与用户名字符异或
:0041B9B5 80FA30                  cmp dl, 30 ****是否小于30,包括大于7F情况,因为此时DL为负数
:0041B9B8 8810                    mov byte ptr [eax], dl
:0041B9BA 7D12                    jge 0041B9CE
:0041B9BC 0FBED2                  movsx edx, dl ****小于30时,扩展DL为EDX,当DL最高位为1时,EDX其余位也为1
:0041B9BF 83FA30                  cmp edx, 00000030 ****继续判断是否小于30
:0041B9C2 7D0A                    jge 0041B9CE ****不可能跳转

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041B9CC(C)
|
:0041B9C4 83C203                  add edx, 00000003 ****小于30时一直加3
:0041B9C7 83FA30                  cmp edx, 00000030
:0041B9CA 8810                    mov byte ptr [eax], dl ****注册码保存到用户名的地址
:0041B9CC 7CF6                    jl 0041B9C4

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0041B9BA(C), :0041B9C2(C)
|
:0041B9CE 8A10                    mov dl, byte ptr [eax]
:0041B9D0 80FA39                  cmp dl, 39 ****是否小于等于39
:0041B9D3 7E12                    jle 0041B9E7 ****是则无需运算,继续取下一个字符
:0041B9D5 0FBED2                  movsx edx, dl ****扩展DL为EDX
:0041B9D8 83FA39                  cmp edx, 00000039 ****再判断一次
:0041B9DB 7E0A                    jle 0041B9E7

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041B9E5(C)
|
:0041B9DD 83EA03                  sub edx, 00000003 ****当EDX大于39时一直减3
:0041B9E0 83FA39                  cmp edx, 00000039
:0041B9E3 8810                    mov byte ptr [eax], dl
:0041B9E5 7FF6                    jg 0041B9DD

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0041B9D3(C), :0041B9DB(C)
|
:0041B9E7 40                      inc eax ****地址加1
:0041B9E8 49                      dec ecx ****用户名长度减1
:0041B9E9 75BB                    jne 0041B9A6 ****是否已结束,未结束回41B9A6继续算注册码

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041B99C(C)
|
:0041B9EB 8BB42494000000          mov esi, dword ptr [esp+00000094] ****ESI为输入注册码的地址
:0041B9F2 8BC3                    mov eax, ebx ****EAX、EBX为注册码的地址

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041BA16(C)
|
:0041B9F4 8A10                    mov dl, byte ptr [eax] ****比较注册码段,单个字符进行比较
:0041B9F6 8A1E                    mov bl, byte ptr [esi]
:0041B9F8 8ACA                    mov cl, dl
:0041B9FA 3AD3                    cmp dl, bl
:0041B9FC 751E                    jne 0041BA1C ****不等则转出错
:0041B9FE 84C9                    test cl, cl ****是否已结束
:0041BA00 7416                    je 0041BA18 ****是则转41BA18成功结束
:0041BA02 8A5001                  mov dl, byte ptr [eax+01] ****比较下一个字符
:0041BA05 8A5E01                  mov bl, byte ptr [esi+01]
:0041BA08 8ACA                    mov cl, dl
:0041BA0A 3AD3                    cmp dl, bl
:0041BA0C 750E                    jne 0041BA1C ****不等则转出错
:0041BA0E 83C002                  add eax, 00000002 ****地址均加2指向下一个字符
:0041BA11 83C602                  add esi, 00000002
:0041BA14 84C9                    test cl, cl
:0041BA16 75DC                    jne 0041B9F4

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041BA00(C)
|
:0041BA18 33C0                    xor eax, eax ****成功结束,置EAX为0
:0041BA1A EB05                    jmp 0041BA21

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0041B9FC(C), :0041BA0C(C)
|
:0041BA1C 1BC0                    sbb eax, eax
:0041BA1E 83D8FF                  sbb eax, FFFFFFFF ****不成功时EAX不为0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041BA1A(U)
|
:0041BA21 33C9                    xor ecx, ecx
:0041BA23 5F                      pop edi
:0041BA24 85C0                    test eax, eax ****判断EAX是否为0
:0041BA26 0F94C1                  sete cl ****为0置CL为1,否则为0
:0041BA29 5E                      pop esi
:0041BA2A 8BC1                    mov eax, ecx ****成功时EAX=1,否则为0
:0041BA2C 5B                      pop ebx
:0041BA2D 81C480000000            add esp, 00000080
:0041BA33 C20800                  ret 0008
  由上可以看出,在41B9F4处中断,e eax或e ebx往上看均可以看到注册码。也可在41B9F2处中断,用e ebx往上看可得注册码。我的注册码为:用户名BiQiang,注册码1208012。
  (四)制作注册机:一是用注册机编写器制作注册机,按F8制作另类注册机,中断地址41B9F2,中断次数1,第一字节8B,指令长度2,注册码选内存方式,选中EBX寄存器,生成注册机。二是根据其算法用VB制作注册机。


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程