ufony破解記錄
看雪資料發表於2004-06-06
ufony破解記錄
kongfoo/2004.6.6
由於要將2首WMA轉成MP3,找到了這個軟體。不註冊只能轉換60秒的音樂,
哪有這樣做限制的?氣憤中。。。
PEiD查殼tElock 0.98b1,這個殼不錯啊。想一下搞音訊轉換演算法是少不了
的,這個軟體好像不易對付呢。。。
目的在於搞掂限制,儘快脫殼。
直接查OEP:4135e4。LordPE dump full,ImpREC有一堆函式無效,用tElock 98
/tElock外掛都不行。trace level2找到了幾個。trace level3又找到幾個。最後
剩6個,OD attach上去分析一下。
第1個3e0011:
程式碼:
003E0011 B8 8DC44300 MOV EAX,43C48D 003E0016 90 NOP 003E0017 FF30 PUSH DWORD PTR DS:[EAX] 003E0019 C3 RETN
43c48d處是0,哪麼這個項可以cut掉了。跟著的3個和3e0011的程式碼一樣,都
cut掉。剩下2個指向程式本身空間,不管。fix dump。脫出來可以執行。
OD載入脫殼後的程式,倒,程式自帶的DLL都上了殼。。。
註冊視窗點確定後什麼反應都沒有,果然沒有估計錯誤。由於DLL的殼(都是
tElock)沒脫去,直接在OD執行很煩,所以用attach的辦法。下斷GetWindowTextA。
沒斷到,一狠心,把hlclass的函式全斷了。光下斷就用了近10分鐘:(
這一招可謂必殺:)點確定後斷下:
程式碼:
0040BE31 FF15 BCE24300 CALL DWORD PTR DS:[<&hlclass.??0CRegistr>; hlclass.??0CRegistry@@QAE@XZ ==這裡斷下 0040BE37 8D4C24 44 LEA ECX,DWORD PTR SS:[ESP+44] 0040BE3B C64424 64 02 MOV BYTE PTR SS:[ESP+64],2 0040BE40 FF15 2CE14300 CALL DWORD PTR DS:[<&hlclass.??0CString@>; hlclass.??0CString@@QAE@XZ 0040BE46 8D4C24 4C LEA ECX,DWORD PTR SS:[ESP+4C] 0040BE4A C64424 64 03 MOV BYTE PTR SS:[ESP+64],3 0040BE4F FF15 B8E24300 CALL DWORD PTR DS:[<&hlclass.??0CMenu@@Q>; hlclass.??0CMenu@@QAE@XZ 0040BE55 8B3D F0E04300 MOV EDI,DWORD PTR DS:[<&hlclass.?IsEmpty>; hlclass.?IsEmpty@CString@@QAEHXZ 0040BE5B 8D4C24 20 LEA ECX,DWORD PTR SS:[ESP+20] 0040BE5F C64424 64 04 MOV BYTE PTR SS:[ESP+64],4 0040BE64 FFD7 CALL EDI 0040BE66 85C0 TEST EAX,EAX 0040BE68 0F85 9F000000 JNZ dumped_.0040BF0D 0040BE6E 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18] 0040BE72 FFD7 CALL EDI 0040BE74 85C0 TEST EAX,EAX 0040BE76 0F85 91000000 JNZ dumped_.0040BF0D 0040BE7C 8B3D C4E04300 MOV EDI,DWORD PTR DS:[<&hlclass.??0CStri>; hlclass.??0CString@@QAE@PAD@Z 0040BE82 83EC 08 SUB ESP,8 0040BE85 8BCC MOV ECX,ESP 0040BE87 896424 18 MOV DWORD PTR SS:[ESP+18],ESP 0040BE8B 68 34EB4100 PUSH dumped_.0041EB34 ; ASCII "Software\Ufony\Registration" 0040BE90 FFD7 CALL EDI 0040BE92 68 01000080 PUSH 80000001 0040BE97 8D4C24 34 LEA ECX,DWORD PTR SS:[ESP+34] 0040BE9B FF15 4CE44300 CALL DWORD PTR DS:[<&hlclass.?CreateKey@>; hlclass.?CreateKey@CRegistry@@QAEJPAUHKEY__@@VCString@@@Z 0040BEA1 8B2D B8E34300 MOV EBP,DWORD PTR DS:[<&hlclass.??0CStri>; hlclass.??0CString@@QAE@AAV0@@Z 0040BEA7 83EC 08 SUB ESP,8 0040BEAA 8D5424 28 LEA EDX,DWORD PTR SS:[ESP+28] 0040BEAE 8BCC MOV ECX,ESP 0040BEB0 896424 18 MOV DWORD PTR SS:[ESP+18],ESP 0040BEB4 52 PUSH EDX 0040BEB5 FFD5 CALL EBP 0040BEB7 83EC 08 SUB ESP,8 0040BEBA 8BCC MOV ECX,ESP 0040BEBC 896424 24 MOV DWORD PTR SS:[ESP+24],ESP 0040BEC0 68 28EB4100 PUSH dumped_.0041EB28 ; ASCII "UserName" 0040BEC5 C64424 78 05 MOV BYTE PTR SS:[ESP+78],5 0040BECA FFD7 CALL EDI 0040BECC 8B1D 48E44300 MOV EBX,DWORD PTR DS:[<&hlclass.?SetValu>; hlclass.?SetValue@CRegistry@@QAEJVCString@@0@Z 0040BED2 8D4C24 38 LEA ECX,DWORD PTR SS:[ESP+38] 0040BED6 C64424 74 04 MOV BYTE PTR SS:[ESP+74],4 0040BEDB FFD3 CALL EBX 0040BEDD 83EC 08 SUB ESP,8 0040BEE0 8D4424 20 LEA EAX,DWORD PTR SS:[ESP+20] 0040BEE4 8BCC MOV ECX,ESP 0040BEE6 896424 1C MOV DWORD PTR SS:[ESP+1C],ESP 0040BEEA 50 PUSH EAX 0040BEEB FFD5 CALL EBP 0040BEED 83EC 08 SUB ESP,8 0040BEF0 8BCC MOV ECX,ESP 0040BEF2 896424 20 MOV DWORD PTR SS:[ESP+20],ESP 0040BEF6 68 20EB4100 PUSH dumped_.0041EB20 ; ASCII "RegCode" 0040BEFB C64424 78 06 MOV BYTE PTR SS:[ESP+78],6 0040BF00 FFD7 CALL EDI 0040BF02 8D4C24 38 LEA ECX,DWORD PTR SS:[ESP+38] 0040BF06 C64424 74 04 MOV BYTE PTR SS:[ESP+74],4 0040BF0B FFD3 CALL EBX 0040BF0D 8B4C24 70 MOV ECX,DWORD PTR SS:[ESP+70] 0040BF11 8B5424 6C MOV EDX,DWORD PTR SS:[ESP+6C] 0040BF15 51 PUSH ECX 0040BF16 52 PUSH EDX 0040BF17 8BCE MOV ECX,ESI 0040BF19 FF15 20E44300 CALL DWORD PTR DS:[<&hlclass.?OnCancelCl>; hlclass.?OnOKClick@CDialog@@QAEJIJ@Z 0040BF1F 8D4C24 4C LEA ECX,DWORD PTR SS:[ESP+4C] 0040BF23 C64424 64 08 MOV BYTE PTR SS:[ESP+64],8 0040BF28 FF15 98E24300 CALL DWORD PTR DS:[<&hlclass.??1CMenu@@U>; hlclass.??1CMenu@@UAE@XZ 0040BF2E 8B35 9CE04300 MOV ESI,DWORD PTR DS:[<&hlclass.??1CStri>; hlclass.??1CString@@QAE@XZ 0040BF34 8D4C24 44 LEA ECX,DWORD PTR SS:[ESP+44] 0040BF38 C64424 64 07 MOV BYTE PTR SS:[ESP+64],7 0040BF3D FFD6 CALL ESI 0040BF3F 8D4C24 28 LEA ECX,DWORD PTR SS:[ESP+28] 0040BF43 C64424 64 01 MOV BYTE PTR SS:[ESP+64],1 0040BF48 FF15 94E24300 CALL DWORD PTR DS:[<&hlclass.??1CRegistr>; hlclass.??1CRegistry@@QAE@XZ 0040BF4E 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18] 0040BF52 C64424 64 00 MOV BYTE PTR SS:[ESP+64],0 0040BF57 FFD6 CALL ESI 0040BF59 8D4C24 20 LEA ECX,DWORD PTR SS:[ESP+20] 0040BF5D C74424 64 FFFFF>MOV DWORD PTR SS:[ESP+64],-1 0040BF65 FFD6 CALL ESI 0040BF67 8B4C24 5C MOV ECX,DWORD PTR SS:[ESP+5C] 0040BF6B 5F POP EDI 0040BF6C 5E POP ESI 0040BF6D 5D POP EBP 0040BF6E 33C0 XOR EAX,EAX 0040BF70 64:890D 0000000>MOV DWORD PTR FS:[0],ECX 0040BF77 5B POP EBX 0040BF78 83C4 58 ADD ESP,58 0040BF7B C2 0800 RETN 8
只是將使用者名稱和sn直接放到登錄檔。。。在呼叫轉換視窗時會彈出限制資訊視窗,
應該會判斷是否註冊,下斷hlclass所有登錄檔操作函式。斷下:
程式碼:
0040A612 FF15 BCE24300 CALL DWORD PTR DS:[<&hlclass.??0CRegistr>; hlclass.??0CRegistry@@QAE@XZ 0040A64E E8 CD660000 CALL dumped_.00410D20 0040A653 85C0 TEST EAX,EAX 0040A655 /74 41 JZ SHORT dumped_.0040A698 ==令這個跳不跳就可以跳過限制資訊視窗,但只能轉換1分鐘的限制還在。
很明顯410d20就是判斷是否註冊的函式了。
程式碼:
00410E26 8B4C24 18 MOV ECX,DWORD PTR SS:[ESP+18] 00410E2A 6A 01 PUSH 1 00410E2C 51 PUSH ECX ==sn 00410E2D 8D5424 18 LEA EDX,DWORD PTR SS:[ESP+18] 00410E31 52 PUSH EDX 00410E32 8BCF MOV ECX,EDI 00410E34 E8 77F5FFFF CALL dumped_.004103B0 ==透過sn計算出key 00410420 8B8424 90000000 MOV EAX,DWORD PTR SS:[ESP+90] ==sn 00410427 50 PUSH EAX 00410428 8D4C24 38 LEA ECX,DWORD PTR SS:[ESP+38] 0041042C C68424 88000000>MOV BYTE PTR SS:[ESP+88],5 00410434 FF15 C4E04300 CALL DWORD PTR DS:[<&hlclass.??0CString@>; hlclass.??0CString@@QAE@PAD@Z ==搬字串 0041043A 8D4C24 34 LEA ECX,DWORD PTR SS:[ESP+34] ==sn 0041043E C68424 84000000>MOV BYTE PTR SS:[ESP+84],6 00410446 FF15 50E44300 CALL DWORD PTR DS:[<&hlclass.?Trim@CStri>; hlclass.?Trim@CString@@QAEXXZ ==返回了第1個字母的ASCII碼 0041044C 8D4C24 34 LEA ECX,DWORD PTR SS:[ESP+34] ==sn 00410450 895C24 30 MOV DWORD PTR SS:[ESP+30],EBX 00410454 895C24 28 MOV DWORD PTR SS:[ESP+28],EBX 00410458 895C24 48 MOV DWORD PTR SS:[ESP+48],EBX 0041045C 895C24 38 MOV DWORD PTR SS:[ESP+38],EBX 00410460 FF15 F0E04300 CALL DWORD PTR DS:[<&hlclass.?IsEmpty@CS>; hlclass.?IsEmpty@CString@@QAEHXZ ==看字面是判斷字串是否空 00410466 85C0 TEST EAX,EAX 00410468 74 1A JE SHORT dumped_.00410484 =空字串返回0 ecx是長度 0041049F 8B3D 5CE14300 MOV EDI,DWORD PTR DS:[<&hlclass.?GetLeng>; hlclass.?GetLength@CString@@QAEHXZ 004104A5 FFD7 CALL EDI 004104A7 83F8 10 CMP EAX,10 ==sn長度要16位以上 004104AA 7D 33 JGE SHORT dumped_.004104DF 00410E8F 8B4C24 20 MOV ECX,DWORD PTR SS:[ESP+20] 00410E93 6A 00 PUSH 0 ==可見4103b0的引數裡面第3個是1的話計算sn的key,是0的話計算name的key 00410E95 51 PUSH ECX 00410E96 8D5424 40 LEA EDX,DWORD PTR SS:[ESP+40] 00410E9A B3 05 MOV BL,5 00410E9C 52 PUSH EDX 00410E9D 8BCF MOV ECX,EDI 00410E9F 885C24 54 MOV BYTE PTR SS:[ESP+54],BL 00410EA3 C74424 38 01000>MOV DWORD PTR SS:[ESP+38],1 00410EAB E8 00F5FFFF CALL dumped_.004103B0
程式透過判斷2個字串是否相等來判斷是否註冊,在找不到爆破點的情況下可以
直接打補丁破解。
我們在410eb0(計算出2個key之後)插入程式碼,讓2個字串相等。
410eb0:jmp 416b00
416b00:
程式碼:
00416B00 60 PUSHAD 00416B01 8D7424 58 LEA ESI,DWORD PTR SS:[ESP+58] 00416B05 8D7C24 38 LEA EDI,DWORD PTR SS:[ESP+38] 00416B09 8B36 MOV ESI,DWORD PTR DS:[ESI] 00416B0B 8B3F MOV EDI,DWORD PTR DS:[EDI] 00416B0D B9 20000000 MOV ECX,20 00416B12 F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[> 00416B14 61 POPAD 00416B15 50 PUSH EAX 00416B16 8D4424 34 LEA EAX,DWORD PTR SS:[ESP+34] 00416B1A ^ E9 96A3FFFF JMP dumped_.00410EB5
60 8D 74 24 58 8D 7C 24 38 8B 36 8B 3F B9 20 00 00 00 F3 A4 61 50 8D 44 24 34 E9 96 A3 FF FF
程式在轉換時會一直呼叫410d20判斷是否註冊,所以這樣打補丁比較安全:)
(程式也因為這樣慢一些,這樣設計程式&$%$#@%^@#)
使用者名稱:任意
序列號:16位任意數字
相關文章
- 登錄檔醫生(Registry Medic Version 2.43)破解記錄2003-07-25
- Android破解實戰:遊戲蜂窩3.21版本破解記錄2018-09-17Android遊戲
- 記錄一次破解xjar加密的經歷2021-04-12JAR加密
- Centos下安裝破解Jira7的操作記錄2017-09-28CentOS
- 初次使用SQL破解某電影網站的記錄2009-10-22SQL網站
- Centos下安裝破解confluence6.3的操作記錄2017-09-28CentOS
- Android逆向之旅---靜態方式破解微信獲取聊天記錄和通訊錄資訊2016-12-02Android
- Ubuntu16.04下安裝破解secureCRT和secureFX的操作記錄2018-07-23UbuntuSecurecrt
- CS V.J破解實錄2000-09-10
- 廣告廣告,無處可逃(flashget0.95破解記錄) (1千字)2001-02-18
- python pyinstaller打包的exe 反編譯問題記錄 破解加密2024-06-21Python編譯加密
- PUTTY 記錄操作記錄2016-09-05
- 域名解析的記錄型別:A記錄、CNAME、MX記錄、NS記錄2015-10-03型別
- MySQL Manager 2.8.0.1脫殼破解手記破解分析2004-11-03MySql
- Bannershop 4.5破解手記2015-11-15
- Cookie記錄瀏覽記錄2013-12-01Cookie
- centos7.4下Jira6環境部署及破解操作記錄(完整版)2018-09-02CentOS
- Xshell 5 記錄操作記錄2016-08-22
- Irfanview破解手記 (668字)2001-02-02View
- 光碟目錄隱藏原理及破解方法2018-07-11
- iTime 破解實錄 (15千字)2001-04-26
- 記錄2024-06-20
- myTracks mac破解版下載-myTracks for mac(GPS軌跡記錄器)2023-10-26Mac
- 機械設計系統1.0破解實錄------------演算法簡單,破解過程一2015-11-15演算法
- 『軟體推薦』錄屏大師破解版2019-01-15
- 神奇登錄檔0.6破解 (11千字)2001-07-27
- Gifline破解實錄 (4千字)2001-08-05
- Teleport Pro破解實戰錄 (6千字)2000-05-28
- 菜鳥破解錄之 The Cleaner (4千字)2000-08-12
- 菜鳥破解錄之 DlgXRSizer (4千字)2000-08-17
- 淘寶記錄筆記2024-04-18筆記
- 面試記錄2020-06-08面試
- Git記錄2020-02-18Git
- 命令記錄2019-12-04
- 工具記錄2019-08-08
- 地址記錄2019-05-01
- 機器學習記錄2021-08-01機器學習
- explain記錄2020-09-25AI