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

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

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

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

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

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

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

您的位置:首页精文荟萃破解文章 → 家庭电脑相册制作系统 V6.0 算法分析

家庭电脑相册制作系统 V6.0 算法分析

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

 

破解者:HMILY[CCG][BCG]
软件名称:家庭电脑相册制作系统 V6.0 标准版
备    注:这个软件原来是用vb编写,到这个版本以后改为delphi


算法分析需要:这个软件在注册时有两部分注册码,设第一部分为"X",机器码参与运算只是除前两
位的其它数据,所以设这个数据为"S"
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004A51E5(C)
|
:004A51E0 6A00                    push 00000000
:004A51E2 6A00                    push 00000000
:004A51E4 49                      dec ecx
:004A51E5 75F9                    jne 004A51E0
:004A51E7 51                      push ecx
:004A51E8 53                      push ebx
:004A51E9 8BD8                    mov ebx, eax
:004A51EB 33C0                    xor eax, eax
:004A51ED 55                      push ebp
:004A51EE 6834554A00              push 004A5534
:004A51F3 64FF30                  push dword ptr fs:[eax]
:004A51F6 648920                  mov dword ptr fs:[eax], esp
:004A51F9 8D957CFEFFFF            lea edx, dword ptr [ebp+FFFFFE7C]
:004A51FF 8B8318070000            mov eax, dword ptr [ebx+00000718]
:004A5205 E8BEA0F9FF              call 0043F2C8
:004A520A 8B857CFEFFFF            mov eax, dword ptr [ebp+FFFFFE7C]
:004A5210 8D9580FEFFFF            lea edx, dword ptr [ebp+FFFFFE80]
:004A5216 E88138F6FF              call 00408A9C
:004A521B 8B8580FEFFFF            mov eax, dword ptr [ebp+FFFFFE80]
:004A5221 50                      push eax
:004A5222 8D9574FEFFFF            lea edx, dword ptr [ebp+FFFFFE74]
:004A5228 8B83FC060000            mov eax, dword ptr [ebx+000006FC]
:004A522E E895A0F9FF              call 0043F2C8
:004A5233 8B8574FEFFFF            mov eax, dword ptr [ebp+FFFFFE74]
:004A5239 8D9578FEFFFF            lea edx, dword ptr [ebp+FFFFFE78]
:004A523F E85838F6FF              call 00408A9C
:004A5244 8B8578FEFFFF            mov eax, dword ptr [ebp+FFFFFE78]
:004A524A 8D4DF8                  lea ecx, dword ptr [ebp-08]
:004A524D 5A                      pop edx
:004A524E E84122FFFF              call 00497494           ---->注册算法,跟进去研究研究
:004A5253 8D956CFEFFFF            lea edx, dword ptr [ebp+FFFFFE6C]
:004A5259 8B831C070000            mov eax, dword ptr [ebx+0000071C]
:004A525F E864A0F9FF              call 0043F2C8
:004A5264 8B856CFEFFFF            mov eax, dword ptr [ebp+FFFFFE6C]
:004A526A 8D9570FEFFFF            lea edx, dword ptr [ebp+FFFFFE70]
:004A5270 E82738F6FF              call 00408A9C
:004A5275 8B8570FEFFFF            mov eax, dword ptr [ebp+FFFFFE70]
:004A527B 50                      push eax
:004A527C 8D9568FEFFFF            lea edx, dword ptr [ebp+FFFFFE68]
:004A5282 8B45F8                  mov eax, dword ptr [ebp-08]  ->正确注册码传入eax
:004A5285 E81238F6FF              call 00408A9C
:004A528A 8B9568FEFFFF            mov edx, dword ptr [ebp+FFFFFE68]
:004A5290 58                      pop eax
:004A5291 E822F8F5FF              call 00404AB8    ->比较注册码
:004A5296 0F85A8010000            jne 004A5444     ->经典对比,不相等就over
:004A529C 8D9560FEFFFF            lea edx, dword ptr [ebp+FFFFFE60]
:004A52A2 A19C9B4A00              mov eax, dword ptr [004A9B9C]
:004A52A7 8B00                    mov eax, dword ptr [eax]
:004A52A9 E82AA4FBFF              call 0045F6D8
:004A52AE 8B8560FEFFFF            mov eax, dword ptr [ebp+FFFFFE60]
:004A52B4 8D9564FEFFFF            lea edx, dword ptr [ebp+FFFFFE64]
:004A52BA E81D3FF6FF              call 004091DC
:004A52BF 8B8564FEFFFF            mov eax, dword ptr [ebp+FFFFFE64]
:004A52C5 8D55FC                  lea edx, dword ptr [ebp-04]
:004A52C8 E8CF37F6FF              call 00408A9C
:004A52CD 8D855CFEFFFF            lea eax, dword ptr [ebp+FFFFFE5C]

