[算法入門]LRC 傻瓜編輯器 V1.1 簡單算法分析
[算法入門]LRC 傻瓜編輯器 V1.1 簡單算法分析
把以前的破文翻出來,發現這個軟體沒有再更新過,連接還有效。 LRC 傻瓜編輯器 V1.1 簡單算法分析 註冊名:LeExOyO 試驗碼:87654321 註冊碼:6631015573321 點此下載 主文件Easy_LRC_Editor.exe,ASPack 1.06b / 1.061b -> Alexey Solodovnikov的殼,手動脫殼很簡單,Borland Delphi 編程。 執行軟體,點擊說明 ,彈出另外的介面,輸入註冊名、試驗碼,點擊沒有反應。 DEDE載入,看到總共有兩個Form,點擊"Procedures",會點編程的一看就知道軟體註冊介面上的"註冊"按 鈕就是"Button1Click"這個事件了。哈哈~~ OK,OD載入軟體,F9執行,下斷47B588,輸入註冊名、試驗碼,點擊"註冊",攔下: 0047B588 /. 55 push ebp 0047B589 |. 8BEC mov ebp,esp 0047B58B |. 33C9 xor ecx,ecx 0047B58D |. 51 push ecx 0047B58E |. 51 push ecx 0047B58F |. 51 push ecx 0047B590 |. 51 push ecx 0047B591 |. 51 push ecx 0047B592 |. 51 push ecx 0047B593 |. 51 push ecx 0047B594 |. 51 push ecx 0047B595 |. 53 push ebx 0047B596 |. 56 push esi 0047B597 |. 57 push edi 0047B598 |. 8945 FC mov dword ptr ss:[ebp-4],eax 0047B59B |. 33C0 xor eax,eax 0047B59D |. 55 push ebp 0047B59E |. 68 54B74700 push EasyLRCd.0047B754 0047B5A3 |. 64:FF30 push dword ptr fs:[eax] 0047B5A6 |. 64:8920 mov dword ptr fs:[eax],esp 0047B5A9 |. 8D45 F4 lea eax,dword ptr ss:[ebp-C] 0047B5AC |. E8 A784F8FF call EasyLRCd.00403A58 0047B5B1 |. 8D55 F0 lea edx,dword ptr ss:[ebp-10] 0047B5B4 |. 8B45 FC mov eax,dword ptr ss:[ebp-4] 0047B5B7 |. 8B80 040300>mov eax,dword ptr ds:[eax+304] 0047B5BD |. E8 FE0CFBFF call EasyLRCd.0042C2C0 0047B5C2 |. 837D F0 00 cmp dword ptr ss:[ebp-10],0 ; //檢測是否輸入註冊名 0047B5C6 |. 0F84 500100>je EasyLRCd.0047B71C 0047B5CC |. 8D55 F8 lea edx,dword ptr ss:[ebp-8] 0047B5CF |. 8B45 FC mov eax,dword ptr ss:[ebp-4] 0047B5D2 |. 8B80 040300>mov eax,dword ptr ds:[eax+304] 0047B5D8 |. E8 E30CFBFF call EasyLRCd.0042C2C0 0047B5DD |. 8B45 F8 mov eax,dword ptr ss:[ebp-8] ; //eax="LeExOyO" 0047B5E0 |. E8 F386F8FF call EasyLRCd.00403CD8 0047B5E5 |. 8BF0 mov esi,eax ; //esi=eax=0x7 0047B5E7 |. 85F6 test esi,esi 0047B5E9 |. 7E 3C jle short EasyLRCd.0047B627 0047B5EB |. BF 01000000 mov edi,1 0047B5F0 |> 8B45 F8 /mov eax,dword ptr ss:[ebp-8] ; //eax="LeExOyO" 0047B5F3 |. 33DB |xor ebx,ebx 0047B5F5 |. 8A5C38 FF |mov bl,byte ptr ds:[eax+edi-1] ; //依次取註冊名各字串hex值送bl,以第一個字串"L"為例 0047B5F9 |. 8BC3 |mov eax,ebx ; //eax=ebx=0x4C 0047B5FB |. F7EB |imul ebx ; //eax=eax * ebx =0x1690 0047B5FD <>|. F7EB |imul ebx ; //eax=eax * ebx =0x6B2C0 0047B5FF |. 8945 EC |mov dword ptr ss:[ebp-14],eax ; //[ebp-14]=eax=0x6B2C0 0047B602 |. DB45 EC |fild dword ptr ss:[ebp-14] ; //取此值的十進制浮點數438976 0047B605 |. D9FA |fsqrt ; //開平方,值四捨五入,eax=663 0047B607 |. E8 D072F8FF |call EasyLRCd.004028DC ; //開平方的值轉成16進制 0047B60C |. 8BD8 |mov ebx,eax ; //ebx=eax=開平方後的16進制值 0047B60E |. 8D55 E8 |lea edx,dword ptr ss:[ebp-18] 0047B611 |. 8BC3 |mov eax,ebx 0047B613 |. E8 78CFF8FF |call EasyLRCd.00408590 ; //再將這個值轉成10進制 0047B618 |. 8B55 E8 |mov edx,dword ptr ss:[ebp-18] 0047B61B |. 8D45 F4 |lea eax,dword ptr ss:[ebp-C] 0047B61E |. E8 BD86F8FF |call EasyLRCd.00403CE0 0047B623 |. 47 |inc edi 0047B624 |. 4E |dec esi 0047B625 |.^ 75 C9 \jnz short EasyLRCd.0047B5F0 //這個循環就是註冊名的運算了 0047B627 |> 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; //eax=註冊名各字串字串計算後相連組成的字串"663101557313157021331702" 0047B62A |. E8 A986F8FF call EasyLRCd.00403CD8 ; //取上面字串的長度 0047B62F |. 83F8 0A cmp eax,0A ; //與10比較 0047B632 |. 7E 26 jle short EasyLRCd.0047B65A ; //小於則跳 0047B634 |. 8D45 E4 lea eax,dword ptr ss:[ebp-1C] 0047B637 |. 50 push eax 0047B638 |. B9 0A000000 mov ecx,0A 0047B63D |. BA 01000000 mov edx,1 0047B642 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; //eax="663101557313157021331702" 0047B645 |. E8 9688F8FF call EasyLRCd.00403EE0 ; //取字串的前10位 0047B64A |. 8B55 E4 mov edx,dword ptr ss:[ebp-1C] ; //edx="6631015573" 0047B64D |. 8D45 F4 lea eax,dword ptr ss:[ebp-C] 0047B650 |. B9 6CB74700 mov ecx,EasyLRCd.0047B76C ; //ecx=固定字串串"321" 0047B655 |. E8 CA86F8FF call EasyLRCd.00403D24 ; //此函數在上面的字串後加上固定字串"321" 0047B65A |> 8D55 E0 lea edx,dword ptr ss:[ebp-20] 0047B65D |. 8B45 FC mov eax,dword ptr ss:[ebp-4] 0047B660 |. 8B80 100300>mov eax,dword ptr ds:[eax+310] 0047B666 |. E8 550CFBFF call EasyLRCd.0042C2C0 0047B66B |. 8B55 E0 mov edx,dword ptr ss:[ebp-20] ; //edx=試驗碼"87654321" 0047B66E |. 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; eax="6631015573321" 0047B671 |. E8 7287F8FF call EasyLRCd.00403DE8 ; //關鍵比較 0047B676 |. 0F85 A00000>jnz EasyLRCd.0047B71C 0047B67C |. 8B45 FC mov eax,dword ptr ss:[ebp-4] 0047B67F |. 8B80 F40200>mov eax,dword ptr ds:[eax+2F4] 0047B685 |. BA 78B74700 mov edx,EasyLRCd.0047B778 0047B68A |. E8 610CFBFF call EasyLRCd.0042C2F0 0047B68F |. 8B45 FC mov eax,dword ptr ss:[ebp-4] 0047B692 |. 8B80 F80200>mov eax,dword ptr ds:[eax+2F8] 0047B698 |. 33D2 xor edx,edx 0047B69A |. E8 390BFBFF call EasyLRCd.0042C1D8 0047B69F |. A1 24024800 mov eax,dword ptr ds:[480224] 0047B6A4 |. 8B00 mov eax,dword ptr ds:[eax] 0047B6A6 |. 8B80 840300>mov eax,dword ptr ds:[eax+384] 0047B6AC |. 33D2 xor edx,edx 0047B6AE |. E8 4515FDFF call EasyLRCd.0044CBF8 0047B6B3 |. B2 01 mov dl,1 0047B6B5 |. A1 A0B64400 mov eax,dword ptr ds:[44B6A0] 0047B6BA |. E8 E100FDFF call EasyLRCd.0044B7A0 0047B6BF |. 8BD8 mov ebx,eax 0047B6C1 |. BA 01000080 mov edx,80000001 0047B6C6 |. 8BC3 mov eax,ebx 0047B6C8 |. E8 7301FDFF call EasyLRCd.0044B840 0047B6CD |. BA 98B74700 mov edx,EasyLRCd.0047B798 ; ASCII "software\gcbjq" 註冊成功後寫入 註冊表的鍵值 0047B6D2 |. 8BC3 mov eax,ebx 0047B6D4 |. E8 2F06FDFF call EasyLRCd.0044BD08 0047B6D9 |. 84C0 test al,al 0047B6DB |. 75 0C jnz short EasyLRCd.0047B6E9 0047B6DD |. BA 98B74700 mov edx,EasyLRCd.0047B798 ; ASCII "software\gcbjq" 0047B6E2 |. 8BC3 mov eax,ebx 0047B6E4 |. E8 BB01FDFF call EasyLRCd.0044B8A4 0047B6E9 |> 33C9 xor ecx,ecx 0047B6EB |. BA 98B74700 mov edx,EasyLRCd.0047B798 ; ASCII "software\gcbjq" 0047B6F0 |. 8BC3 mov eax,ebx 0047B6F2 |. E8 8902FDFF call EasyLRCd.0044B980 0047B6F7 |. BA B0B74700 mov edx,EasyLRCd.0047B7B0 ; ASCII "zhuche" 是否註冊的標誌 0047B6FC |. 8BC3 mov eax,ebx 0047B6FE |. E8 5D05FDFF call EasyLRCd.0044BC60 0047B703 |. 84C0 test al,al 0047B705 |. 75 0E jnz short EasyLRCd.0047B715 0047B707 |. B1 01 mov cl,1 0047B709 |. BA B0B74700 mov edx,EasyLRCd.0047B7B0 ; ASCII "zhuche" REGEDIT4 [HKEY_CURRENT_USER\Software\gcbjq] "zhuche"=dword:00000001 算法總結: 將註冊名各字串分別運算得到的字串相連,如果大於10位則取前10位然後加上固定字串"321",如果小於10位則就取這幾位。 單字串運算流程: 字串的hex值連乘3次,得到的值換成10進制後開方,如字串"L",hex值為0x4C,則0x4C * 0x4C * 0x4C=0x6B2C0,換成10進制438976,開方得662.55,取整為663。 |
所有時間均為台北時間。現在的時間是 05:03 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *