簡單演算法――黃河Flash播放器 V7.38

看雪資料發表於2015-11-15

下載頁面:  http://www.skycn.com/soft/9167.html
軟體大小:  2529 KB
軟體語言:  簡體中文
軟體類別:  國產軟體 / 免費版 / 影像瀏覽
應用平臺:  Win9x/NT/2000/XP
加入時間:  2003-03-16 15:37:12
下載次數:  46536
推薦等級:  ***
開 發 商:  http://huanghetv.diy.163.com/


【軟體簡介】: 黃河Flash播放器,可以播放各類Flash檔案,使用超酷介面,可儲存列表檔案、開啟開列表檔案、清空列表,具有以下功能:1、啟動程式,按開啟按鈕,選擇要播放的檔案;2、在不同的地方按滑鼠右鍵,有不同的功能;3、可以儲存播放列表,也可以開啟播放列表;4、資料夾中雙擊swf或hhf(黃河Flash播放器列表檔案)檔案,可以自動播放放;5、可以無級縮放播放大小;6、顯示播放進度,可以拖放!.......可以讓你一邊工作,一邊欣賞動畫,該軟體目前沒有任何註冊限制可免費使用。


【軟體限制】:註冊後將無限免費傳送本軟體的最新版!

【作者宣告】:初學Crack,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!

【破解工具】:TRW2000娃娃修改版、Ollydbg1.09、PEiD、AspackDie、W32Dasm 10修改版

―――――――――――――――――――――――――――――――――
【過    程】:


呵呵,看到 透明的 朋友有篇教程,正好從《軟體王》光碟裡發現這個程式,索性我試試其演算法吧。
需要說明的是:天空上的是新版V7.60正式版,而我手裡分析的是V7.38版,可能有些地方是不同的。

hhflash.exe 是ASPack 2.12殼,用AspackDie脫之。629K->1.3M。Delphi編寫。


識別號:ID555490825
試煉碼:13572468

反彙編,根據出錯提示很容易就找到下面的核心了。
―――――――――――――――――――――――――――――――――
:004E8259 E816F4F5FF              call 00447674
:004E825E 8B45F8                  mov eax, dword ptr [ebp-08]
:004E8261 8D55FC                  lea edx, dword ptr [ebp-04]
:004E8264 E86F0CF2FF              call 00408ED8
:004E8269 8B45FC                  mov eax, dword ptr [ebp-04]
:004E826C 50                      push eax
:004E826D 8D55F0                  lea edx, dword ptr [ebp-10]
:004E8270 8B83FC020000            mov eax, dword ptr [ebx+000002FC]
:004E8276 E8F9F3F5FF              call 00447674
:004E827B 8B45F0                  mov eax, dword ptr [ebp-10]
                                 ====>EAX=ID555490825       識別號

:004E827E 8D55F4                  lea edx, dword ptr [ebp-0C]
:004E8281 E876E2FFFF              call 004E64FC
                                 ====>演算法CALL

:004E8286 8B55F4                  mov edx, dword ptr [ebp-0C]
                                 ====>EDX=XL1rpw2wT82ALRg3SmPdlTgGsdEU8P

:004E8289 58                      pop eax
                                 ====>EAX=13572468          試煉碼

:004E828A E8B1CAF1FF              call 00404D40
                                 ====>比較CALL

:004E828F 7534                    jne 004E82C5
                                 ====>跳則OVER!

* Possible StringData Ref from Code Obj ->"註冊成功!"
                                 ====>呵呵,勝利女神!
                                 |
:004E8291 B824834E00              mov eax, 004E8324
:004E8296 E8F581F5FF              call 00440490
:004E829B 8D55E8                  lea edx, dword ptr [ebp-18]
:004E829E 8B8304030000            mov eax, dword ptr [ebx+00000304]
:004E82A4 E8CBF3F5FF              call 00447674
:004E82A9 8B45E8                  mov eax, dword ptr [ebp-18]
:004E82AC 8D55EC                  lea edx, dword ptr [ebp-14]
:004E82AF E8240CF2FF              call 00408ED8
:004E82B4 8B45EC                  mov eax, dword ptr [ebp-14]
:004E82B7 E86CFEFFFF              call 004E8128
:004E82BC 8BC3                    mov eax, ebx
:004E82BE E861CBF7FF              call 00464E24
:004E82C3 EB0A                    jmp 004E82CF

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E828F(C)
|

* Possible StringData Ref from Code Obj ->"註冊號不對!"
                                 ====>BAD BOY!
                                 |