* Possible StringData Ref from Code Obj ->"data3"   ->上面注册码正确,将注册信息写data3中
                                |                    删除这个文件又是未注册版
:004A52D3 B94C554A00              mov ecx, 004A554C
:004A52D8 8B55FC                  mov edx, dword ptr [ebp-04]
:004A52DB E8E0F6F5FF              call 004049C0
:004A52E0 8B955CFEFFFF            mov edx, dword ptr [ebp+FFFFFE5C]
:004A52E6 8D8584FEFFFF            lea eax, dword ptr [ebp+FFFFFE84]
:004A52EC E8C3DAF5FF              call 00402DB4
:004A52F1 BA25000000              mov edx, 00000025
:004A52F6 8D8584FEFFFF            lea eax, dword ptr [ebp+FFFFFE84]
:004A52FC E8FBDEF5FF              call 004031FC
:004A5301 E886D5F5FF              call 0040288C
:004A5306 8D9554FDFFFF            lea edx, dword ptr [ebp+FFFFFD54]
:004A530C 8B83FC060000            mov eax, dword ptr [ebx+000006FC]
:004A5312 E8B19FF9FF              call 0043F2C8
:004A5317 8B8554FDFFFF            mov eax, dword ptr [ebp+FFFFFD54]
:004A531D 8D9558FDFFFF            lea edx, dword ptr [ebp+FFFFFD58]
:004A5323 E87437F6FF              call 00408A9C
:004A5328 8B9558FDFFFF            mov edx, dword ptr [ebp+FFFFFD58]
:004A532E 8D855CFDFFFF            lea eax, dword ptr [ebp+FFFFFD5C]
:004A5334 B9FF000000              mov ecx, 000000FF
:004A5339 E812F6F5FF              call 00404950
:004A533E 8D955CFDFFFF            lea edx, dword ptr [ebp+FFFFFD5C]
:004A5344 8D45D3                  lea eax, dword ptr [ebp-2D]
:004A5347 B10D                    mov cl, 0D
:004A5349 E8C2DBF5FF              call 00402F10
:004A534E 8D954CFDFFFF            lea edx, dword ptr [ebp+FFFFFD4C]
:004A5354 8B8318070000            mov eax, dword ptr [ebx+00000718]
:004A535A E8699FF9FF              call 0043F2C8
:004A535F 8B854CFDFFFF            mov eax, dword ptr [ebp+FFFFFD4C]
:004A5365 8D9550FDFFFF            lea edx, dword ptr [ebp+FFFFFD50]
:004A536B E82C37F6FF              call 00408A9C
:004A5370 8B9550FDFFFF            mov edx, dword ptr [ebp+FFFFFD50]
:004A5376 8D855CFDFFFF            lea eax, dword ptr [ebp+FFFFFD5C]
:004A537C B9FF000000              mov ecx, 000000FF
:004A5381 E8CAF5F5FF              call 00404950
:004A5386 8D955CFDFFFF            lea edx, dword ptr [ebp+FFFFFD5C]
:004A538C 8D45E1                  lea eax, dword ptr [ebp-1F]
:004A538F B109                    mov cl, 09
:004A5391 E87ADBF5FF              call 00402F10
:004A5396 8D9544FDFFFF            lea edx, dword ptr [ebp+FFFFFD44]
:004A539C 8B831C070000            mov eax, dword ptr [ebx+0000071C]
:004A53A2 E8219FF9FF              call 0043F2C8
:004A53A7 8B8544FDFFFF            mov eax, dword ptr [ebp+FFFFFD44]
:004A53AD 8D9548FDFFFF            lea edx, dword ptr [ebp+FFFFFD48]
:004A53B3 E8E436F6FF              call 00408A9C
:004A53B8 8B9548FDFFFF            mov edx, dword ptr [ebp+FFFFFD48]
:004A53BE 8D855CFDFFFF            lea eax, dword ptr [ebp+FFFFFD5C]
:004A53C4 B9FF000000              mov ecx, 000000FF
:004A53C9 E882F5F5FF              call 00404950
:004A53CE 8D955CFDFFFF            lea edx, dword ptr [ebp+FFFFFD5C]
:004A53D4 8D45EB                  lea eax, dword ptr [ebp-15]
:004A53D7 B10C                    mov cl, 0C
:004A53D9 E832DBF5FF              call 00402F10
:004A53DE 8D55D3                  lea edx, dword ptr [ebp-2D]
:004A53E1 8D8584FEFFFF            lea eax, dword ptr [ebp+FFFFFE84]
:004A53E7 E81CDFF5FF              call 00403308
:004A53EC E89BD4F5FF              call 0040288C
:004A53F1 8D8584FEFFFF            lea eax, dword ptr [ebp+FFFFFE84]
:004A53F7 E880DAF5FF              call 00402E7C
:004A53FC E88BD4F5FF              call 0040288C
:004A5401 33D2                    xor edx, edx
:004A5403 8B8318070000            mov eax, dword ptr [ebx+00000718]
:004A5409 8B08                    mov ecx, dword ptr [eax]
:004A540B FF5164                  call [ecx+64]
:004A540E 33D2                    xor edx, edx
:004A5410 8B831C070000            mov eax, dword ptr [ebx+0000071C]
:004A5416 8B08                    mov ecx, dword ptr [eax]
:004A5418 FF5164                  call [ecx+64]
:004A541B 33D2                    xor edx, edx
:004A541D 8B8320070000            mov eax, dword ptr [ebx+00000720]
:004A5423 8B08                    mov ecx, dword ptr [eax]
:004A5425 FF5164                  call [ecx+64]

