文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 神奇注册表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破解如何给软件脱壳基础教程