DLL Dynamic link library OCX,OCA OCX/ActiveX VBX VBX SCR Screen saver CPL Control panel FON Font file DPL Delphi 3 package BPL Delphi 4 package Tuy nhiên nó là phần mềm thuộc dạng Sharew
Trang 1004115FC | 0FBE56 05 MOVSX EDX,BYTE PTR DS:[ESI+5] ->KT 6 vào EDX
00411600 | 0FBE4E 0F MOVSX ECX,BYTE PTR DS:[ESI+F] ->KT 16 vào ECX
00411604 | 03D1 ADD EDX,ECX
00411606 | 81FA 9B000000 CMP EDX,9B
0041160C | 74 04 JE SHORT unpacked.00411612
0041160E | 33C0 XOR EAX,EAX
00411610 | 5E POP ESI
00411611 | C3 RETN
Ở đây sẽ chuyển ký tự thứ 6 vào EDX, ký tự 16 vào ECX rồi cộng chúng lại kết quả lưu ở EDX
So sánh EDX với 9B (155) Nếu không bằng thì XOR EAX,EAX Nếu bằng thì nhảy:
Code:
00411612 |> B0 01 MOV AL,1 ->AL=1 ->Successfully
00411614 | 5E POP ESI
00411615 \ C3 RETN
Đến đây là xong Tóm lại, Soft này không quan tâm đến E-mail của chúng ta mà chỉ yêu cầu chuỗi SerialNumber có 16 ký tự, tổng của ký tự 6 và 16 ở hệ 10 phải bằng 155 và không có ký tự NUL ở đầu chuỗi
Ví dụ như: HUONGBABYILIKEUY
Download KeyGen here: http://rapidshare.de/files/7004685/KeyGen.exe.html Written by Ha Viet Hung (hvh0904)
How to KeyGen EXE Scope 6.41
Software: EXE Scope 6.41
Hompage: http://www.vector.co.jp/authors/VA003525/
Language: Borland Delphi 6.0 - 7.0
Tools: PeiD 0.94; OllyDbg 1.10
Cracker: hvh0904/KT44
Trong quá trình cracking, các bạn hẳn đã đôi lần sử dụng EXE Scope 6.41 Nó là phần mềm cho phép chỉnh sửa file Các dạng file mà EXE Scope 6.41 hỗ trợ:
Quote:
Trang 2DLL Dynamic link library
OCX,OCA OCX/ActiveX
VBX VBX
SCR Screen saver
CPL Control panel
FON Font file
DPL Delphi 3 package
BPL Delphi 4 package
Tuy nhiên nó là phần mềm thuộc dạng Sharewere nên nếu chưa đăng ký, chúng ta cũng chỉ edit được mỗi file không quá một lần Do đó, cần phải đăng ký nó để có thể sử dụng hết các chức năng của chương trình
OK Chạy chương trình, vào menu Help ->Regist Nhập đại Name và ID vào 2 textbox, nhấn OK Hê hê, nó bắn nag báo lỗi ngay rằng "Invalid ID or Name" Thông tin thu thập đã xong Bây giờ chúng ta exit chương trình và scan nó bằng PeiD xem nó có bị pack không Kết quả là nó không bị pack và được viết bằng Borland Delphi 6.0 - 7.0 Bước đầu khá là suôn sẻ
Bây giờ mới là công việc chủ yếu Load chương trình bằng OllyDbg xong, run chương trình Rightclick lên cửa sổ CPU của Olly và chọn Search for ->All referenced text strings Trong cửa sổ text, chọn Search for text Nhập vào "ID or Name" OK Tìm thấy rồi thì doubleclick lên nó chúng ta sẽ ở đây:
Code:
004C21F2 | B9 A4224C00 MOV ECX,eXeScope.004C22A4 ; ASCII
"ID"
004C21F7 | 8BC6 MOV EAX,ESI
004C21F9 | 8B38 MOV EDI,DWORD PTR DS:[EAX]
004C21FB | FF57 04 CALL DWORD PTR DS:[EDI+4]
004C21FE | 8BC6 MOV EAX,ESI
004C2200 | E8 DB19F4FF CALL eXeScope.00403BE0
004C2205 | A1 38EC4C00 MOV EAX,DWORD PTR DS:[4CEC38]
004C220A | C600 01 MOV BYTE PTR DS:[EAX],1
004C220D | C783 4C020000 >MOV DWORD PTR DS:[EBX+24C],1
004C2217 | EB 20 JMP SHORT eXeScope.004C2239
004C2219 |> 6A 00 PUSH 0
004C221B | 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
004C221E | B8 B0224C00 MOV EAX,eXeScope.004C22B0 ; ASCII
"Invalid ID or Name;“o˜^ID‚Ü‚½‚Í–¼‘O‚ª–³Œø‚Å‚·"
004C2223 | E8 280C0000 CALL eXeScope.004C2E50
004C2228 | 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; | 004C222B | 66:8B0D E0224C>MOV CX,WORD PTR DS:[4C22E0] ; |
Trang 3004C2232 | B2 01 MOV DL,1 ; |
004C2234 | E8 6754F7FF CALL eXeScope.004376A0 ;
\eXeScope.004376A0
004C2239 |> 33C0 XOR EAX,EAX
004C223B | 5A POP EDX
004C223C | 59 POP ECX
004C223D | 59 POP ECX
004C223E | 64:8910 MOV DWORD PTR FS:[EAX],EDX
004C2241 | 68 68224C00 PUSH eXeScope.004C2268
004C2246 |> 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
Kéo lên phía trên một chút thấy có hai thằng nhảy đến đoạn nag Nhiệm vụ của ta
là phải tìm số đăng ký sao cho hai thằng đó không nhảy xuống nữa
Vậy thì lên đầu đoạn code này và đặt breakpoint tại đó Bây giờ đăng ký với
YourName và ID Ở đây tôi điền vào YourName=hvh0904/KT44 và ID=506 Xong nhấn OK Olly sẽ ice tại breakpoint trên Dùng F8 trace xuống cho đến khi gặp lệnh nhảy đầu tiên
Code:
004C2111 | 8BD8 MOV EBX,EAX
004C2113 | 33C0 XOR EAX,EAX
004C2115 | 55 PUSH EBP
004C2116 | 68 61224C00 PUSH eXeScope.004C2261
004C211B | 64:FF30 PUSH DWORD PTR FS:[EAX]
004C211E | 64:8920 MOV DWORD PTR FS:[EAX],ESP
004C2121 | A1 38EC4C00 MOV EAX,DWORD PTR DS:[4CEC38]
004C2126 | 8038 00 CMP BYTE PTR DS:[EAX],0
004C2129 74 0F JE SHORT eXeScope.004C213A
004C212B | C783 4C020000 >MOV DWORD PTR DS:[EBX+24C],1
004C2135 | E9 FF000000 JMP eXeScope.004C2239
004C213A |> 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
004C213D | 8B83 F8020000 MOV EAX,DWORD PTR DS:[EBX+2F8]
004C2143 | E8 2C02FBFF CALL eXeScope.00472374
004C2148 | 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004C214B | A1 C4EE4C00 MOV EAX,DWORD PTR DS:[4CEEC4]
004C2150 | E8 8F28F4FF CALL eXeScope.004049E4
004C2155 | 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
Tại địa chỉ 4C2129, lệnh nhảy sẽ không thực thi nếu chương trình là
REGISTERED do đó, chúng ta sẽ không quan tâm nó làm gì Vì chưa đăng ký nên
nó sẽ nhảy Tiếp tục trace bằng F8 cho đến 4C217F, chúng ta gặp một hàm CALL với đối số AL dưới nó là lệnh nhảy thứ nhất của một trong 2 lệnh nhảy đến nag Vậy hàm này phải trả về AL<>0 thì mới ổn F7 để vào hàm này, ta sẽ ở đây
Trang 4Code:
004CB0B0 /$ 55 PUSH EBP ->Here!
004CB0B1 | 8BEC MOV EBP,ESP
004CB0B3 | 51 PUSH ECX
004CB0B4 | 53 PUSH EBX
004CB0B5 | 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
004CB0B8 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CB0BB | E8 809DF3FF CALL eXeScope.00404E40
004CB0C0 | 33C0 XOR EAX,EAX
004CB0C2 | 55 PUSH EBP
004CB0C3 | 68 4FB14C00 PUSH eXeScope.004CB14F
004CB0C8 | 64:FF30 PUSH DWORD PTR FS:[EAX]
004CB0CB | 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CB0CE | 33DB XOR EBX,EBX
004CB0D0 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CB0D3 | E8 789BF3FF CALL eXeScope.00404C50
004CB0D8 | 83F8 0A CMP EAX,0A ->Số đăng ký có 10 ký tự?
004CB0DB | 75 5C JNZ SHORT eXeScope.004CB139
Kiểm tra dãy số đăng ký có 10 ký tự (hệ DEC) không? Nếu khác thì bắn nag Nếu
là 10 ký tự thì kiểm tra tiếp:
Code:
004CB0DD | 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004CB0E0 | B8 64B14C00 MOV EAX,eXeScope.004CB164 ; ASCII
"A1910"
004CB0E5 | E8 AA9EF3FF CALL eXeScope.00404F94
004CB0EA | 48 DEC EAX
004CB0EB | 74 10 JE SHORT eXeScope.004CB0FD
004CB0ED | 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004CB0F0 | B8 74B14C00 MOV EAX,eXeScope.004CB174 ; ASCII
"A1423"
004CB0F5 | E8 9A9EF3FF CALL eXeScope.00404F94
004CB0FA | 48 DEC EAX
004CB0FB | 75 3C JNZ SHORT eXeScope.004CB139
004CB0FD |> B8 02000000 MOV EAX,2
5 ký tự đầu mặc định phải là "A1910" hoặc "A1423" Nếu đã thỏa mãn, kiểm tra tiếp:
Code:
004CB102 |> 8B55 FC /MOV EDX,DWORD PTR SS:[EBP-4]
004CB105 | 8A5402 FF |MOV DL,BYTE PTR DS:[EDX+EAX-1]
004CB109 | 80FA 30 |CMP DL,30
Trang 5004CB10C | 72 2B |JB SHORT eXeScope.004CB139
004CB10E | 80FA 39 |CMP DL,39
004CB111 | 77 26 |JA SHORT eXeScope.004CB139
004CB113 | 40 |INC EAX
004CB114 | 83F8 0B |CMP EAX,0B
004CB117 |.^75 E9 \JNZ SHORT eXeScope.004CB102
Đoạn này buộc các ký tự phải là các chữ số Nếu đã thỏa mãn thì tiếp tục:
Code:
004CB119 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CB11C | 0FB640 08 MOVZX EAX,BYTE PTR DS:[EAX+8]
004CB120 | 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004CB123 | 0FB652 09 MOVZX EDX,BYTE PTR DS:[EDX+9]
004CB127 | 03C2 ADD EAX,EDX
004CB129 | B9 0A000000 MOV ECX,0A
004CB12E | 33D2 XOR EDX,EDX
004CB130 | F7F1 DIV ECX
004CB132 | 83FA 04 CMP EDX,4
004CB135 | 75 02 JNZ SHORT eXeScope.004CB139
004CB137 | B3 01 MOV BL,1
004CB139 |> 33C0 XOR EAX,EAX
004CB13B | 5A POP EDX
004CB13C | 59 POP ECX
004CB13D | 59 POP ECX
004CB13E | 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CB141 | 68 56B14C00 PUSH eXeScope.004CB156
004CB146 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CB149 | E8 4298F3FF CALL eXeScope.00404990
004CB14E \ C3 RETN
004CB14F .^E9 2092F3FF JMP eXeScope.00404374
004CB154 .^EB F0 JMP SHORT eXeScope.004CB146
004CB156 8BC3 MOV EAX,EBX
004CB158 5B POP EBX
004CB159 59 POP ECX
004CB15A 5D POP EBP
004CB15B C3 RETN
Đoạn này sẽ lấy tổng ký tự 9 và ký tự 10 chia cho 0A Nếu dư 4 thì ổn Nếu tất cả
đã OK thì quay về chúng ta sẽ không bị dính nag mà sẽ tiếp cận với lệnh nhảy thứ
2 trong 2 lệnh nhảy đến nag đã nói:
Code:
004C218C | A1 C4EE4C00 MOV EAX,DWORD PTR DS:[4CEEC4]
Trang 6004C2191 | 8B00 MOV EAX,DWORD PTR DS:[EAX] 004C2193 | E8 B82AF4FF CALL eXeScope.00404C50 004C2198 | 85C0 TEST EAX,EAX
004C219A | 7E 7D JLE SHORT eXeScope.004C2219