* Possible StringData Ref from Code Obj ->"你已注册成功!"
                                 |
:004A5428 BA5C554A00              mov edx, 004A555C
:004A542D 8B8320070000            mov eax, dword ptr [ebx+00000720]
:004A5433 E8C09EF9FF              call 0043F2F8

* Possible StringData Ref from Code Obj ->"注册成功,谢谢你对本软件的支持!"
                                 |
:004A5438 B874554A00              mov eax, 004A5574
:004A543D E8A230F9FF              call 004384E4
:004A5442 EB41                    jmp 004A5485

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004A5296(C)
|
:004A5444 B201                    mov dl, 01
:004A5446 8B8318070000            mov eax, dword ptr [ebx+00000718]
:004A544C 8B08                    mov ecx, dword ptr [eax]
:004A544E FF5164                  call [ecx+64]
:004A5451 B201                    mov dl, 01
:004A5453 8B831C070000            mov eax, dword ptr [ebx+0000071C]
:004A5459 8B08                    mov ecx, dword ptr [eax]
:004A545B FF5164                  call [ecx+64]
:004A545E B201                    mov dl, 01
:004A5460 8B8320070000            mov eax, dword ptr [ebx+00000720]
:004A5466 8B08                    mov ecx, dword ptr [eax]
:004A5468 FF5164                  call [ecx+64]

* Possible StringData Ref from Code Obj ->"验证软件注册信息"
                                 |
:004A546B BAA0554A00              mov edx, 004A55A0
:004A5470 8B8320070000            mov eax, dword ptr [ebx+00000720]
:004A5476 E87D9EF9FF              call 0043F2F8

* Possible StringData Ref from Code Obj ->"注册失败!"
                                 |
