Posted by: moonbaby Jan 26 2004, 11:39 AM QUOTE Homepage : http://www.xaudiotools.com ( load from www.softpile.com ) Production : Xaudiotools Software (Advanced MP3/WMA Recorder 3.9) Copyright by : Copyright© 2002 Xaudiotools Software . All rights reserved Cracked File : ADRecorder.exe ( Microsoft Visual Basic 5.0 / 6.0 ) Type : Name / Serials Packed : UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo Crack Tool : OllyDbg 1.09d Unpack Type : Manual Carried Out : Correct Serial Note : None About Advanced MP3/WMA Recorder 3.9 Advanced Mp3/Wma Recorder makes a complete recording studio of your computer. With Advanced Mp3/Wma Recorder you can record your own music, voice or other sound you hear, either voice from microphone, webcasts from the Internet, music played by Winamp, Windows Media Player, Quick Time, Real Player, Flash, games, etc. Sound quality of the recordings remains excellent, or sounds even better for Advanced Mp3/Wma Recorder reduces noise. Advanced Mp3/Wma Recorder is able to automatically detect the recording formats your sound card supports and then set the application's parameters for the best possible performance. Your recordings are then saved as mp3 or wma or wav files. Dùng PEiD ta biết được chương trình được nén bằng UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo . Ta có thể dùng Dùng Resource Tuner v1.93 dể giải nén chương trình này. Dùng PEiD lại ta biết được chương trình này được viết bằng Microsoft Visual Basic 5.0 / 6.0 . Chương trình này ngoài ra còn có AntiDebug. Như thường lệ ta đến địa chỉ 7FFDF002 thay giá trị ở đây là 01 thành 00 sau mỗi lần gọi chương trình bằng Olly. I - UNPACK : Load chương trình lên bằng Olly. Chọn No ( không Analysis ) . Ta sẽ đến đây : QUOTE 00464F70 > 60 PUSHAD 00464F71 BE 00904300 MOV ESI,ADRecord.00439000 00464F76 8DBE 0080FCFF LEA EDI,DWORD PTR DS:[ESI+FFFC8000] 00464F7C 57 PUSH EDI 00464F7D 83CD FF OR EBP,FFFFFFFF 00464F80 EB 10 JMP SHORT ADRecord.00464F92 Dò chương trình xuống dưới một chút cho đến khi ta thấy đoạn mã : QUOTE 004650DB 61 POPAD 004650DC - E9 6BCFF9FF JMP ADRecord.0040204C < === Đặt BreakPoint tại đây 004650E1 0000 ADD BYTE PTR DS:[EAX],AL 004650E3 0000 ADD BYTE PTR DS:[EAX],AL 004650E5 0000 ADD BYTE PTR DS:[EAX],AL ………… Sau khi đặt BreakPoint ta chạy chương trình ( nhấn F9 ). Chương trình sẽ dùng tại đây. Nhấn F7 ta sẽ đến : QUOTE 0040204C 68 38214000 PUSH ADRecord.00402138 < === OEP của chương trình. 00402051 E8 EEFFFFFF CALL ADRecord.00402044 ; JMP to MSVBVM60.ThunRTMain 0040204C chính là OEP của chương trình. Tại đây ta dùng LordPE để Dump Full. Ta được file dumped.exe. ImportREC load chương trình, điền giá trị OEP = 0040204C – 00400000 = 0000204C vào ô OEP. Chọn IAT AutoSearch với giá trị OEP này. Chọn tiếp Get Imports và sau đó là Fix Dump. Ta sẽ được file dumped_.exe đã được UNPACK. II - SERIAL : >>>>>>>> Chương trình này sau khi được load lên bằng Olly. Dùng Search Sentence ta tìm thấy dòng QUOTE UNICODE "Register Successfully" UNICODE "Thank you,register successfully!" Truy thẳng vào ta sẽ thấy : QUOTE 0045626C . C785 68FFFFFF>MOV DWORD PTR SS:[EBP- 98],ADRecord.0040C>; UNICODE "Register Successfully" Trace lên chút và ta sẽ đặt BreakPoint tại : QUOTE 00455FD0 . FF15 74104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>; MSVBVM60.__vbaObjSet Chạy chương trình và ta sẽ dừng tại đây. QUOTE 00455FD0 . FF15 74104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>; MSVBVM60.__vbaObjSet 00455FD6 . 68 3CBF4000 PUSH ADRecord.0040BF3C ; UNICODE "4C29" 00455FDB . 68 A8BF4000 PUSH ADRecord.0040BFA8 ; UNICODE "AGE8B" 00455FE0 . 899D 3CFFFFFF MOV DWORD PTR SS:[EBP- C4],EBX 00455FE6 . FF15 4C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCa>; MSVBVM60.__vbaStrCat < === Kết hợp hai chuỗi trên thành một MG-01 : 4C29AGE8B 00455FEC . 8B1D A0114000 MOV EBX,DWORD PTR DS:[<&MSVBVM60.__vbaSt>; MSVBVM60.__vbaStrMove 00455FF2 . 8BD0 MOV EDX,EAX 00455FF4 . 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28] 00455FF7 . FFD3 CALL EBX ; <&MSVBVM60.__vbaStrMove> 00455FF9 . 50 PUSH EAX 00455FFA . 68 B8BF4000 PUSH ADRecord.0040BFB8 ; UNICODE "C2YC" 00455FFF . FF15 4C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCa>; MSVBVM60.__vbaStrCat < == MG-01 kết hợp với chuỗi mới tạo thành MG-02 : 4C29AGE8BC2YC 00456005 . 8BD0 MOV EDX,EAX 00456007 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C] 0045600A . FFD3 CALL EBX 0045600C . 50 PUSH EAX 0045600D . 68 C8BF4000 PUSH ADRecord.0040BFC8 ; UNICODE "X3N" 00456012 . FF15 4C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCa>; MSVBVM60.__vbaStrCat < == MG-02 kết hợp tiếp tạo thành MagicString : 4C29AGE8BC2YCX3N Trace tiếp vào trong đây ta sẽ biết được quá trình mã hoá chuỗi. QUOTE 00456083 . E8 B80C0000 CALL ADRecord.00456D40 So sánh hai chuỗi QUOTE 00456094 . FF15 BC104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp Nhìn qua của sổ STACK ta sẽ biết được số SERIAL thực của chương trình. III- PATCH : QUOTE 004560D5 . FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>; MSVBVM60.__vbaFreeVar < == So sánh hai chuỗi và trả về giá trị cho EDI 004560DB . 66:85FF TEST DI,DI < === Nếu hai chuỗi không bằng nhau ( DI = 00h ) 004560DE . 0F84 40020000 JE ADRecord.00456324 < ==== Vẫn là bản chưa đăng ký Để PATCH thì ta chuyển JE thành JNE. Hay thành luôn JMP >>>>>>>> Vậy : QUOTE User : Moonbaby Serial : 16D3-BC15-1577- 1014 User : HVA-CrAcKeRtEaM Serial : 13B2- FF13-8CF3-1112 . 00 464F 70 > 60 PUSHAD 00 464F 71 BE 00 904 300 MOV ESI,ADRecord .00 43 900 0 00 464F76 8DBE 00 80FCFF LEA EDI,DWORD PTR DS:[ESI+FFFC 800 0] 00 464F7C 57 PUSH EDI 00 464F7D 83CD FF OR EBP,FFFFFFFF 00 464F 80. 00 45 600 A . FFD3 CALL EBX 00 45 600 C . 50 PUSH EAX 00 45 600 D . 68 C8BF 400 0 PUSH ADRecord .00 40BFC8 ; UNICODE "X3N" 00 456 01 2 . FF15 4C 104 000 CALL DWORD PTR DS:[<&MSVBVM 60. __vbaStrCa>;. QUOTE 00 402 04C 68 38 214 00 0 PUSH ADRecord .00 40 213 8 < === OEP của chương trình. 00 402 0 51 E8 EEFFFFFF CALL ADRecord .00 402 044 ; JMP to MSVBVM 60. ThunRTMain 00 402 04C chính là OEP