首页
论坛
课程
招聘

[原创]光驱伴侣2005V2.0算法分析

2005-2-18 10:19 7341

[原创]光驱伴侣2005V2.0算法分析

2005-2-18 10:19
7341
【软件大小】:  661 KB
【软件语言】:  简体中文
【软件类别】:  国产软件 / 共享版 / 光驱工具
【应用平台】:  Win9x/NT/2000/XP
【加入时间】:  2005-02-15 16:16:06
【下载次数】:  3
【推荐等级】:  ★★★
【软件下载】:  天空软件站
【软件介绍】:  一款功能强大的光驱自动弹出关闭软件.
                与同类软件最大的区别是:
                本软件支持键盘控制.即可通过按键盘的键来控制光驱的弹出与闭合.
                详情访问我的主页:http://forrich.nease.net

【作者声明】:初学破解,仅作学习交流之用,失误之处敬请大侠赐教!

【破解工具】:Ollydbg1.10、PEid,WDasmv10.0
   用PEid检测无壳,为Dephi编写!首先运行程序,输入用户名:sharpair及假码:138651,点注册
程序提示要重启以完成注册!一般重启型的软件我们用RegQueryValueEx下断,可是如果你用
在这个软件上可能会很麻烦(没试,不知行不行,但初略看一下好像并不向注册表中写信息)!
用WDasm反汇编,找到提示重启对话框的代码段,记住地址,用OD载入,下断,你一定会来到如下代码:


★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
..........
004BC7D0   mov eax,Rom-Help.004BC84C            ;  我们在此下断
004BC7D5   call Rom-Help.0043B5E8               ;  这个Call显示要求重启对话框
004BC7DA   lea edx,dword ptr ss:[ebp-4]
004BC7DD   mov eax,dword ptr ds:[ebx+2FC]
004BC7E3   call Rom-Help.004423F4
004BC7E8   mov eax,dword ptr ss:[ebp-4]         ;  ss:[ebp-4]中为我们输入的假码651484
004BC7EB   call Rom-Help.004BC5A8               ;  下面为一个判断,跟进这个Call看看
004BC7F0   test al,al
004BC7F2   je short Rom-Help.004BC81C
004BC7F4   lea edx,dword ptr ss:[ebp-8]
004BC7F7   mov eax,dword ptr ds:[ebx+2FC]
004BC7FD   call Rom-Help.004423F4
004BC802   mov eax,dword ptr ss:[ebp-8]
004BC805   push eax
004BC806   mov eax,dword ptr ds:[4BFDE8]
004BC80B   mov eax,dword ptr ds:[eax]
004BC80D   mov ecx,Rom-Help.004BC874            ;  ASCII "ma"
004BC812   mov edx,Rom-Help.004BC880            ;  ASCII "setting"
004BC817   mov ebx,dword ptr ds:[eax]
004BC819   call dword ptr ds:[ebx+4]
004BC81C   xor eax,eax
004BC81E   pop edx
004BC81F   pop ecx
004BC820   pop ecx
004BC821   mov dword ptr fs:[eax],edx
004BC824   push Rom-Help.004BC83E
004BC829   lea eax,dword ptr ss:[ebp-8]
004BC82C   mov edx,2
004BC831   call Rom-Help.00404474
004BC836   retn
..........
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

