Auto-detecting your CD-Rom and auto-listing tracks makes you can rip these tracks by just one click.. Support retrieving tracks' information from remote CDDB CD database or creating your
Trang 100561D67 |> |46 |INC ESI
00561D68 | |66:FFCB |DEC BX ; <==
1 Licence
00561D6B |.^\75 C7 \JNZ SHORT unpack.00561D34
- 500 chuỗi Serial của Personal License
00561D95 |> /8D4D EC /LEA ECX,[LOCAL.5]
00561D98 | |0FBFD6 |MOVSX EDX,SI
00561D9B | |8B45 FC |MOV EAX,[LOCAL.1]
00561D9E | |8B80 2C030000 |MOV EAX,DWORD PTR DS:[EAX+32C]
00561DA4 | |8B80 20020000 |MOV EAX,DWORD PTR DS:[EAX+220]
00561DAA | |8B38 |MOV EDI,DWORD PTR DS:[EAX]
00561DAC | |FF57 0C |CALL DWORD PTR DS:[EDI+C]
; <== Personal License
00561DAF | |8B55 EC |MOV EDX,[LOCAL.5]
; <== RealSerial
00561DB2 | |A1 A4115800 |MOV EAX,DWORD PTR DS:[5811A4]
; <== Fake Serial
00561DB7 | |E8 FC33EAFF |CALL unpack.004051B8 ; <== Compare
00561DBC | |75 0A |JNZ SHORT unpack.00561DC8
00561DBE | |C705 90115800>|MOV DWORD PTR DS:[581190],-1
00561DC8 |> |46 |INC ESI
00561DC9 | |66:FFCB |DEC BX
; <== 500 Licences
00561DCC |.^\75 C7 \JNZ SHORT unpack.00561D95
- 500 chuỗi Serial của Business License
00561DF6 |> /8D4D E8 /LEA ECX,[LOCAL.6]
00561DF9 | |0FBFD6 |MOVSX EDX,SI
00561DFC | |8B45 FC |MOV EAX,[LOCAL.1]
00561DFF | |8B80 30030000 |MOV EAX,DWORD PTR DS:[EAX+330]
00561E05 | |8B80 20020000 |MOV EAX,DWORD PTR DS:[EAX+220]
00561E0B | |8B38 |MOV EDI,DWORD PTR DS:[EAX]
00561E0D | |FF57 0C |CALL DWORD PTR DS:[EDI+C]
; <== Business License
00561E10 | |8B55 E8 |MOV EDX,[LOCAL.6]
; <== RealSerial
00561E13 | |A1 A4115800 |MOV EAX,DWORD PTR DS:[5811A4]
; <== Fake Serial
Trang 200561E18 | |E8 9B33EAFF |CALL unpack.004051B8 ; <== Compare
00561E1D | |75 0A |JNZ SHORT unpack.00561E29
00561E1F | |C705 94115800>|MOV DWORD PTR DS:[581194],-1
00561E29 |> |46 |INC ESI
00561E2A | |66:FFCB |DEC BX
; <== 500 Licences
00561E2D |.^\75 C7 \JNZ SHORT unpack.00561DF6
-=== Trace Into === -
- Các chuỗi Serial này là mặc định
/*/*/*/ - SERIAL tương ứng :
User : REA-cRaCkErTeAm Serial : N/A
Serial : Personal License : 8X6J5-XC69-BZ63-5NAN
Business License :
rr2b2b-6t4dk7u6-3v3r44
III – End of Tut :
- Finished – September 15, 2004
- Thank to my family, Computer_Angel, Zombie_Deathman, Littleboy all
REA‘s members, HacNho, RongChauA, Deux, Infinity, all my friend, and YOU
REVERSE ENGINEERING ASSOCIATION
http://www.reaonline.net
Reverse Engineering Association
SoftWare
Homepage : http://www.imtoo.com/cd-ripper.html
Production : ImTOO Software Studio
SoftWare : ImTOO CD Ripper 1.0.12 b 710
Copyright by : Copyright © 2003-2004 ImTOO Software Studio All Rights Reserved
Type : Name / Serial
Trang 3Packed : N / A
Language : Microsoft Visual C++ 7.0 [Debug]
Crack Tool : OllyDbg 1.09d, PEiD 0.92, kWdsm 10
Unpack : N / A
Request : Correct Serial / KeyGen
ImTOO CD Ripper 1.0.12 b 710
ImTOO CD Ripper is a flexible tool used to extract CD tracks to MP3,
WAV, WMA, OGG Vorbis, VQF, APE with ease Auto-detecting your CD-Rom and auto-listing tracks makes you can rip these tracks by just one click Support retrieving tracks' information from remote CDDB (CD database) or creating your local CDDB You can select bitrate from 32Kbps to 320Kbps for MP3 encoder ImTOO CD Ripper allows you to edit ID3 tag and add files to M3U/PLS playlist Embedded CD player can playback CD tracks before ripping It also provides volume normalization for tracks different volume levels
I – Information :
- Dùng PEiD kiểm tra biết chương trình không bị PACK và biết chương trình được
viết bằng Microsoft Visual C++ 7.0 [Debug]
- Chạy thử chương trình với User và Fake Serial ta nhận được thông báo "Invalid registration info!" Ta tìm được thông báo này tại địa chỉ :
00461274 68 686E5300 PUSH cdripper.00536E68 ; |Arg1 = 00536E68 ASCII "Invalid registration info!"
- Truy ngược lên trên ta đặt BreakPoint tại lệnh CALL đầu tiên của FunTion này :
00461263 E8 48000000 CALL cdripper.004612B0 ; <== Set
BreakPoint here
II – Cracking :
- Load chương trình lên, chạy chương trình với User và Fake Serial, chương trình dừng lại tại điểm đặt BP
00461263 E8 48000000 CALL cdripper.004612B0 ; <== Set
BreakPoint here
00461268 E8 C3030000 CALL cdripper.00461630 ; <== Trace Into here
Trang 4- Dùng F7 trace into ta đến :
004617FB | 83F8 27 CMP EAX,27 ; <== LenS must be 39 charts
004617FE | 0F85 E5030000 JNZ cdripper.00461BE9
- Trace tiếp ta xác định chuỗi dùng để mã hoá : :
0040C3C0 E8 EB83FFFF CALL audioenc.004047B0 ; <== String
to Encrypt
-=== String to Encrypt === -
Ngay tại đây, quan sát của sổ STACK ta thấy dòng :
0012F0A4 00D0F0D8 ASCII "12345678901234567890CD Ripper"
Như vậy, chương trình đã lấy 20 ký tự đầu tiên và ghép với chuỗi mặc định
“CD Ripper” Ta có thể cho rằng chương trình sẽ dùng chuỗi này để tiến hành mã
hoá, nhưng thực chất không phải vậy, chuỗi này chỉ là một phần của chuỗi thực
Chương trình sẽ gắn chuỗi này vào sau một chuỗi mặc định thứ hai, chuỗi này gồm 21 ký tự Có giá trị như sau :
0x31, 0x43, 0x01, 0x20, 0x03, 0x69, 0x05, 0x70, 0x07, 0x72, 0x09, 0x44, 0x02, 0x52, 0x04, 0x70, 0x06, 0x65, 0x08, 0x30, 0x30
Như vậy, chuỗi được dùng để mã hoá sẽ có chiều dài : 50 ký tự
-=== String to Encrypt === -
- Trace tiếp ta đến quá trình mã hoá :
00461A42 | E8 09D4FEFF CALL cdripper.0044EE50 ;
\cdripper.0044EE50
-=== MD5Hash === -
0044EE6F | E8 CCF4FFFF CALL cdripper.0044E340 ; <== MD5Start
0044EE74 | 8B53 38 MOV EDX,DWORD PTR DS:[EBX+38]
0044EE77 | 83C9 FF OR ECX,FFFFFFFF
0044EE7A | 8BFA MOV EDI,EDX
0044EE7C | 33C0 XOR EAX,EAX
0044EE7E | F2:AE REPNE SCAS BYTE PTR ES:[EDI]
0044EE80 | F7D1 NOT ECX
0044EE82 | 49 DEC ECX
0044EE83 | 51 PUSH ECX
Trang 50044EE84 | 52 PUSH EDX
0044EE85 | 8D5424 1C LEA EDX,DWORD PTR SS:[ESP+1C]
0044EE89 | 52 PUSH EDX
0044EE8A | E8 E1F4FFFF CALL cdripper.0044E370 ; <== MD5Update
0044EE8F | 8D4424 20 LEA EAX,DWORD PTR SS:[ESP+20]
0044EE93 | 8D6B 05 LEA EBP,DWORD PTR DS:[EBX+5]
0044EE96 | 50 PUSH EAX
0044EE97 | 55 PUSH EBP
0044EE98 | E8 93F5FFFF CALL cdripper.0044E430 ; <== MD5Finished
-=== MD5Hash === -
- Kế đó, chương trình tiến hành mã hoá chuỗi MD5Hash này bằng cách (1) chọn
lấy các ký tự ở vị trí chẵn (2) các vị trí thứ 4, 9 14 sẽ là ký tự “-“ Như vậy chuỗi này sẽ có dạng “XXXX-XXXX-XXXX”
00461A75 |> /8B4C24 34 /MOV ECX,DWORD PTR SS:[ESP+34]
00461A79 | |8A140E |MOV DL,BYTE PTR DS:[ESI+ECX]
00461A7C | |8D4C24 08 |LEA ECX,DWORD PTR SS:[ESP+8]
00461A80 | |885424 0C |MOV BYTE PTR SS:[ESP+C],DL
00461A84 | |8B4424 0C |MOV EAX,DWORD PTR SS:[ESP+C]
00461A88 | |50 |PUSH EAX
00461A89 | |E8 C03E0600 |CALL cdripper.004C594E
00461A8E | |8BC6 |MOV EAX,ESI
00461A90 | |99 |CDQ
00461A91 | |2BC2 |SUB EAX,EDX
00461A93 | |D1F8 |SAR EAX,1
00461A95 | |40 |INC EAX
00461A96 | |25 03000080 |AND EAX,80000003
00461A9B | |79 05 |JNS SHORT cdripper.00461AA2
00461A9D | |48 |DEC EAX
00461A9E | |83C8 FC |OR EAX,FFFFFFFC
00461AA1 | |40 |INC EAX
00461AA2 |> |75 0E |JNZ SHORT cdripper.00461AB2
00461AA4 | |68 F8E55200 |PUSH cdripper.0052E5F8
00461AA9 | |8D4C24 0C |LEA ECX,DWORD PTR SS:[ESP+C]
00461AAD | |E8 753E0600 |CALL cdripper.004C5927
00461AB2 |> |83C6 02 |ADD ESI,2
00461AB5 | |83FE 20 |CMP ESI,20
00461AB8 |.^\7C BB \JL SHORT cdripper.00461A75
Trang 6- Sau đó chuỗi này sẽ được gắn vào sau 20 ký tự đầu tiên của chuỗi FakeSerial nhập Hay nói cách khác, chương trình sẽ sử dụng 20 ký tự đầu tiên của chuỗi Serial để làm chuỗi mã hoá
00461AE2 | E8 8DD60500 CALL cdripper.004BF174 ; <== Real Serial
00461AE7 | 8B7424 18 MOV ESI,DWORD PTR SS:[ESP+18] ; <== Fake Serial
00461AEB | 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8] ; <== Real Serial
00461AEF |> 8A10 /MOV DL,BYTE PTR DS:[EAX]
00461AF1 | 8ACA |MOV CL,DL
00461AF3 | 3A16 |CMP DL,BYTE PTR DS:[ESI]
00461AF5 | 75 1C |JNZ SHORT cdripper.00461B13
00461AF7 | 84C9 |TEST CL,CL
00461AF9 | 74 14 |JE SHORT cdripper.00461B0F