--- I – Information : -**** Dùng PeiD v0.92 để Detect, chúng ta biết được chương trình này được tác... Vậy là vượt qua được cửa ải Unpack mà không mất một giọt mồ hôi nào.. -**** Chạy t
Trang 1Vậy name và real serial tương ứng là:
name : akira
serial : c7fc42038d7eba72
name : REA cRaCkErTeAm
serial : 6cb21b0550838585
Akira(REA)
====South Bay SoftWare====
Reverse Engineering Association
SoftWare
Homepage :http://www.southbaypc.com/
Production :South Bay SoftWare
SoftWare :FolderView v2.1
Copyright by :Copyright (C) 2000-2004 South Bay Software
Type :N/S
Packed :N / A
Language :Microsoft Visual C++ 6.0
Crack Tool :OllyDbg 1.09d, PEiD 0.92, kWdsm 10
Unpack :N / A
Request :Correct Serial/Kegen
Comment :
Folder View v2.1
FolderView lets you view the contents of any folder on your computer, and then print it out or save it to a text file on disk This is very convenient for times when you need to send someone the contents of a directory You can simply attach the saved file to an e-mail and send it the other person The directory contents can be sorted by name, file size, file type, or date modified FolderView even gives you information on your MP3s, such as the artist, song title, length of the song, and more!
-
I – Information :
-**** Dùng PeiD v0.92 để Detect, chúng ta biết được chương trình này được tác
Trang 2giả Code bằng Microsoft Visual C++ 6.0 , không hề bị Pack Vậy là vượt qua được cửa ải Unpack mà không mất một giọt mồ hôi nào
-**** Chạy thử chương trình , một Nag thông báo của chương trình hiện lên Cụ thể là nó chỉ cho phép chúng ta dùng thử chương trình này trong vòng không quá
30 days , nếu quá 30 days nó tự động nghỉ hưu liền à :(( Ngay tại Nag này bạn có thể nhìn thấy một button là Enter Registration Oki , click vào đây , nó sẽ hiện một Dialog box yêu cầu chúng ta phải nhập Name & Serial vào để sử dụng chương trình một cách hợp pháp
-**** Nhưng chúng ta làm gì có đâu để mà nhập , do đó có 2 cách một là dùng hết
30 ngày (để rồi lại reinstall lại) , hai là chúng ta phải crack nó để có được Serial hợp pháp với Name chúng ta nhập vào Ở đây mình chọn cách thứ hai à Nhập đại một cái Name & Code vào , ví dụ ( Name : kienmanowar & Code : 11111982) Nhập xong nhấn Ok, ngay lập tức một Nag văng ra “ Sorry , you have entered an
incorrect registration code” .Nó mắng ta như thể thì cũng đành chịu chứ biết làm
thể nào bây giờ, hãy ghi nhớ thông tin này lại chúng ta sẽ làm cho nó không còn xuất hiện nữa ke ke
-**** Bây giờ chúng ta hãy Load chương trình này trong Olly , tìm chuỗi thông báo trên Chúng ta sẽ tìm thấy tại địa chỉ sau :
Quote:
0040C1C9 68 90B84200 PUSH FolderVi.0042B890 ; |Text = "Sorry, you have entered an incorrect registration code."
-**** Lần ngược lên trên chúng ta sẽ đặt Break Point tại đây :
Quote:
0040C148 FFD7 CALL EDI ; \GetDlgItemTextA
II – Cracking :
-**** Oki , sau khi đặt BP, nhấn F9 để run chương trình , nhập lại Name & Code vào hộp thọai đăng kí , sau đó nhấn Ok Chúng ta sẽ quay trở lại Ollydbg và Ice tại chỗ mà chúng ta đã Set BP :
Code:
0040C148 FFD7 CALL EDI ; \GetDlgItemTextA <==We’re here (Get FU)
0040C14A 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8]
0040C14E 68 00010000 PUSH 100 ; /Count = 100 (256.)
0040C153 52 PUSH EDX ; |Buffer
Trang 30040C154 68 ED030000 PUSH 3ED ; |ControlID = 3ED (1005.)
0040C159 56 PUSH ESI ; |hWnd
0040C15A FFD7 CALL EDI ; \GetDlgItemTextA <== Get FS 0040C15C E8 AFF5FFFF CALL FolderVi.0040B710
0040C161 85C0 TEST EAX,EAX
0040C163 5F POP EDI
0040C164 75 5C JNZ SHORT FolderVi.0040C1C2
0040C166 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4] ; FS 0040C16A 8D8C24 040100>LEA ECX,DWORD PTR SS:[ESP+104] ; FU 0040C171 50 PUSH EAX
0040C172 51 PUSH ECX
0040C173 E8 D8040000 CALL FolderVi.0040C650 ; Encrypt <== Trace Into
-=== Trace Into === - 0040C650 /$ 81EC 00010000 SUB ESP,100
0040C656 | 56 PUSH ESI
0040C657 | 8BB424 080100>MOV ESI,DWORD PTR SS:[ESP+108]
0040C65E | 56 PUSH ESI
0040C65F | E8 ACFEFFFF CALL FolderVi.0040C510
0040C664 | 83C4 04 ADD ESP,4
0040C667 | 85C0 TEST EAX,EAX
0040C669 | 74 0A JE SHORT FolderVi.0040C675
0040C66B | 33C0 XOR EAX,EAX
0040C66D | 5E POP ESI
0040C66E | 81C4 00010000 ADD ESP,100
0040C674 | C3 RETN
0040C675 |> 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]
0040C679 | 50 PUSH EAX
0040C67A | 56 PUSH ESI
0040C67B | E8 B0000000 CALL FolderVi.0040C730 ; Calculation
<== Trace Into
-=== Trace Into === -
-========= NOTE ========= - Trong phần Caculation này có tất cả 4 đoạn Code tính toán Right Code của chương trình này , thực chất chỉ là việc cộng dồn các FU[i] lại với nhau và cộng với một default value nằm trong thanh ghi EDX hoặc là sử dụng phép nhân FU[i] với
default value , sau đó đem cộng lại Mỗi đoạn sẽ tương ứng với từng SecX (4 function thì sẽ có 4 SecX , mỗi SecX sẽ được nối với nhau thông qua “-“
-========= NOTE ========= -
Trang 40040C730 /$ 81EC 00010000 SUB ESP,100
0040C736 | A0 C4DA4300 MOV AL,BYTE PTR DS:[43DAC4]
0040C73B | 53 PUSH EBX
0040C73C | 55 PUSH EBP
0040C73D | 56 PUSH ESI
0040C73E | 57 PUSH EDI
0040C73F | 884424 10 MOV BYTE PTR SS:[ESP+10],AL
0040C743 | B9 3F000000 MOV ECX,3F
0040C748 | 33C0 XOR EAX,EAX
0040C74A | 8D7C24 11 LEA EDI,DWORD PTR SS:[ESP+11]
0040C74E | F3:AB REP STOS DWORD PTR ES:[EDI]
0040C750 | 66:AB STOS WORD PTR ES:[EDI]
0040C752 | AA STOS BYTE PTR ES:[EDI]
0040C753 | 8BBC24 140100>MOV EDI,DWORD PTR SS:[ESP+114] ; <===
FU
0040C75A | 57 PUSH EDI ; /String
0040C75B | FF15 AC614200 CALL DWORD PTR
DS:[<&KERNEL32.lstrlenA>] ; \lstrlenA <==Length(FU)
0040C761 | 8BF0 MOV ESI,EAX ;<== Length (FU)
0040C763 | 33C9 XOR ECX,ECX ;<== Sec1 = 0;
0040C765 | 33C0 XOR EAX,EAX ;<== i=0;
0040C767 | 85F6 TEST ESI,ESI
0040C769 | 76 13 JBE SHORT FolderVi.0040C77E
0040C76B | 8B15 54B54200 MOV EDX,DWORD PTR DS:[42B554] <=1st Default Value (0x32)
-=== Calculation 0 === - 0040C771 |> 0FBE1C38 /MOVSX EBX,BYTE PTR DS:[EAX+EDI] ;<== FU[i]
0040C775 | 03DA |ADD EBX,EDX ;<== Temp = FU[i] + 1st Default Value (0x32)
0040C777 | 03CB |ADD ECX,EBX ;<== Sec1 = Sec1 + Temp
0040C779 | 40 |INC EAX ; <== i++
0040C77A | 3BC6 |CMP EAX,ESI ;<=== While (i < Length(FU)) 0040C77C |.^ 72 F3 \JB SHORT FolderVi.0040C771 ;<== Continue Loop 0040C77E |> 8B9C24 180100>MOV EBX,DWORD PTR SS:[ESP+118]
0040C785 | 51 PUSH ECX ; /<%u> <== Sec1 (Convert hex > dec)
0040C786 | 68 10B94200 PUSH FolderVi.0042B910 ; |Format = "%u-" <== Sec1 + “-“
Trang 50040C78B | 53 PUSH EBX ; |s
0040C78C | FF15 70624200 CALL DWORD PTR DS:[<&USER32.wsprintfA>]
; \wsprintfA <==Display Sec1
-=== Calculation 0 === - 0040C792 | 83C4 0C ADD ESP,0C
0040C795 | 33C9 XOR ECX,ECX ; <== Sec2 = 0;
0040C797 | 33C0 XOR EAX,EAX ; <=== i = 0;
0040C799 | 85F6 TEST ESI,ESI
0040C79B | 76 14 JBE SHORT FolderVi.0040C7B1
0040C79D | 8B15 58B54200 MOV EDX,DWORD PTR DS:[42B558] <=2nd Default Value (0x28)
-=== Calculation 1 === - 0040C7A3 |> 0FBE2C38 /MOVSX EBP,BYTE PTR DS:[EAX+EDI] ;<== FU[i]
0040C7A7 | 0FAFEA |IMUL EBP,EDX ; <== Temp = FU[i] * 2nd Default Value (0x28)
0040C7AA | 03CD |ADD ECX,EBP ; <== Sec2 = Sec2 + Temp
0040C7AC | 40 |INC EAX ; i++
0040C7AD | 3BC6 |CMP EAX,ESI ; While ( i <Length (FU))
0040C7AF |.^ 72 F2 \JB SHORT FolderVi.0040C7A3 ;<=== Continue Loop 0040C7B1 |> 51 PUSH ECX ; /<%u> <=== Sec2 (Convert hex >dec)
0040C7B2 | 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14] ; | 0040C7B6 | 68 10B94200 PUSH FolderVi.0042B910 ; |Format = "%u-"
<== Sec2 + “-“
0040C7BB | 51 PUSH ECX ; |s
0040C7BC | FF15 70624200 CALL DWORD PTR
DS:[<&USER32.wsprintfA>] ; \wsprintfA <==Display Sec2
-=== Calculation 1 === - 0040C7C2 | 83C4 0C ADD ESP,0C
0040C7C5 | 8D5424 10 LEA EDX,DWORD PTR SS:[ESP+10]
0040C7C9 | 52 PUSH EDX ; /StringToAdd
0040C7CA | 53 PUSH EBX ; |ConcatString
0040C7CB | FF15 C4614200 CALL DWORD PTR
DS:[<&KERNEL32.lstrcatA>] ; \lstrcatA <== Sec1 Ghép với Sec2
0040C7D1 | 33C9 XOR ECX,ECX ;<== Sec3 = 0 ;
0040C7D3 | 33C0 XOR EAX,EAX ;<== i = 0 ;
0040C7D5 | 85F6 TEST ESI,ESI
0040C7D7 | 76 13 JBE SHORT FolderVi.0040C7EC
Trang 60040C7D9 | 8B15 5CB54200 MOV EDX,DWORD PTR DS:[42B55C]<=3rd
Default Value(0x1E)
-=== Calculation 2
=== -0040C7DF |> 0FBE2C38 /MOVSX EBP,BYTE PTR DS:[EAX+EDI] ;<==
FU[i]
0040C7E3 | 03EA |ADD EBP,EDX ;<== Temp = FU[i] + 3rd Default
Value (0x1E)
0040C7E5 | 03CD |ADD ECX,EBP ;<== Sec3 = Sec3 + Temp
0040C7E7 | 40 |INC EAX ; <=== i++
0040C7E8 | 3BC6 |CMP EAX,ESI ; <== While (i < Length (FU))
0040C7EA |.^ 72 F3 \JB SHORT FolderVi.0040C7DF ;<== Continue Loop
0040C7EC |> 51 PUSH ECX ; /<%u> ;<== Sec3 (Convert
hex > dec)
0040C7ED | 8D4424 14 LEA EAX,DWORD PTR SS:[ESP+14] ; |
0040C7F1 | 68 10B94200 PUSH FolderVi.0042B910 ; |Format = "%u-"
<== Sec3 + “-“
0040C7F6 | 50 PUSH EAX ; |s
0040C7F7 | FF15 70624200 CALL DWORD PTR DS:[<&USER32.wsprintfA>]
; \wsprintfA <== Display Sec3