跟进004BC7EB处的call Rom-Help.004BC5A8,我们看一下有些什么:
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
004BC5A6   mov eax,eax
004BC5A8   push ebp                             ;  我们首先来到这里
004BC5A9   mov ebp,esp
004BC5AB   xor ecx,ecx
004BC5AD   push ecx
004BC5AE   push ecx
004BC5AF   push ecx
004BC5B0   push ecx
004BC5B1   push ecx
004BC5B2   push ecx
004BC5B3   push ecx
004BC5B4   push ebx
004BC5B5   push esi
004BC5B6   push edi
004BC5B7   mov dword ptr ss:[ebp-4],eax         ;  假码先放到ss:[ebp-4]中保存
004BC5BA   mov eax,dword ptr ss:[ebp-4]
004BC5BD   call Rom-Help.004048F0
004BC5C2   xor eax,eax
004BC5C4   push ebp
004BC5C5   push Rom-Help.004BC6C7
004BC5CA   push dword ptr fs:[eax]
004BC5CD   mov dword ptr fs:[eax],esp
004BC5D0   mov byte ptr ss:[ebp-5],0
004BC5D4   lea eax,dword ptr ss:[ebp-C]
004BC5D7   mov edx,dword ptr ss:[ebp-4]
004BC5DA   call Rom-Help.004044E8
004BC5DF   mov eax,dword ptr ss:[ebp-C]
004BC5E2   call Rom-Help.00404708               ;  这个Call取假码位数
004BC5E7   test eax,eax
004BC5E9   jle Rom-Help.004BC684                ;  没输入注册码则跳
004BC5EF   mov dword ptr ss:[ebp-14],eax
004BC5F2   mov ebx,1                            ;  ebx=1
--------------------------------------------------------------
004BC5F7   /mov edi,ebx                         ;  edi=ebx=1
004BC5F9   |imul edi,ebx
004BC5FC   |mov eax,edi                         ;  eax=edi*ebx=1
004BC5FE   |imul ebx                            ;  eax=ebx*eax=1
004BC600   |lea edx,dword ptr ds:[ebx+14]       ;  edx=ebx+14=15
004BC603   |mov ecx,edx                         ;  ecx=15
004BC605   |cdq
004BC606   |idiv ecx                            ;  eax idiv ecx
004BC608   |mov esi,edx                         ;  余数edx=1-->esi
004BC60A   |mov eax,edi                         ;  eax=edi=1
004BC60C   |lea edx,dword ptr ds:[ebx+A]        ;  edx=ebx+A=0B
004BC60F   |mov ecx,edx                         ;  下面不注释了,同上,很简单的
004BC611   |cdq
004BC612   |idiv ecx
004BC614   |add esi,edx                         ;  esi=1+1=2
004BC616   |mov eax,ebx
004BC618   |add eax,eax                         ;  eax=1+1=2
004BC61A   |add esi,eax                         ;  esi=2+2=4
004BC61C   |inc esi
004BC61D   |lea eax,dword ptr ss:[ebp-18]
004BC620   |mov edx,dword ptr ss:[ebp-C]
004BC623   |movzx edx,byte ptr ds:[edx+ebx-1]   ;  按位取假码
004BC628   |add edx,esi                         ;  与esi加结果在edx=36+5=3B
004BC62A   |call Rom-Help.00404630              ;  这个Call没跟,前后对比猜是把前面的计算结果
004BC62F   |mov edx,dword ptr ss:[ebp-18]       ;  存入ss:[ebp-18]所指向的内存中
004BC632   |lea eax,dword ptr ss:[ebp-10]
004BC635   |call Rom-Help.00404710
004BC63A   |mov eax,ebx                         ;  以下代码同上类似
004BC63C   |imul ebx                            ;  ebx=1
004BC63E   |imul ebx                            ;  ebx=1
004BC640   |lea edx,dword ptr ds:[ebx+A]        ;  edx=1+A=0B
004BC643   |mov ecx,edx
004BC645   |cdq
004BC646   |idiv ecx
004BC648   |mov esi,edx                         ;  esi=edx=1
004BC64A   |mov eax,edi                         ;  eax=edi=1
004BC64C   |lea edx,dword ptr ds:[ebx+14]       ;  edx=ebx+14=15
004BC64F   |mov ecx,edx
004BC651   |cdq
004BC652   |idiv ecx
004BC654   |add esi,edx                         ;  esi=esi+edx=2
004BC656   |mov eax,ebx
004BC658   |add eax,eax                         ;  eax=2*ebx=2
004BC65A   |add esi,eax                         ;  esi=esi+eax=4
004BC65C   |inc esi
004BC65D   |lea eax,dword ptr ss:[ebp-1C]       ;  同上,这里应该是一个指针值
004BC660   |mov edx,dword ptr ss:[ebp-C]
004BC663   |movzx edx,byte ptr ds:[edx+ebx-1]
004BC668   |add edx,esi                         ;  edx=36+5=3B
004BC66A   |call Rom-Help.00404630
004BC66F   |mov edx,dword ptr ss:[ebp-1C]
004BC672   |lea eax,dword ptr ss:[ebp-10]       ;  注意,上面累加的和在此地址中
004BC675   |call Rom-Help.00404710
004BC67A   |inc ebx
004BC67B   |dec dword ptr ss:[ebp-14]
004BC67E   \jnz Rom-Help.004BC5F7
-------------------------------------------------------