:004E82C5 B838834E00              mov eax, 004E8338
:004E82CA E8C181F5FF              call 00440490

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E82C3(U)
|
:004E82CF 33C0                    xor eax, eax
:004E82D1 5A                      pop edx
:004E82D2 59                      pop ecx
:004E82D3 59                      pop ecx
:004E82D4 648910                  mov dword ptr fs:[eax], edx
:004E82D7 6814834E00              push 004E8314

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E8312(U)
|
:004E82DC 8D45E8                  lea eax, dword ptr [ebp-18]
:004E82DF E860C6F1FF              call 00404944
:004E82E4 8D45EC                  lea eax, dword ptr [ebp-14]
:004E82E7 E858C6F1FF              call 00404944
:004E82EC 8D45F0                  lea eax, dword ptr [ebp-10]
:004E82EF E850C6F1FF              call 00404944
:004E82F4 8D45F4                  lea eax, dword ptr [ebp-0C]
:004E82F7 E848C6F1FF              call 00404944
:004E82FC 8D45F8                  lea eax, dword ptr [ebp-08]
:004E82FF E840C6F1FF              call 00404944
:004E8304 8D45FC                  lea eax, dword ptr [ebp-04]
:004E8307 E838C6F1FF              call 00404944
:004E830C C3                      ret


―――――――――――――――――――――――――――――――――
進入演算法CALL:4E8281   call 004E64FC


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E64FA(C)
|
:004E64FC 55                      push ebp
:004E64FD 8BEC                    mov ebp, esp
:004E64FF 83C4F0                  add esp, FFFFFFF0
:004E6502 53                      push ebx
:004E6503 56                      push esi
:004E6504 57                      push edi
:004E6505 33C9                    xor ecx, ecx
:004E6507 894DF0                  mov dword ptr [ebp-10], ecx
:004E650A 8BFA                    mov edi, edx
:004E650C 8945FC                  mov dword ptr [ebp-04], eax
:004E650F 8B45FC                  mov eax, dword ptr [ebp-04]
                                 ====>EAX=ID555490825

:004E6512 E8CDE8F1FF              call 00404DE4
:004E6517 33C0                    xor eax, eax
:004E6519 55                      push ebp
:004E651A 68FF654E00              push 004E65FF
:004E651F 64FF30                  push dword ptr fs:[eax]
:004E6522 648920                  mov dword ptr fs:[eax], esp
:004E6525 8BC7                    mov eax, edi
:004E6527 E818E4F1FF              call 00404944
:004E652C 8D45FC                  lea eax, dword ptr [ebp-04]
:004E652F BA18664E00              mov edx, 004E6618
:004E6534 E8CBE6F1FF              call 00404C04
:004E6539 8B45FC                  mov eax, dword ptr [ebp-04]
:004E653C 0FB630                  movzx esi, byte ptr [eax]
                           1、   ====>ESI=49

:004E653F 666BC664                imul ax, si, 0064
                           1、   ====>AX=49  *  64=1C84

:004E6543 668945F8                mov word ptr [ebp-08], ax
:004E6547 8BC6                    mov eax, esi
:004E6549 C1E009                  shl eax, 09
                           1、   ====>EAX=49  SHL  09=9200

:004E654C 668945F6                mov word ptr [ebp-0A], ax
:004E6550 B301                    mov bl, 01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E65DB(C)
|
:004E6552 8B45FC                  mov eax, dword ptr [ebp-04]
:004E6555 E8A2E6F1FF              call 00404BFC
:004E655A 50                      push eax
:004E655B 33C0                    xor eax, eax
:004E655D 8AC3                    mov al, bl
:004E655F 5A                      pop edx
:004E6560 8BCA                    mov ecx, edx
:004E6562 99                      cdq
:004E6563 F7F9                    idiv ecx
:004E6565 8B45FC                  mov eax, dword ptr [ebp-04]
                                 ====>EAX=ID555490825
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
EAX記憶體中的值:

00CB15B0  49 44 35 35 35 34 39 30 38 32 35 01      ID555490825
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

:004E6568 8A0410                  mov al, byte ptr [eax+edx]
                                 ====>迴圈取00CB15B0記憶體處字元的HEX值
                           1、   ====>AL=44
                           2、   ====>AL=35
                           3、   ====>AL=35
                           …… ……省   略…… ……

:004E656B 0FB7D6                  movzx edx, si
                           1、   ====>EDX=49
                           2、   ====>EDX=8104
                           3、   ====>EDX=FF40
                           …… ……省   略…… ……

:004E656E C1EA08                  shr edx, 08
                           1、   ====>EDX=49    SHR  08=00
                           2、   ====>EDX=8104  SHR  08=81
                           3、   ====>EDX=FF40  SHR  08=FF
                           …… ……省   略…… ……

:004E6571 32C2                    xor al, dl
                           1、   ====>AL=44  XOR  00=44
                           2、   ====>AL=35  XOR  81=B4
                           3、   ====>AL=35  XOR  FF=CA
                           …… ……省   略…… ……

:004E6573 33D2                    xor edx, edx
:004E6575 8AD3                    mov dl, bl

* Possible StringData Ref from Code Obj ->"Qwert yuiop asdfg hjkl zxcvbnm"
                                 |
:004E6577 B924664E00              mov ecx, 004E6624
                                 ====>ECX=Qwert yuiop asdfg hjkl zxcvbnm

:004E657C 324411FF                xor al, byte ptr [ecx+edx-01]
                           AL 與Qwert yuiop asdfg hjkl zxcvbnm中的字元值依次異或

                           1、   ====>AL=44  XOR  51=15
                           2、   ====>AL=B4  XOR  77=C3
                           3、   ====>AL=CA  XOR  65=AF
                           …… ……省   略…… ……