:004A547B B8BC554A00              mov eax, 004A55BC
:004A5480 E85F30F9FF              call 004384E4
============================================================================================
* Referenced by a CALL at Addresses:
|:004A1F87   , :004A524E   , :004A6E56  
|
:00497494 55                      push ebp             ->跟进计算call来到这里
:00497495 8BEC                    mov ebp, esp
:00497497 51                      push ecx
:00497498 B907000000              mov ecx, 00000007

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004974A2(C)
|
:0049749D 6A00                    push 00000000
:0049749F 6A00                    push 00000000
:004974A1 49                      dec ecx
:004974A2 75F9                    jne 0049749D
:004974A4 874DFC                  xchg dword ptr [ebp-04], ecx
:004974A7 53                      push ebx
:004974A8 56                      push esi
:004974A9 8BF1                    mov esi, ecx
:004974AB 8955F8                  mov dword ptr [ebp-08], edx
:004974AE 8945FC                  mov dword ptr [ebp-04], eax
:004974B1 8B45FC                  mov eax, dword ptr [ebp-04]
:004974B4 E8A3D6F6FF              call 00404B5C
:004974B9 8B45F8                  mov eax, dword ptr [ebp-08]
:004974BC E89BD6F6FF              call 00404B5C
:004974C1 33C0                    xor eax, eax
:004974C3 55                      push ebp
:004974C4 68BD764900              push 004976BD
:004974C9 64FF30                  push dword ptr fs:[eax]
:004974CC 648920                  mov dword ptr fs:[eax], esp
:004974CF 8D45F4                  lea eax, dword ptr [ebp-0C]
:004974D2 50                      push eax
:004974D3 8D55E8                  lea edx, dword ptr [ebp-18]
:004974D6 8B45FC                  mov eax, dword ptr [ebp-04]
:004974D9 E8BE15F7FF              call 00408A9C
:004974DE 8B45E8                  mov eax, dword ptr [ebp-18] ->将完整的机器码传入eax
:004974E1 B90B000000              mov ecx, 0000000B
:004974E6 BA03000000              mov edx, 00000003
:004974EB E8DCD6F6FF              call 00404BCC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00497475(C)
|
:004974F0 8D45F0                  lea eax, dword ptr [ebp-10]
:004974F3 50                      push eax
:004974F4 B906000000              mov ecx, 00000006
:004974F9 BA06000000              mov edx, 00000006
:004974FE 8B45F4                  mov eax, dword ptr [ebp-0C] ->取除机器码的前两位的所有数据
:00497501 E8C6D6F6FF              call 00404BCC
:00497506 8B45F0                  mov eax, dword ptr [ebp-10] ->取机器码的后6位
:00497509 E8BE18F7FF              call 00408DCC ->把后6位转换为十六进制传给eax
:0049750E 8BD8                    mov ebx, eax  ->ebx=eax
:00497510 8BC3                    mov eax, ebx  ->晕,又传一遍
:00497512 B903000000              mov ecx, 00000003 ->ecx=3
:00497517 99                      cdq               ->扩展,edx=0
:00497518 F7F9                    idiv ecx          ->后6位/3
:0049751A 8BD8                    mov ebx, eax      ->商的结果保存到ebx
:0049751C EB06                    jmp 00497524

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00497539(C)
|
:0049751E 8BC3                    mov eax, ebx ->如果除得的结果没有6位则跳到这里(1)
:00497520 03C0                    add eax, eax ->商的结果将重复累加
:00497522 8BD8                    mov ebx, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049751C(U)
|
:00497524 8D55E4                  lea edx, dword ptr [ebp-1C]
:00497527 8BC3                    mov eax, ebx
:00497529 E8BE17F7FF              call 00408CEC
:0049752E 8B45E4                  mov eax, dword ptr [ebp-1C] ->d eax可看到商的十进制数
:00497531 E83ED4F6FF              call 00404974 ->取商的位数
:00497536 83F806                  cmp eax, 00000006 ->比较<6位吗
:00497539 7CE3                    jl 0049751E ->小于则跳到(1)处
:0049753B 8D55F0                  lea edx, dword ptr [ebp-10]
:0049753E 8BC3                    mov eax, ebx
:00497540 E8A717F7FF              call 00408CEC
:00497545 8D45F0                  lea eax, dword ptr [ebp-10]
:00497548 50                      push eax
:00497549 B906000000              mov ecx, 00000006
:0049754E BA01000000              mov edx, 00000001
:00497553 8B45F0                  mov eax, dword ptr [ebp-10]
:00497556 E871D6F6FF              call 00404BCC
:0049755B 8D45EC                  lea eax, dword ptr [ebp-14]
:0049755E 50                      push eax
:0049755F B905000000              mov ecx, 00000005
:00497564 BA01000000              mov edx, 00000001
:00497569 8B45F4                  mov eax, dword ptr [ebp-0C]
:0049756C E85BD6F6FF              call 00404BCC
:00497571 8D55E0                  lea edx, dword ptr [ebp-20]
:00497574 8B45F8                  mov eax, dword ptr [ebp-08] ->把注册码的第一部分传入eax
:00497577 E82015F7FF              call 00408A9C
:0049757C 8B45E0                  mov eax, dword ptr [ebp-20]
:0049757F E84818F7FF              call 00408DCC ->把第一部分的数据转换为十六进制
:00497584 8BD8                    mov ebx, eax
:00497586 8B45EC                  mov eax, dword ptr [ebp-14] ->取"S"的前5位
:00497589 E83E18F7FF              call 00408DCC ->将前5位转换成十六进制
:0049758E 03D8                    add ebx, eax  ->前5位与"X"相加
:00497590 D1FB                    sar ebx, 1    ->相加结果右移一次
:00497592 790A                    jns 0049759E  ->测试ebx是否为负数
:00497594 83D300                  adc ebx, 00000000 ->上面不跳则ebx=ebx+0+CF (CF为进位标志)
:00497597 EB05                    jmp 0049759E

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004975B3(C)
|
:00497599 8D045B                  lea eax, dword ptr [ebx+2*ebx] ->如果相加结果<6位,则相加结果
                                                                  乘2后累加(2)