上面为对输入的假码进行转换的循环处理
004BC684   mov eax,dword ptr ss:[ebp-10]        ;  到这里会看到ss:[ebp-14]中为";;FFEBOUMHMS"
004BC687   mov edx,Rom-Help.004BC6E0            ;  ASCII "66FFMJRXJELR"
004BC68C   call Rom-Help.0040484C           ;  这个Call不用跟也看得出来,对上面两个串值进行比较
004BC691   jnz short Rom-Help.004BC697
004BC693   mov byte ptr ss:[ebp-5],1            ;  不跳的话此处置ss:[ebp-5]为1,注册标志位?
004BC697   xor eax,eax                          ;  eax=0
004BC699   pop edx
004BC69A   pop ecx
004BC69B   pop ecx
004BC69C   mov dword ptr fs:[eax],edx
004BC69F   push Rom-Help.004BC6CE
004BC6A4   lea eax,dword ptr ss:[ebp-1C]
004BC6A7   mov edx,2
004BC6AC   call Rom-Help.00404474
004BC6B1   lea eax,dword ptr ss:[ebp-10]
004BC6B4   mov edx,2
004BC6B9   call Rom-Help.00404474
004BC6BE   lea eax,dword ptr ss:[ebp-4]
004BC6C1   call Rom-Help.00404450
004BC6C6   retn
004BC6C7   jmp Rom-Help.00403E78
004BC6CC   jmp short Rom-Help.004BC6A4
004BC6CE   mov al,byte ptr ss:[ebp-5]           ;  再把刚才存储的标志位取到al中
004BC6D1   pop edi
004BC6D2   pop esi
004BC6D3   pop ebx
004BC6D4   mov esp,ebp
004BC6D6   pop ebp
004BC6D7   retn
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

【算法分析】:
上面的结构很清楚(但好像代码太不简炼^_^),把我们输入的假码转换后与程序的内置固
串值进行比较,但后面是否还有注册校验我们还不得而知,我们先根据上面的算法逆推出
一个满足上述条件的注册码试试看!

程序对假码的转换如下:
假码第1位:
      6         6        第1位的字符
------------------------
     36        36        字符的ASCII码的Hex值
+ n(1)  与 + m(1)
-------    --------
     3B        3B

其中n(1)与m(1)是变化的,n(i)可表示为(i*i*i)%(i+14)+(i*i)%(i+A)+2i+1
(其中i为ebx的值,注意它也是累加变化的,其取值范围为1~假码长度),对应的有
n(1)=5,n(2)=11,n(3)=14,n(4)=1B,n(5)=15,n(6)=19
而m(i)可表示为(i*i*i)%(i+A)+(i*i)%(i+14)+2i+1,i同上解释,对应的有
m(1)=5,m(2)=11,m(3)=11,m(4)=21,m(5)=10,m(6)=1F,故上面的循环转换可表示为:

  6   6   5   5   1   1   4   4   8   8   4   4  字符形式
--------------------------------------------------------------
  36  36  35  35  31  31  34  34  38  38  34  34    字符的ASCII码Hex值
+ 5   5   11  11  14  11  1B  21  15  10  19  1F    加操作
--------------------------------------------------------------
  3B  3B  46  46  45  42  4F  55  4D  48  4D  53   对应的字符为";;FFEBOUMHMS"
故而我们可以倒推出满足与内定串值相符的注册码为:
  36  36  46  46  4D  4A  52  58  4A  45  4C  52     内置串的ASCII码Hex值
- 5   5   11  11  14  11  1B  21  15  10  19  1F    注意是减操作噢
--------------------------------------------------------------
  31  31  35  35  39  39  37  37  35  35  33  33   对应的字符形式为"115599775533"
故而满足条件的假码为"159753",我们重新运行程序,用这个注册码试一下!呵呵,注册成功了!


【总结】:这个软件提示是重启型的,但是在你按下那个确定按钮后,程序已偷偷完成了
真假码的校验,有点鬼噢!注册码与用户名无关,依据我上面的简单分析,程序只有一个
唯一的注册码"159753",如有失误之处还请不吝指正!

用户名随意,可用注册码159753(不知是否就是唯一注册码)
欢迎e-mail到sharpair@163.com交流!



[推荐]看雪企服平台,提供项目众包、渗透测试、安全分析、定制项目开发、APP等级保护等安全服务!

最新回复 (12)
Winter-Night 5 2005-2-18 11:34
2
0
不错,学习
小剑 2005-2-18 12:53
3
0
ddddddddddddddddddddddddddd
china 5 2005-2-18 20:46
4
0
好象不对。
萝卜 1 2005-2-18 21:43
5
0
这个软件现在下载不到,怎么知道对不对呀?
china 5 2005-2-19 02:06
6
0
启动有验证,楼主的注册不对,最后暴力解决

