網路電視專家5.0演算法分析
【破解作者】 blue_devil_bomb[BCG]
【作者郵箱】 ninesunnine@sina.com
【使用工具】 peid OllyDbg1.09 regsnap
【破解平臺】 Win9x/NT/2000/XP
【軟體名稱】 網路電視專家5.0
【下載地址】 Forget
【軟體簡介】 《網路電視專家》內建數百個電視臺和電臺地址,除了可以收看各省的衛星電視臺外,還可以收看香港鳳凰衛視、陽光衛視,韓國、日本、美國、法國等多個國家的電視電影頻道,收視率在95%左右。軟體中還設計了老幼皆宜的桌面遊戲,讓您輕鬆度過休閒時光。軟體使用方法很簡單,只要用滑鼠點選想要收看或收聽的節目頻道名稱,即可享受網路線上實時電視和廣播了節目了。需要提醒您的是,你的系統必須已經安裝了MediaPlayer 和ReaLoneplayer。全面支援Windows9x/ME/NT/2000/XP。
●未註冊版與註冊版的區別
未註冊版 註冊版
只能收看23個電影片道 可以收看236個電影片道和18個網上電影院
只能收聽23個電臺廣播 可以收聽120個電臺廣播
只能玩15個休閒遊戲 可以玩89個休閒遊戲和流行節目
軟體彈出註冊視窗 不會彈出視窗
不能免費升級 終生免費升級
一般的技術支援 更好的技術支援!更好的優質服務。
注意:你的軟體選單如果是灰的,那是因為您還沒有註冊,所以限制了不能使用。您一旦註冊後,將會取消這些限制,您就可以收到所有的電視和廣播節目了。
【軟體大小】 331kb
【加殼方式】 ASPack 2.1 -> Alexey Solodovnikov
【破解宣告】 不為破解而破解,只為學習而破解
--------------------------------------------------------------------------------
【破解內容】
有一天無意中發現該軟體,軟體介紹描述的神乎其神便決定當下一試,一試不爽,有諸多限制,均是要求註冊。註冊費用不高,可我是窮人,地道的窮人,又沒人施捨,自己的事情自己做,決定自己動手解決它,以節約幾包煙錢。終於在抽了幾包煙後,把它的註冊搞定!但還是有問題,具體分析請看!
該軟體在沒有註冊時,每次啟動就會彈出煩人的註冊框,氣煞老夫,我是什麼,我是什麼,哈哈,我到底是什麼?靠,我是男人,我破了你的xxxxx。
用peid檢測發現是ASPack 2.1 -> Alexey Solodovnikov用專門的脫殼軟體Stripper.exe來脫之,脫後執行,一切OK,執行破解之!拿常用的斷點設之,不能中斷,只能在字元參考上下斷了。此時OK了。還有該軟體在輸入的註冊資訊不正確時沒有任何的提示資訊,只有註冊成功時才有提示,且將註冊資訊寫入登錄檔\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Sysdisk位置。
我們一路跟蹤到如下:
程式碼:
00497A10 . 55 PUSH EBP 00497A11 . 8BEC MOV EBP,ESP 00497A13 . 33C9 XOR ECX,ECX 00497A15 . 51 PUSH ECX 00497A16 . 51 PUSH ECX 00497A17 . 51 PUSH ECX 00497A18 . 51 PUSH ECX 00497A19 . 53 PUSH EBX 00497A1A . 56 PUSH ESI 00497A1B . 57 PUSH EDI 00497A1C . 8BD8 MOV EBX,EAX 00497A1E . 33C0 XOR EAX,EAX 00497A20 . 55 PUSH EBP 00497A21 . 68 247B4900 PUSH _nettv.00497B24 00497A26 . 64:FF30 PUSH DWORD PTR FS:[EAX] 00497A29 . 64:8920 MOV DWORD PTR FS:[EAX],ESP 00497A2C . 33D2 XOR EDX,EDX 00497A2E . 55 PUSH EBP 00497A2F . 68 E47A4900 PUSH _nettv.00497AE4 00497A34 . 64:FF32 PUSH DWORD PTR FS:[EDX] 00497A37 . 64:8922 MOV DWORD PTR FS:[EDX],ESP 00497A3A . 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 00497A3D . 8B83 E0020000 MOV EAX,DWORD PTR DS:[EBX+2E0] 00497A43 . E8 D44BF9FF CALL _nettv.0042C61C ; 名字長度 00497A48 . 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; 輸入的名字 00497A4B . 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 00497A4E . E8 B90AF7FF CALL _nettv.0040850C 00497A53 . 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; 輸入名字了嗎? 00497A57 . 75 18 JNZ SHORT _nettv.00497A71 00497A59 . A1 50A84900 MOV EAX,DWORD PTR DS:[49A850] ; 00497A5E . 8B00 MOV EAX,DWORD PTR DS:[EAX] 00497A60 . E8 D3FDFAFF CALL _nettv.00447838 ; 輸入名字空時在標題上顯示未註冊 00497A65 . A1 C0B94900 MOV EAX,DWORD PTR DS:[49B9C0] 00497A6A . E8 C1FDFAFF CALL _nettv.00447830 00497A6F . EB 69 JMP SHORT _nettv.00497ADA 00497A71 > 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 00497A74 . 8B83 E4020000 MOV EAX,DWORD PTR DS:[EBX+2E4] 00497A7A . E8 9D4BF9FF CALL _nettv.0042C61C ; 註冊碼長度 00497A7F . 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; 輸入的註冊碼 00497A82 . 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C] 00497A85 . E8 820AF7FF CALL _nettv.0040850C 00497A8A . 837D F4 00 CMP DWORD PTR SS:[EBP-C],0 ; 輸入註冊碼了嗎? 00497A8E 75 18 JNZ SHORT _nettv.00497AA8 00497A90 . A1 50A84900 MOV EAX,DWORD PTR DS:[49A850] 00497A95 . 8B00 MOV EAX,DWORD PTR DS:[EAX] 00497A97 . E8 9CFDFAFF CALL _nettv.00447838 ; 沒輸註冊碼時,標題上顯示未註冊 00497A9C . A1 C0B94900 MOV EAX,DWORD PTR DS:[49B9C0] 00497AA1 . E8 8AFDFAFF CALL _nettv.00447830 00497AA6 . EB 32 JMP SHORT _nettv.00497ADA 00497AA8 > 8BC3 MOV EAX,EBX 00497AAA . E8 25020000 CALL _nettv.00497CD4 ; 名字與註冊碼運算,註冊演算法核心,見下 00497AAF . 84C0 TEST AL,AL ; 判斷註冊是否成功AL非0成功,0失敗 00497AB1 . 74 09 JE SHORT _nettv.00497ABC 00497AB3 . 8BC3 MOV EAX,EBX 00497AB5 . E8 7A000000 CALL _nettv.00497B34 ; 註冊成功時將註冊資訊寫入登錄檔 00497ABA . EB 1E JMP SHORT _nettv.00497ADA 00497ABC > B8 F4010000 MOV EAX,1F4 00497AC1 > 48 DEC EAX 00497AC2 .^75 FD JNZ SHORT _nettv.00497AC1 00497AC4 . A1 50A84900 MOV EAX,DWORD PTR DS:[49A850] 00497AC9 . 8B00 MOV EAX,DWORD PTR DS:[EAX] 00497ACB . E8 68FDFAFF CALL _nettv.00447838 00497AD0 . A1 C0B94900 MOV EAX,DWORD PTR DS:[49B9C0] 00497AD5 . E8 56FDFAFF CALL _nettv.00447830 00497ADA > 33C0 XOR EAX,EAX 00497ADC . 5A POP EDX 00497ADD . 59 POP ECX 00497ADE . 59 POP ECX 00497ADF . 64:8910 MOV DWORD PTR FS:[EAX],EDX 00497AE2 . EB 12 JMP SHORT _nettv.00497AF6 00497AE4 .^E9 D7B7F6FF JMP _nettv.004032C0 00497AE9 . B8 F4010000 MOV EAX,1F4 00497AEE > 48 DEC EAX 00497AEF .^75 FD JNZ SHORT _nettv.00497AEE 00497AF1 . E8 26BBF6FF CALL _nettv.0040361C 00497AF6 > 33C0 XOR EAX,EAX 00497AF8 . 5A POP EDX 00497AF9 . 59 POP ECX 00497AFA . 59 POP ECX 00497AFB . 64:8910 MOV DWORD PTR FS:[EAX],EDX 00497AFE . 68 2B7B4900 PUSH _nettv.00497B2B 00497B03 > 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 00497B06 . E8 D1BFF6FF CALL _nettv.00403ADC 00497B0B . 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 00497B0E . E8 C9BFF6FF CALL _nettv.00403ADC 00497B13 . 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 00497B16 . E8 C1BFF6FF CALL _nettv.00403ADC 00497B1B . 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00497B1E . E8 B9BFF6FF CALL _nettv.00403ADC 00497B23 . C3 RETN 註冊演算法核心如下: 00497CD4 /$ 55 PUSH EBP 00497CD5 |. 8BEC MOV EBP,ESP 00497CD7 |. 83C4 E8 ADD ESP,-18 00497CDA |. 53 PUSH EBX 00497CDB |. 56 PUSH ESI 00497CDC |. 33D2 XOR EDX,EDX 00497CDE |. 8955 E8 MOV DWORD PTR SS:[EBP-18],EDX 00497CE1 |. 8955 EC MOV DWORD PTR SS:[EBP-14],EDX 00497CE4 |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX 00497CE7 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 00497CEA |. 33C0 XOR EAX,EAX 00497CEC |. 55 PUSH EBP 00497CED |. 68 D37D4900 PUSH _nettv.00497DD3 00497CF2 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 00497CF5 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 00497CF8 |. 33DB XOR EBX,EBX ;EBX清零,做為結果存放用的 00497CFA |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C] 00497CFD |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 00497D00 |. 8B80 E0020000 MOV EAX,DWORD PTR DS:[EAX+2E0] 00497D06 |. E8 1149F9FF CALL _nettv.0042C61C ;返回EAX為字串長度 00497D0B |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ;將名字賦給EAX 00497D0E |. E8 49C0F6FF CALL _nettv.00403D5C ;獲取字串長度 00497D13 |. 8BF0 MOV ESI,EAX 00497D15 |. 85F6 TEST ESI,ESI ;判斷長度 00497D17 |. 7E 38 JLE SHORT _nettv.00497D51 00497D19 |. C745 F0 010000>MOV DWORD PTR SS:[EBP-10],1 00497D20 |> 8D45 EC /LEA EAX,DWORD PTR SS:[EBP-14] ;下面依次取名字字串字元運算 00497D23 |. 50 |PUSH EAX 00497D24 |. B9 01000000 |MOV ECX,1 ;每次取1個 00497D29 |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10] ;第i個 00497D2C |. 8B45 F4 |MOV EAX,DWORD PTR SS:[EBP-C] ;將名字賦給EAX 00497D2F |. E8 30C2F6FF |CALL _nettv.00403F64 ;取名字字串第i個字元,每次取1個 00497D34 |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14] ;名字字串的第i個字元存放的記憶體 00497D37 |. E8 E4C1F6FF |CALL _nettv.00403F20 ;判斷第i個字元 00497D3C |. 8A00 |MOV AL,BYTE PTR DS:[EAX] ;從記憶體中取出第i個值賦給AL 00497D3E |. 25 FF000000 |AND EAX,0FF ;EAX&=0xff;將AL值賦給EAX 00497D43 |. 03D8 |ADD EBX,EAX ;用字元的值累加更新EBX的值 00497D45 |. 81F3 05FA0B00 |XOR EBX,0BFA05 ;EBX^=0xBFA05; 00497D4B |. FF45 F0 |INC DWORD PTR SS:[EBP-10] ;i++; 00497D4E |. 4E |DEC ESI ;判斷迴圈是否結束 00497D4F |.^75 CF \JNZ SHORT _nettv.00497D20 00497D51 |> A1 CCB94900 MOV EAX,DWORD PTR DS:[49B9CC] ;一個固定的值為0x2977537 00497D56 |. 8BD0 MOV EDX,EAX 00497D58 |. C1E0 04 SHL EAX,4 ;2977537左移四位 00497D5B |. 03C2 ADD EAX,EDX ;EAX=2977537+(2977537<<4) 00497D5D |. 03D8 ADD EBX,EAX ;EBX=字串運算結果+EAX 00497D5F |. 81C3 D4A31300 ADD EBX,13A3D4 ;EBX+=0x13a3d4 00497D65 |. 81F3 8DED5900 XOR EBX,59ED8D ;EBX^=0x59ED8D 00497D6B |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18] 00497D6E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 00497D71 |. 8B80 E4020000 MOV EAX,DWORD PTR DS:[EAX+2E4] 00497D77 |. E8 A048F9FF CALL _nettv.0042C61C ;返回EAX為註冊碼長度 00497D7C |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ;註冊碼賦給EAX 00497D7F |. E8 1C09F7FF CALL _nettv.004086A0 ;註冊碼10進位制數轉化成16進位制數賦給EAX 00497D84 |. 8BF3 MOV ESI,EBX 00497D86 |. 81F6 2473C400 XOR ESI,0C47324 ;ESI=名字運算結果^0xC47324; 00497D8C |. 3BC6 CMP EAX,ESI ;註冊碼與名字運算結果比較 00497D8E |. 75 19 JNZ SHORT _nettv.00497DA9 ;相等註冊成功; 00497D90 |. C645 FB 01 MOV BYTE PTR SS:[EBP-5],1 00497D94 |. B8 C4B94900 MOV EAX,_nettv.0049B9C4 00497D99 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] 00497D9C |. E8 8FBDF6FF CALL _nettv.00403B30 00497DA1 |. 8935 C8B94900 MOV DWORD PTR DS:[49B9C8],ESI 00497DA7 |. EB 04 JMP SHORT _nettv.00497DAD 00497DA9 |> C645 FB 00 MOV BYTE PTR SS:[EBP-5],0 00497DAD |> 33C0 XOR EAX,EAX 00497DAF |. 5A POP EDX 00497DB0 |. 59 POP ECX 00497DB1 |. 59 POP ECX 00497DB2 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 00497DB5 |. 68 DA7D4900 PUSH _nettv.00497DDA 00497DBA |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 00497DBD |. E8 1ABDF6FF CALL _nettv.00403ADC 00497DC2 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] 00497DC5 |. E8 12BDF6FF CALL _nettv.00403ADC 00497DCA |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 00497DCD |. E8 0ABDF6FF CALL _nettv.00403ADC 00497DD2 \. C3 RETN 00497DD3 .^E9 9CB7F6FF JMP _nettv.00403574 00497DD8 .^EB E0 JMP SHORT _nettv.00497DBA 00497DDA . 8A45 FB MOV AL,BYTE PTR SS:[EBP-5] 00497DDD . 5E POP ESI 00497DDE . 5B POP EBX 00497DDF . 8BE5 MOV ESP,EBP 00497DE1 . 5D POP EBP 00497DE2 . C3 RETN 下面函式為寫入登錄檔部分 00497B34 /$ 55 PUSH EBP 00497B35 |. 8BEC MOV EBP,ESP 00497B37 |. 33C9 XOR ECX,ECX 00497B39 |. 51 PUSH ECX 00497B3A |. 51 PUSH ECX 00497B3B |. 51 PUSH ECX 00497B3C |. 51 PUSH ECX 00497B3D |. 53 PUSH EBX 00497B3E |. 56 PUSH ESI 00497B3F |. 57 PUSH EDI 00497B40 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 00497B43 |. 33C0 XOR EAX,EAX 00497B45 |. 55 PUSH EBP 00497B46 |. 68 497C4900 PUSH _nettv.00497C49 00497B4B |. 64:FF30 PUSH DWORD PTR FS:[EAX] 00497B4E |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 00497B51 |. B2 01 MOV DL,1 00497B53 |. A1 B8BB4400 MOV EAX,DWORD PTR DS:[44BBB8] 00497B58 |. E8 5B41FBFF CALL _nettv.0044BCB8 00497B5D |. 8BF8 MOV EDI,EAX 00497B5F |. BA 01000080 MOV EDX,80000001 00497B64 |. 8BC7 MOV EAX,EDI 00497B66 |. E8 ED41FBFF CALL _nettv.0044BD58 00497B6B |. B1 01 MOV CL,1 00497B6D |. BA 607C4900 MOV EDX,_nettv.00497C60 ; ASCII "\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Sysdisk" 寫入登錄檔位置 00497B72 |. 8BC7 MOV EAX,EDI 00497B74 |. E8 4342FBFF CALL _nettv.0044BDBC 00497B79 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 00497B7C |. E8 5BBFF6FF CALL _nettv.00403ADC 00497B81 |. A1 C4B94900 MOV EAX,DWORD PTR DS:[49B9C4] ;註冊輸入的名字賦給EAX 00497B86 |. E8 D1C1F6FF CALL _nettv.00403D5C ;取註冊名字的長度 00497B8B |. 8BD8 MOV EBX,EAX 00497B8D |. 85DB TEST EBX,EBX ;判斷註冊名字的長度是否大於0 00497B8F |. 7E 40 JLE SHORT _nettv.00497BD1 00497B91 |. BE 01000000 MOV ESI,1 00497B96 |> 8D45 F0 /LEA EAX,DWORD PTR SS:[EBP-10] ;註冊的名字在寫入登錄檔前進行運算。 00497B99 |. 50 |PUSH EAX 00497B9A |. B9 01000000 |MOV ECX,1 00497B9F |. 8BD6 |MOV EDX,ESI 00497BA1 |. A1 C4B94900 |MOV EAX,DWORD PTR DS:[49B9C4] ;註冊的名字賦給EAX 00497BA6 |. E8 B9C3F6FF |CALL _nettv.00403F64 00497BAB |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10] ;EAX記憶體位置存放名字第EDX個字元 00497BAE |. E8 6DC3F6FF |CALL _nettv.00403F20 00497BB3 |. 33D2 |XOR EDX,EDX 00497BB5 |. 8A10 |MOV DL,BYTE PTR DS:[EAX] ;將第EDX個字元賦給DL 00497BB7 |. 83C2 05 |ADD EDX,5 ;EDX+=5; 00497BBA |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C] 00497BBD |. E8 C2C0F6FF |CALL _nettv.00403C84 00497BC2 |. 8B55 F4 |MOV EDX,DWORD PTR SS:[EBP-C] 00497BC5 |. 8D45 F8 |LEA EAX,DWORD PTR SS:[EBP-8] 00497BC8 |. E8 97C1F6FF |CALL _nettv.00403D64 00497BCD |. 46 |INC ESI 00497BCE |. 4B |DEC EBX 00497BCF |.^75 C5 \JNZ SHORT _nettv.00497B96 00497BD1 |> B8 C4B94900 MOV EAX,_nettv.0049B9C4 00497BD6 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ;名字變換後的字串賦給EDX 00497BD9 |. E8 52BFF6FF CALL _nettv.00403B30 00497BDE |. 8B0D C4B94900 MOV ECX,DWORD PTR DS:[49B9C4] 00497BE4 |. BA A47C4900 MOV EDX,_nettv.00497CA4 ; ASCII "FN ame" 00497BE9 |. 8BC7 MOV EAX,EDI 00497BEB |. E8 6843FBFF CALL _nettv.0044BF58 00497BF0 |. 8B0D C8B94900 MOV ECX,DWORD PTR DS:[49B9C8] 00497BF6 |. 81F1 0AB30000 XOR ECX,0B30A ;註冊碼^0xB30A為寫入的註冊碼 00497BFC |. BA B47C4900 MOV EDX,_nettv.00497CB4 ; ASCII "FP ass" 00497C01 |. 8BC7 MOV EAX,EDI 00497C03 |. E8 F443FBFF CALL _nettv.0044BFFC 00497C08 |. 8BC7 MOV EAX,EDI 00497C0A |. E8 05B2F6FF CALL _nettv.00402E14 ;寫入登錄檔 00497C0F |. A1 50A84900 MOV EAX,DWORD PTR DS:[49A850] 00497C14 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 00497C16 |. 8B80 D0020000 MOV EAX,DWORD PTR DS:[EAX+2D0] 00497C1C |. BA C47C4900 MOV EDX,_nettv.00497CC4 00497C21 |. E8 A266FDFF CALL _nettv.0046E2C8 00497C26 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 00497C29 |. E8 B6010000 CALL _nettv.00497DE4 00497C2E |. 33C0 XOR EAX,EAX 00497C30 |. 5A POP EDX 00497C31 |. 59 POP ECX 00497C32 |. 59 POP ECX 00497C33 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 00497C36 |. 68 507C4900 PUSH _nettv.00497C50 00497C3B |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 00497C3E |. BA 03000000 MOV EDX,3 00497C43 |. E8 B8BEF6FF CALL _nettv.00403B00 00497C48 \. C3 RETN 00497C49 .^E9 26B9F6FF JMP _nettv.00403574 00497C4E .^EB EB JMP SHORT _nettv.00497C3B
該軟體的註冊部分至此已較明晰,該軟體第次啟動都會讀取登錄檔的註冊資訊進行判斷,以決定是否以註冊版本執行該軟體,不過我還有一個疑問還沒有解決,有興趣的網友可以幫忙解決一下,就是如上註冊成功後,該軟體顯示為註冊版本,可是還是沒有將選單中的灰極按鈕變亮,當然,我們可以很輕鬆將選單有灰變亮,但這也給我的破解留下了遺憾!
選單有灰變亮,可以使用的過程如下:
程式碼:
00412672 BA BC264100 MOV EDX,_nettv.004126BC ; ASCII "False" 修改此處即可將選單由灰變亮 00412677 |. E8 B414FFFF CALL _nettv.00403B30 0041267C |. EB 2F JMP SHORT _nettv.004126AD 0041267E |> 8BC6 MOV EAX,ESI ; Case 9 of switch 00412601 00412680 |. BA CC264100 MOV EDX,_nettv.004126CC ; ASCII "True" 00412685 |. E8 A614FFFF CALL _nettv.00403B30 0041268A |. EB 21 JMP SHORT _nettv.004126AD 0041268C |> 8BC6 MOV EAX,ESI ; Case D of switch 00412601 0041268E |. BA DC264100 MOV EDX,_nettv.004126DC ; ASCII "nil" 00412693 |. E8 9814FFFF CALL _nettv.00403B30 00412698 |. EB 13 JMP SHORT _nettv.004126AD 0041269A |> 8BC6 MOV EAX,ESI ; Case 0 of switch 00412601 0041269C |. BA E8264100 MOV EDX,_nettv.004126E8 ; ASCII "Null" 004126A1 |. E8 8A14FFFF CALL _nettv.00403B30 004126A6 |. EB 05 JMP SHORT _nettv.004126AD 004126A8 |> E8 13F2FFFF CALL _nettv.004118C0 ; Default case of switch 00412601 004126AD |> 5A POP EDX 004126AE |. 5E POP ESI 004126AF |. 5B POP EBX 004126B0 \. C3 RETN
注:將412672處的MOV EDX,_nettv.004126BC 改為MOV EDX,_nettv.004126CC即可,此時軟體執行正常。
上面我們將該軟體的註冊過程及演算法描述的很清楚,
具體演算法如下:
1、依次取名字的每一個字元,每一字元的ASCII值設為 Vlaue[i],結果存貯為JG=0,名字長度Len,註冊碼為ZCM;
2、JG+=Vlaue[i];JG^=0xbfa05;i=[0,Len-1];
3、JG+=0x2977537+(0x2977537<<4);
4、JG+=0x13a3d4;
5、JG^=0x59ed8d;
6、JG^=0xC47324;
7、ZCM=JG;
下面給出該演算法的C原始碼,程式在VC環境下除錯透過,且在多臺機器上註冊成功!
程式碼:
程式碼:
void CNettv50Dlg::OnButton1() { // TODO: Add your control notification handler code here m_Ctrledit1.GetWindowText(m_Vedit1); int i; unsigned long eax,ebx=0; for(i=0;i<m_Vedit1.GetLength();i++) { eax=m_Vedit1.GetAt(i); eax&=0xff; ebx+=eax; ebx^=0xbfa05; } unsigned long edx; //[49b9cc]=2977537 eax=edx=0x2977537; eax<<=4; eax+=edx; ebx+=eax; ebx+=0x13a3d4; ebx^=0x59ed8d; ebx^=0xC47324; m_Vedit2.Format("%lu",ebx); m_Ctrledit2.SetWindowText(m_Vedit2); } --------------------------------------------------------------------------------
【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整,並表明BCG字樣,謝謝!
--------------------------------------------------------------------------------
【總結】註冊成功後,該軟體顯示為註冊版本,可是還是沒有將選單中的灰極按鈕變亮,有興趣的網友可以幫忙解決一下。
由於本人水平有限,不足之處還請批評指正!
--------------------------------------------------------------------------------
相關文章
- 簡單演算法――網路電話 Talking anywhere 5.02003-03-14演算法
- 簡單演算法:迷你網路電視演算法分析 (8千字)2015-11-15演算法
- (原創)叮咚極品網路電視電影III
V3.92-----演算法分析2004-05-28演算法
- 迷你網路電視5.1註冊演算法2003-07-04演算法
- 網際網路電視勝局已定 傳統電視翻身不易2016-11-04
- 上網求職走入電視網路 (轉)2007-12-07求職
- 網路電視軟體下載2007-03-10
- 如何選購智慧電視?三款網際網路智慧電視推薦2018-09-14
- 傳統電視與網際網路電視品牌決勝局來臨?2016-10-29
- 網路安全專家呼籲川普政府建立民用網路DARPA2017-07-03
- 產業安全專家談|金融行業如何踐行《反電信網路詐騙法》?2022-11-15產業行業
- Btdog磁力搜尋、btdog網路電視2019-05-11
- CTR:2021年Q2網際網路電視媒體分析報告2021-12-06
- 廣電:電視不能播的 網路也不能播2016-03-02
- 網際網路專案中“延遲”分析2011-07-11
- 網際網路電視程式化購買將把電視廣告帶向何方?2016-10-26
- 騰訊釋出企鵝電視 老馬要開始玩網際網路電視了!2016-01-15
- 如何檢視區域網內電腦網路流量2016-11-22
- 【下載--網路工具】上網看電視--SopGUI(轉)2007-08-11GUI
- 螢幕錄影專家
v5.0 註冊碼破解2015-11-15
- 打造自己的網路電視(菜鳥級)2015-11-15
- 貴州大資料及網路安全專家委員會成立2017-07-04大資料
- Cisco認證網路專家語音(CCNP語音)2015-04-03
- 網路安全專家成後疫情時代最受追捧專業人員2021-02-28
- 蔣林濤:網路5.0主旨報告2021-09-15
- 陸川周迅新片首播 微鯨電視打破網際網路電視單片付費模式2016-09-06模式
- 網際網路電視牌照方是什麼?為什麼智慧電視內容全靠它2016-09-07
- 2019海信網際網路電視白皮書2020-02-04
- 網路電話/網路電話/網路電話公司【深圳龍人計算機-網路電話基地】2008-04-18計算機
- 海信電器:我們已經是一家網際網路公司2015-05-07
- 專家看榜 | 工業網際網路進入政策蜜月期2018-03-13
- 聽美國專家揭祕中國網際網路癱瘓的原因2014-01-24
- 海外專家熱議習主席網際網路大會講話2015-12-18
- 智慧電視網路機頂盒和有限電視機頂盒的區別2016-07-12
- 網路電視大師 2004VER2.0.0.1版演算法分析(簡單)DD本年度最後一篇2015-11-15演算法
- 三個數字告訴你:傳統電視已死,網際網路電視受歡迎2017-07-20
- 分析師稱有線電視將耗盡頻寬導致網路崩潰2007-08-20
- 網路效能總不好?昇騰AI網路調優專家AOE幫你來“看看”2023-02-22AI