:0049759C 8BD8                    mov ebx, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00497592(C), :00497597(U)
|
:0049759E 8D55DC                  lea edx, dword ptr [ebp-24]
:004975A1 8BC3                    mov eax, ebx
:004975A3 E84417F7FF              call 00408CEC
:004975A8 8B45DC                  mov eax, dword ptr [ebp-24]
:004975AB E8C4D3F6FF              call 00404974 ->取相加结果的位数
:004975B0 83F806                  cmp eax, 00000006 ->小于6位吗
:004975B3 7CE4                    jl 00497599 ->小于则跳到(2)处
:004975B5 8D55EC                  lea edx, dword ptr [ebp-14]
:004975B8 8BC3                    mov eax, ebx
:004975BA E82D17F7FF              call 00408CEC
:004975BF 8D45EC                  lea eax, dword ptr [ebp-14]
:004975C2 50                      push eax
:004975C3 B906000000              mov ecx, 00000006
:004975C8 BA01000000              mov edx, 00000001
:004975CD 8B45EC                  mov eax, dword ptr [ebp-14]
:004975D0 E8F7D5F6FF              call 00404BCC
:004975D5 8D45F4                  lea eax, dword ptr [ebp-0C]
:004975D8 8B4DEC                  mov ecx, dword ptr [ebp-14] ->只取相加结果的前6位传入ecx
:004975DB 8B55F0                  mov edx, dword ptr [ebp-10] ->上面的商结果传入edx
:004975DE E8DDD3F6FF              call 004049C0
:004975E3 8D45F0                  lea eax, dword ptr [ebp-10]
:004975E6 E8D1D0F6FF              call 004046BC
:004975EB 8D45EC                  lea eax, dword ptr [ebp-14]
:004975EE E8C9D0F6FF              call 004046BC
:004975F3 BB01000000              mov ebx, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00497642(C)
|
:004975F8 8BC3                    mov eax, ebx ->eax=ebx
:004975FA D1F8                    sar eax, 1   ->eax=eax>>1
:004975FC 7903                    jns 00497601  ->是否为负数
:004975FE 83D000                  adc eax, 00000000

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004975FC(C)
|
:00497601 03C0                    add eax, eax ->eax+=eax;
:00497603 3BD8                    cmp ebx, eax ->比较ebx和eax
:00497605 7537                    jne 0049763E ->不相加则跳
:00497607 8D45D0                  lea eax, dword ptr [ebp-30]
:0049760A 50                      push eax
:0049760B B901000000              mov ecx, 00000001
:00497610 8BD3                    mov edx, ebx
:00497612 8B45F4                  mov eax, dword ptr [ebp-0C]
:00497615 E8B2D5F6FF              call 00404BCC ->这里有问题,跟进去看看你就明白了
:0049761A 8B4DD0                  mov ecx, dword ptr [ebp-30]
:0049761D 8D45D4                  lea eax, dword ptr [ebp-2C]
:00497620 8B55F0                  mov edx, dword ptr [ebp-10]
:00497623 E898D3F6FF              call 004049C0
:00497628 8B45D4                  mov eax, dword ptr [ebp-2C]
:0049762B 8D55D8                  lea edx, dword ptr [ebp-28]
:0049762E E86914F7FF              call 00408A9C
:00497633 8B55D8                  mov edx, dword ptr [ebp-28]
:00497636 8D45F0                  lea eax, dword ptr [ebp-10]
:00497639 E816D1F6FF              call 00404754

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00497605(C)
|
:0049763E 43                      inc ebx  ->ebx++;
:0049763F 83FB0D                  cmp ebx, 0000000D
:00497642 75B4                    jne 004975F8
//以上的循环我就逐一分析了,经过我的分析它是这样取的:把商后的结果和相加
 的结果合并为一字符串,然后取这个字符串的偶数位