004BD0EC  |.  55            PUSH EBP
004BD0ED  |.  68 B9D44B00   PUSH a_.004BD4B9
004BD0F2  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
004BD0F5  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
004BD0F8  |.  B2 01         MOV DL,1
004BD0FA  |.  A1 B8554600   MOV EAX,DWORD PTR DS:[4655B8]
004BD0FF  |.  E8 8885FAFF   CALL a_.0046568C
004BD104  |.  8BF0          MOV ESI,EAX
004BD106  |.  BA 02000080   MOV EDX,80000002
004BD10B  |.  8BC6          MOV EAX,ESI
004BD10D  |.  E8 1A86FAFF   CALL a_.0046572C
004BD112  |.  68 80000000   PUSH 80                                  ; /NewValue = 80
004BD117  |.  6A EC         PUSH -14                                 ; |Index = GWL_EXSTYLE
004BD119  |.  A1 1CFF4B00   MOV EAX,DWORD PTR DS:[4BFF1C]            ; |
004BD11E  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]               ; |
004BD120  |.  8B40 30       MOV EAX,DWORD PTR DS:[EAX+30]            ; |
004BD123  |.  50            PUSH EAX                                 ; |hWnd
004BD124  |.  E8 7FA2F4FF   CALL <JMP.&user32.SetWindowLongA>        ; \SetWindowLongA
004BD129  |.  6A 28         PUSH 28                                  ; /BufSize = 28 (40.)
004BD12B  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]            ; |
004BD12E  |.  50            PUSH EAX                                 ; |Buffer
004BD12F  |.  E8 AC99F4FF   CALL <JMP.&kernel32.GetSystemDirectoryA> ; \GetSystemDirectoryA
004BD134  |.  8D55 C4       LEA EDX,DWORD PTR SS:[EBP-3C]
004BD137  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
004BD13A  |.  E8 FDBFF4FF   CALL a_.0040913C
004BD13F  |.  FF75 C4       PUSH DWORD PTR SS:[EBP-3C]
004BD142  |.  68 D0D44B00   PUSH a_.004BD4D0
004BD147  |.  68 DCD44B00   PUSH a_.004BD4DC                         ;  ASCII "sys8.exe"
004BD14C  |.  B8 601D4C00   MOV EAX,a_.004C1D60
004BD151  |.  BA 03000000   MOV EDX,3
004BD156  |.  E8 6D76F4FF   CALL a_.004047C8
004BD15B  |.  8B0D 601D4C00 MOV ECX,DWORD PTR DS:[4C1D60]
004BD161  |.  B2 01         MOV DL,1
004BD163  |.  A1 68464600   MOV EAX,DWORD PTR DS:[464668]
004BD168  |.  E8 AB75FAFF   CALL a_.00464718
004BD16D  |.  A3 5C1D4C00   MOV DWORD PTR DS:[4C1D5C],EAX
004BD172  |.  68 AC260000   PUSH 26AC
004BD177  |.  B9 F0D44B00   MOV ECX,a_.004BD4F0
004BD17C  |.  BA FCD44B00   MOV EDX,a_.004BD4FC                      ;  ASCII "setting"
004BD181  |.  A1 5C1D4C00   MOV EAX,DWORD PTR DS:[4C1D5C]
004BD186  |.  8B38          MOV EDI,DWORD PTR DS:[EAX]
004BD188  |.  FF57 08       CALL DWORD PTR DS:[EDI+8]
004BD18B  |.  A3 C01D4C00   MOV DWORD PTR DS:[4C1DC0],EAX
004BD190  |.  B8 0CD54B00   MOV EAX,a_.004BD50C                      ;  ASCII "c:\a.bat"
004BD195  |.  E8 D2BBF4FF   CALL a_.00408D6C
004BD19A  |.  84C0          TEST AL,AL
004BD19C      75 4F         JNZ SHORT a_.004BD1ED
004BD19E  |.  8B83 18030000 MOV EAX,DWORD PTR DS:[EBX+318]
004BD1A4  |.  8B80 20020000 MOV EAX,DWORD PTR DS:[EAX+220]
004BD1AA  |.  BA 0CD54B00   MOV EDX,a_.004BD50C                      ;  ASCII "c:\a.bat"
004BD1AF  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
004BD1B1  |.  FF51 74       CALL DWORD PTR DS:[ECX+74]
004BD1B4  |.  B1 01         MOV CL,1
004BD1B6  |.  BA 20D54B00   MOV EDX,a_.004BD520                      ;  ASCII "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
004BD1BB  |.  8BC6          MOV EAX,ESI
004BD1BD  |.  E8 CE85FAFF   CALL a_.00465790
004BD1C2  |.  8D55 BC       LEA EDX,DWORD PTR SS:[EBP-44]
004BD1C5  |.  A1 1CFF4B00   MOV EAX,DWORD PTR DS:[4BFF1C]
004BD1CA  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004BD1CC  |.  E8 E364FAFF   CALL a_.004636B4
004BD1D1  |.  8B45 BC       MOV EAX,DWORD PTR SS:[EBP-44]
004BD1D4  |.  8D55 C0       LEA EDX,DWORD PTR SS:[EBP-40]
004BD1D7  |.  E8 B8BCF4FF   CALL a_.00408E94
004BD1DC  |.  8B4D C0       MOV ECX,DWORD PTR SS:[EBP-40]
004BD1DF  |.  BA 58D54B00   MOV EDX,a_.004BD558                      ;  ASCII "friend"
004BD1E4  |.  8BC6          MOV EAX,ESI
004BD1E6  |.  E8 3987FAFF   CALL a_.00465924
004BD1EB  |.  EB 0B         JMP SHORT a_.004BD1F8
004BD1ED  |>  A1 1CFF4B00   MOV EAX,DWORD PTR DS:[4BFF1C]
004BD1F2  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004BD1F4  |.  C640 5B 00    MOV BYTE PTR DS:[EAX+5B],0
004BD1F8  |>  C705 681D4C00>MOV DWORD PTR DS:[4C1D68],58
004BD202  |.  8BC3          MOV EAX,EBX
004BD204  |.  E8 97B9F8FF   CALL a_.00448BA0
004BD209  |.  A3 6C1D4C00   MOV DWORD PTR DS:[4C1D6C],EAX
004BD20E  |.  C705 701D4C00>MOV DWORD PTR DS:[4C1D70],1
004BD218  |.  A1 1CFF4B00   MOV EAX,DWORD PTR DS:[4BFF1C]
004BD21D  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004BD21F  |.  8B80 98000000 MOV EAX,DWORD PTR DS:[EAX+98]
004BD225  |.  E8 86B4F6FF   CALL a_.004286B0
004BD22A  |.  A3 7C1D4C00   MOV DWORD PTR DS:[4C1D7C],EAX
004BD22F  |.  A1 1CFF4B00   MOV EAX,DWORD PTR DS:[4BFF1C]
004BD234  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004BD236  |.  8B80 98000000 MOV EAX,DWORD PTR DS:[EAX+98]
004BD23C  |.  E8 6FB4F6FF   CALL a_.004286B0
004BD241  |.  A3 7C1D4C00   MOV DWORD PTR DS:[4C1D7C],EAX
004BD246  |.  BE 60D54B00   MOV ESI,a_.004BD560
004BD24B  |.  BF 801D4C00   MOV EDI,a_.004C1D80
004BD250  |.  B9 10000000   MOV ECX,10
004BD255  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
004BD257  |.  C705 781D4C00>MOV DWORD PTR DS:[4C1D78],401
004BD261  |.  C705 741D4C00>MOV DWORD PTR DS:[4C1D74],7
004BD26B  |.  68 681D4C00   PUSH a_.004C1D68
004BD270  |.  6A 00         PUSH 0
004BD272  |.  E8 69A7F7FF   CALL <JMP.&shell32.Shell_NotifyIcon>
004BD277  |.  68 A8D54B00   PUSH a_.004BD5A8                         ;  ASCII "000"
004BD27C  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004BD27F  |.  50            PUSH EAX
004BD280  |.  B9 B4D54B00   MOV ECX,a_.004BD5B4                      ;  ASCII "ma"
004BD285  |.  BA FCD44B00   MOV EDX,a_.004BD4FC                      ;  ASCII "setting"
004BD28A  |.  A1 5C1D4C00   MOV EAX,DWORD PTR DS:[4C1D5C]
004BD28F  |.  8B30          MOV ESI,DWORD PTR DS:[EAX]
004BD291  |.  FF16          CALL DWORD PTR DS:[ESI]
004BD293  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004BD296  |.  E8 6D74F4FF   CALL a_.00404708
004BD29B  |.  83F8 08       CMP EAX,8
004BD29E  |.  7E 53         JLE SHORT a_.004BD2F3
004BD2A0  |.  8D45 B8       LEA EAX,DWORD PTR SS:[EBP-48]
004BD2A3  |.  50            PUSH EAX
004BD2A4  |.  B9 06000000   MOV ECX,6
004BD2A9  |.  BA 01000000   MOV EDX,1
004BD2AE  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004BD2B1  |.  E8 AA76F4FF   CALL a_.00404960
004BD2B6  |.  8B55 B8       MOV EDX,DWORD PTR SS:[EBP-48]
004BD2B9  |.  A1 74004C00   MOV EAX,DWORD PTR DS:[4C0074]
004BD2BE  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004BD2C0  |.  E8 E3F2FFFF   CALL a_.004BC5A8
004BD2C5  |.  3C 01         CMP AL,1
004BD2C7  |.  75 2A         JNZ SHORT a_.004BD2F3
004BD2C9  |.  8D45 B4       LEA EAX,DWORD PTR SS:[EBP-4C]
004BD2CC  |.  50            PUSH EAX
004BD2CD  |.  B9 06000000   MOV ECX,6
004BD2D2  |.  BA 01000000   MOV EDX,1
004BD2D7  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004BD2DA  |.  E8 8176F4FF   CALL a_.00404960
004BD2DF  |.  8B55 B4       MOV EDX,DWORD PTR SS:[EBP-4C]
004BD2E2  |.  A1 74004C00   MOV EAX,DWORD PTR DS:[4C0074]
004BD2E7  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004BD2E9  |.  E8 BAF2FFFF   CALL a_.004BC5A8
004BD2EE  |.  34 01         XOR AL,1
004BD2F0  |.  8845 FB       MOV BYTE PTR SS:[EBP-5],AL
004BD2F3  |>  807D FB 00    CMP BYTE PTR SS:[EBP-5],0
004BD2F7  |.  0F85 A7000000 JNZ a_.004BD3A4
004BD2FD  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
004BD300  |.  50            PUSH EAX
004BD301  |.  B9 03000000   MOV ECX,3
004BD306  |.  BA 07000000   MOV EDX,7
004BD30B  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  假码入EAX
004BD30E  |.  E8 4D76F4FF   CALL a_.00404960
004BD313  |.  8B45 B0       MOV EAX,DWORD PTR SS:[EBP-50]
004BD316  |.  E8 6DF9FFFF   CALL a_.004BCC88
004BD31B      84C0          TEST AL,AL
004BD31D      0F84 81000000 JE a_.004BD3A4
004BD323  |.  33D2          XOR EDX,EDX
004BD325  |.  8B83 1C030000 MOV EAX,DWORD PTR DS:[EBX+31C]
004BD32B  |.  E8 406CF9FF   CALL a_.00453F70
004BD330  |.  68 B8D54B00   PUSH a_.004BD5B8                         ; /AtomName = "UserDefineHotKey"
004BD335  |.  E8 DE97F4FF   CALL <JMP.&kernel32.GlobalAddAtomA>      ; \GlobalAddAtomA
004BD33A  |.  0FB7C0        MOVZX EAX,AX
004BD33D  |.  2D 00C00000   SUB EAX,0C000
004BD342  |.  8983 34030000 MOV DWORD PTR DS:[EBX+334],EAX
004BD348  |.  6A 7A         PUSH 7A
004BD34A  |.  6A 02         PUSH 2
004BD34C  |.  8B83 34030000 MOV EAX,DWORD PTR DS:[EBX+334]
004BD352  |.  50            PUSH EAX
004BD353  |.  8BC3          MOV EAX,EBX
004BD355  |.  E8 46B8F8FF   CALL a_.00448BA0
004BD35A  |.  50            PUSH EAX                                 ; |hWnd
004BD35B  |.  E8 789FF4FF   CALL <JMP.&user32.RegisterHotKey>        ; \RegisterHotKey
004BD360  |.  68 CCD54B00   PUSH a_.004BD5CC                         ; /AtomName = "UsergfDefineHotKey"
004BD365  |.  E8 AE97F4FF   CALL <JMP.&kernel32.GlobalAddAtomA>      ; \GlobalAddAtomA
004BD36A  |.  0FB7C0        MOVZX EAX,AX
004BD36D  |.  2D 00C00000   SUB EAX,0C000
004BD372  |.  8983 38030000 MOV DWORD PTR DS:[EBX+338],EAX
004BD378  |.  6A 7B         PUSH 7B
004BD37A  |.  6A 02         PUSH 2
004BD37C  |.  8B83 38030000 MOV EAX,DWORD PTR DS:[EBX+338]
004BD382  |.  50            PUSH EAX
004BD383  |.  8BC3          MOV EAX,EBX
004BD385  |.  E8 16B8F8FF   CALL a_.00448BA0
004BD38A  |.  50            PUSH EAX                                 ; |hWnd
004BD38B  |.  E8 489FF4FF   CALL <JMP.&user32.RegisterHotKey>        ; \RegisterHotKey
004BD390  |.  BA E8D54B00   MOV EDX,a_.004BD5E8
004BD395  |.  A1 641D4C00   MOV EAX,DWORD PTR DS:[4C1D64]
004BD39A  |.  E8 8550F8FF   CALL a_.00442424
004BD39F  |.  E9 F2000000   JMP a_.004BD496
004BD3A4  |>  68 AC260000   PUSH 26AC
004BD3A9  |.  B9 F0D44B00   MOV ECX,a_.004BD4F0
004BD3AE  |.  BA FCD44B00   MOV EDX,a_.004BD4FC                      ;  ASCII "setting"
004BD3B3  |.  A1 5C1D4C00   MOV EAX,DWORD PTR DS:[4C1D5C]
004BD3B8  |.  8B30          MOV ESI,DWORD PTR DS:[EAX]
004BD3BA  |.  FF56 08       CALL DWORD PTR DS:[ESI+8]
004BD3BD  |.  3D C0260000   CMP EAX,26C0
004BD3C2  |.  7C 43         JL SHORT a_.004BD407
004BD3C4  |.  33D2          XOR EDX,EDX
004BD3C6  |.  8B83 F0020000 MOV EAX,DWORD PTR DS:[EBX+2F0]
004BD3CC  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
004BD3CE  |.  FF51 64       CALL DWORD PTR DS:[ECX+64]
004BD3D1  |.  33D2          XOR EDX,EDX
004BD3D3  |.  8B83 F4020000 MOV EAX,DWORD PTR DS:[EBX+2F4]
004BD3D9  |.  8B08          MOV ECX,DWORD PTR DS:[EAX]
004BD3DB  |.  FF51 64       CALL DWORD PTR DS:[ECX+64]
004BD3DE  |.  33D2          XOR EDX,EDX
004BD3E0  |.  8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]
004BD3E6  |.  E8 856BF9FF   CALL a_.00453F70
004BD3EB  |.  33D2          XOR EDX,EDX
004BD3ED  |.  8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
004BD3F3  |.  E8 786BF9FF   CALL a_.00453F70
004BD3F8  |.  B8 04D64B00   MOV EAX,a_.004BD604
004BD3FD  |.  E8 E6E1F7FF   CALL a_.0043B5E8
004BD402  |.  E9 8F000000   JMP a_.004BD496
004BD407  |>  68 B8D54B00   PUSH a_.004BD5B8                         ; /AtomName = "UserDefineHotKey"
004BD40C  |.  E8 0797F4FF   CALL <JMP.&kernel32.GlobalAddAtomA>      ; \GlobalAddAtomA
004BD411  |.  0FB7C0        MOVZX EAX,AX
004BD414  |.  2D 00C00000   SUB EAX,0C000
004BD419  |.  8983 34030000 MOV DWORD PTR DS:[EBX+334],EAX
004BD41F  |.  6A 7A         PUSH 7A
004BD421  |.  6A 02         PUSH 2
004BD423  |.  8B83 34030000 MOV EAX,DWORD PTR DS:[EBX+334]
004BD429  |.  50            PUSH EAX
004BD42A  |.  8BC3          MOV EAX,EBX
004BD42C  |.  E8 6FB7F8FF   CALL a_.00448BA0
004BD431  |.  50            PUSH EAX                                 ; |hWnd
004BD432  |.  E8 A19EF4FF   CALL <JMP.&user32.RegisterHotKey>        ; \RegisterHotKey
004BD437  |.  68 CCD54B00   PUSH a_.004BD5CC                         ; /AtomName = "UsergfDefineHotKey"
004BD43C  |.  E8 D796F4FF   CALL <JMP.&kernel32.GlobalAddAtomA>      ; \GlobalAddAtomA
004BD441  |.  0FB7C0        MOVZX EAX,AX
004BD444  |.  2D 00C00000   SUB EAX,0C000
004BD449  |.  8983 38030000 MOV DWORD PTR DS:[EBX+338],EAX
004BD44F  |.  6A 7B         PUSH 7B
004BD451  |.  6A 02         PUSH 2
004BD453  |.  8B83 38030000 MOV EAX,DWORD PTR DS:[EBX+338]
004BD459  |.  50            PUSH EAX
004BD45A  |.  8BC3          MOV EAX,EBX
004BD45C  |.  E8 3FB7F8FF   CALL a_.00448BA0
004BD461  |.  50            PUSH EAX                                 ; |hWnd
004BD462  |.  E8 719EF4FF   CALL <JMP.&user32.RegisterHotKey>        ; \RegisterHotKey
004BD467  |.  68 AC260000   PUSH 26AC
004BD46C  |.  B9 F0D44B00   MOV ECX,a_.004BD4F0
004BD471  |.  BA FCD44B00   MOV EDX,a_.004BD4FC                      ;  ASCII "setting"
004BD476  |.  A1 5C1D4C00   MOV EAX,DWORD PTR DS:[4C1D5C]
004BD47B  |.  8B18          MOV EBX,DWORD PTR DS:[EAX]
004BD47D  |.  FF53 08       CALL DWORD PTR DS:[EBX+8]
004BD480  |.  40            INC EAX
004BD481  |.  50            PUSH EAX
004BD482  |.  B9 F0D44B00   MOV ECX,a_.004BD4F0
004BD487  |.  BA FCD44B00   MOV EDX,a_.004BD4FC                      ;  ASCII "setting"
004BD48C  |.  A1 5C1D4C00   MOV EAX,DWORD PTR DS:[4C1D5C]
004BD491  |.  8B18          MOV EBX,DWORD PTR DS:[EAX]
004BD493  |.  FF53 0C       CALL DWORD PTR DS:[EBX+C]
004BD496  |>  33C0          XOR EAX,EAX
004BD498  |.  5A            POP EDX
004BD499  |.  59            POP ECX
004BD49A  |.  59            POP ECX
004BD49B  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
004BD49E  |.  68 C0D44B00   PUSH a_.004BD4C0
004BD4A3  |>  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
004BD4A6  |.  BA 06000000   MOV EDX,6
004BD4AB  |.  E8 C46FF4FF   CALL a_.00404474
004BD4B0  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
004BD4B3  |.  E8 986FF4FF   CALL a_.00404450
004BD4B8  \.  C3            RETN