:004E6580 50                      push eax
:004E6581 8B45FC                  mov eax, dword ptr [ebp-04]
:004E6584 E873E6F1FF              call 00404BFC
:004E6589 5A                      pop edx
:004E658A 02D0                    add dl, al
                           1、   ====>DL=15  +  0C=21
                           2、   ====>DL=C3  +  0C=CF
                           3、   ====>DL=AF  +  0C=BB
                           …… ……省   略…… ……

:004E658C 8855FB                  mov byte ptr [ebp-05], dl
:004E658F 33C0                    xor eax, eax
:004E6591 8A45FB                  mov al, byte ptr [ebp-05]
:004E6594 B93E000000              mov ecx, 0000003E
:004E6599 99                      cdq
:004E659A F7F9                    idiv ecx
                           1、   ====>EDX=21  %  3E=21
                           2、   ====>EDX=CF  %  3E=15
                           3、   ====>EDX=BB  %  3E=1
                           …… ……省   略…… ……

:004E659C 42                      inc edx
                                 ====>EDX 增1

:004E659D 8855FB                  mov byte ptr [ebp-05], dl
:004E65A0 8D45F0                  lea eax, dword ptr [ebp-10]
:004E65A3 33D2                    xor edx, edx
:004E65A5 8A55FB                  mov dl, byte ptr [ebp-05]

* Possible StringData Ref from Code Obj ->"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij"
                                       ->"klmnopqrstuvwxyz"
                                 |
:004E65A8 B94C664E00              mov ecx, 004E664C
                                 ====>ECX=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

:004E65AD 8A5411FF                mov dl, byte ptr [ecx+edx-01]
   根據EDX的值,從0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz表中不同位置取字元

                           1、   ====>DL=58    即:字元X。取第33位
                           2、   ====>DL=4C    即:字元L。取第22位
                           3、   ====>DL=31    即:字元1。取第2 位
                           …… ……省   略…… ……

             迴圈30次後所得字元: XL1rpw2wT82ALRg3SmPdlTgGsdEU8P       就是註冊碼了!


:004E65B1 E86EE5F1FF              call 00404B24
:004E65B6 8B55F0                  mov edx, dword ptr [ebp-10]
:004E65B9 8BC7                    mov eax, edi
:004E65BB E844E6F1FF              call 00404C04
:004E65C0 33C0                    xor eax, eax
:004E65C2 8AC3                    mov al, bl
:004E65C4 8B17                    mov edx, dword ptr [edi]
:004E65C6 0FB64402FF              movzx eax, byte ptr [edx+eax-01]
:004E65CB 6603F0                  add si, ax
                           1、   ====>SI=49    +  58=A1
                           2、   ====>SI=8104  +  4C=8150
                           3、   ====>SI=FF40  +  31=FF71
                           …… ……省   略…… ……

:004E65CE 660FAF75F8              imul si, word ptr [ebp-08]
                           1、   ====>SI=A1    *  1C84=EF04
                           2、   ====>SI=8150  *  1C84=6D40
                           3、   ====>SI=FF71  *  1C84=1244
                           …… ……省   略…… ……

:004E65D3 660375F6                add si, word ptr [ebp-0A]
                           1、   ====>SI=EF04  +  9200=8104
                           2、   ====>SI=6D40  +  9200=FF40
                           3、   ====>SI=1244  +  9200=A444
                           …… ……省   略…… ……

:004E65D7 43                      inc ebx
:004E65D8 80FB1F                  cmp bl, 1F
:004E65DB 0F8571FFFFFF            jne 004E6552
                                 ====>迴圈30次!得到30個字元的註冊碼!

:004E65E1 33C0                    xor eax, eax
:004E65E3 5A                      pop edx
:004E65E4 59                      pop ecx
:004E65E5 59                      pop ecx
:004E65E6 648910                  mov dword ptr fs:[eax], edx
:004E65E9 6806664E00              push 004E6606

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E6604(U)
|
:004E65EE 8D45F0                  lea eax, dword ptr [ebp-10]
:004E65F1 E84EE3F1FF              call 00404944
:004E65F6 8D45FC                  lea eax, dword ptr [ebp-04]
:004E65F9 E846E3F1FF              call 00404944
:004E65FE C3                      ret


―――――――――――――――――――――――――――――――――
【KeyMake之記憶體序號產生器】:


中斷地址:4E8289
中斷次數:1
第一位元組:58
指令長度:1

記憶體方式:EDX              

―――――――――――――――――――――――――――――――――
【註冊資訊儲存】:


同資料夾下的hhflash.ini中:

[Mainform]
XpMenu=True
top=85
left=595
RegCode=XL1rpw2wT82ALRg3SmPdlTgGsdEU8P

―――――――――――――――――――――――――――――――――
【整        理】:


識別號:ID555490825
註冊碼:XL1rpw2wT82ALRg3SmPdlTgGsdEU8P

―――――――――――――――――――――――――――――――――

   
                   Cracked By 巢水工作坊――fly【OCN】

                          2003-4-10  13:31

相關文章