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