:00497644 BB01000000              mov ebx, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00497693(C)
|
:00497649 8BC3                    mov eax, ebx
:0049764B D1F8                    sar eax, 1
:0049764D 7903                    jns 00497652
:0049764F 83D000                  adc eax, 00000000

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049764D(C)
|
:00497652 03C0                    add eax, eax
:00497654 3BD8                    cmp ebx, eax
:00497656 7437                    je 0049768F
:00497658 8D45C4                  lea eax, dword ptr [ebp-3C]
:0049765B 50                      push eax
:0049765C B901000000              mov ecx, 00000001
:00497661 8BD3                    mov edx, ebx
:00497663 8B45F4                  mov eax, dword ptr [ebp-0C]
:00497666 E861D5F6FF              call 00404BCC
:0049766B 8B4DC4                  mov ecx, dword ptr [ebp-3C]
:0049766E 8D45C8                  lea eax, dword ptr [ebp-38]
:00497671 8B55EC                  mov edx, dword ptr [ebp-14]
:00497674 E847D3F6FF              call 004049C0
:00497679 8B45C8                  mov eax, dword ptr [ebp-38]
:0049767C 8D55CC                  lea edx, dword ptr [ebp-34]
:0049767F E81814F7FF              call 00408A9C
:00497684 8B55CC                  mov edx, dword ptr [ebp-34]
:00497687 8D45EC                  lea eax, dword ptr [ebp-14]
:0049768A E8C5D0F6FF              call 00404754

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00497656(C)
|
:0049768F 43                      inc ebx
:00497690 83FB0D                  cmp ebx, 0000000D
:00497693 75B4                    jne 00497649
//以上这部分循环则是取同一字符串的奇数位
:00497695 8BC6                    mov eax, esi
:00497697 8B4DEC                  mov ecx, dword ptr [ebp-14] ->重新排列后的第一组数传入ecx
:0049769A 8B55F0                  mov edx, dword ptr [ebp-10] ->重新排列后的第二组数传入edx
:0049769D E81ED3F6FF              call 004049C0
:004976A2 33C0                    xor eax, eax
:004976A4 5A                      pop edx
:004976A5 59                      pop ecx
:004976A6 59                      pop ecx
:004976A7 648910                  mov dword ptr fs:[eax], edx
:004976AA 68C4764900              push 004976C4
=========================================================================================
分析完成,注册机源码如下:
//---------------------------------------------------------------------------
void __fastcall TMainform::OKBtnClick(TObject *Sender)
{
if(UEdit->Text!=""&&UEdit1->Text!="")
  {
   String name1,S_1,S_2,S_3,S_4,S_5,S_6,sum,code1,code2,code3;
   int a1,a2,b1=8,b2=3,c1=1,c2=1,d1,d2=1;
   unsigned long key1=0,reg1=0,reg2=0,reg3=0,reg4=0,reg5=0,reg6=0;
   name1=UEdit->Text;a1=UEdit->Text.Length();
   if(a1<8) {ShowMessage("机器码不正确!");return;}
   key1=StrToInt64(UEdit1->Text);
   while(b1<=a1)
        {
         reg1=name1[b1];
         S_1=S_1+char(reg1);b1++;
        }
   reg1=0;reg1=StrToInt(S_1)/3;
   S_5=IntToStr(reg1);
   if(IntToStr(reg1).Length()<6)
     {
      while(IntToStr(reg1).Length()<6) reg1=reg1+reg1;
      S_6=IntToStr(reg1);
     }
   else{
        while(c1<=6) {reg4=S_5[c1];S_6=S_6+char(reg4);c1++;}
       }
   while(b2<=7)
        {
         reg2=name1[b2];
         S_2=S_2+char(reg2);b2++;
        }
   reg2=0;reg2=(StrToInt(S_2)+key1)>>1;
   S_3=IntToStr(reg2);
   if(IntToStr(reg2).Length()<6)
     {
      while(IntToStr(reg2).Length()<6) reg2=reg2+reg2*2;
      S_4=IntToStr(reg2);
     }
   else{
        while(c2<=6)
             {reg3=S_3[c2];S_4=S_4+char(reg3);c2++;}}
   sum=sum+S_6+S_4;d1=sum.Length();
   while(d2<=d1)
        {
         if(d2%2==0)
           {reg5=sum[d2];code1=code1+char(reg5);d2++;}
         else d2++;
        }
   d2=1;
   while(d2<=d1)
        {
         if(d2&1==1)
           {reg6=sum[d2];code2=code2+char(reg6);d2++;}
         else d2++;
        }
   code3=code3+code1+code2;
   CEdit->Text=code3;
  }
}



    
    
     
    
    
     

相关阅读 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破解如何给软件脱壳基础教程