检查文件在windows/system32下面的sys8.exe,实际为txt文件,启动D=后面的数字为使用记录,开始值为9920也就是16进制的,然后记数。

sharpair 10 2005-2-19 14:42
7
0
to:萝卜 软件是才放到天空的,应该能下得到的!

to:china 注册码在我的机子上通过了啊!注册后原来的注册菜单变灰了!程序应该是在按下按钮后就完成注册校验!(见文)至于重启后的校验是读前面注册成功后生成的文件,也就是防爆破的了!至于
注册算法部分我认为分析的还是对的!
china 5 2005-2-19 15:53
8
0
csharpair ,我是按照你的分析来弄的,但是注册不了,内置的字串是一样的,得到的m,n也是一样,如果软件是这样的处理方式,那159753这个应该是个万能注册码,但是在我这里通不过,不知道其他的朋友有没有注册成功的。

说的不对的地方,请原谅,学习学习,呵呵。
萝卜 1 2005-2-19 15:56
9
0
那个是3.0的,注册了一下,但是不成功。
侠盗 2005-2-20 23:50
10
0
到底没有找到这个软件把注册信息存哪儿了。用 159753 这个注册码我也注册不了。但暴力破解后可以永远使用。
侠盗 2005-2-20 23:56
11
0
不对,用 159753 这个确实可以注册,刚才我弄错了,用我暴破后的注册是不行的,用原始的文件注册一下子就成功了。
sharpair 10 2005-2-21 08:45
12
0
最初由 china 发布
csharpair ,我是按照你的分析来弄的,但是注册不了,内置的字串是一样的,得到的m,n也是一样,如果软件是这样的处理方式,那159753这个应该是个万能注册码,但是在我这里通不过,不知道其他的朋友有没有注册成功的。

说的不对的地方,请原谅,学习学习,呵呵。


呵呵,互相学习,共同进步!
作者真是快,3.0的都出来了,你的分析是针对3.0的吧,我分析的是2.0版的!待会找个3.0的看看!
yunfeng 1 2005-5-11 12:08
13
0
这个软件算法并不是很难,我早就搞定它了。
游客
登录 | 注册 方可回帖
返回