Posted by: moonbaby Dec 18 2003, 03:09 PM Homepage : http://www.southbaypc.com/download/ACSetup.exe Production : FirasE AutoConnect 1.01 Copyright by : Copyright © 1998-2003 All Rights
Trang 1Posted by: moonbaby Dec 18 2003, 03:09 PM
Homepage : http://www.southbaypc.com/download/ACSetup.exe
Production : FirasE ( AutoConnect 1.01 )
Copyright by : Copyright © 1998-2003 All Rights Reserved
Cracked File : AutoConnect.exe ( Microsoft Visual C++ 6.0 )
Type : Name/Serials
Packed : N / A
Crack Tool : OllyDbg 1.09d, W32dsmv10, Hex Workshop 4.1
Unpack Tool : N / A
Carried Out : Get Correct Serials
Note : None
About AutoConnect 1.01
AutoConnect will automatically hit the Reconnect button for you when your ISP disconnects you from your Dial Up Connection
-
Dùng PeiD ta biết chương trình này không bị pack và được viết bằng
Microsoft Visual C++ 6.0
Dùng W32dsm89 để tìm đoạn thông báo cho dễ "Sorry, you have entered an incorrect "
Sau đó dùng Olly chuyển đến địa chỉ đó, ta thấy thông báo nhập sai Serial 00401CE1 | 68 98624000 PUSH AUTOCONN.00406298 ; |Text = "Sorry, you have entered an incorrect registration code."
Trace lên một chút, ta thấy có hai điểm để đặt BreakPoint
>>>> Set BreakPoint
00401C5F | FF15 F4504000 CALL DWORD PTR
DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
00401C7A | FF15 F4504000 CALL DWORD PTR
Trang 2DS:[<&USER32.GetDlgItemTe>; \GetDlgItemTextA
>>>> Ở đây ta tiến hành hai quá trình, Patch và tìm số Serial đúng
>>>>>>>> Quá trình thứ nhất : PATCH
>>>> Từ điểm set BreakPoint thứ hai, trace xuống chút xíu, ta thấy đoạn mã sau :
00401C8E | E8 CC030000 CALL AUTOCONN.0040205F ;
\AUTOCONN.0040205F
00401C93 | 83C4 08 ADD ESP,8 < ====
00401C96 | 85C0 TEST EAX,EAX
00401C98 | 74 40 JE SHORT AUTOCONN.00401CDA < == Patch here = > change JE to JNZ
>> Sau khi chuyển thành JNZ ta thấy mã đổi thừ 74 40 thành 75 40 Dùng Hex Workshop 4.1 chỉnh sửa lại mã lệnh này
======== > Hoàn thành quá trình PATCH
>>>>>>>> Quá trình thứ hai : SERIAL
>>>> Từ điểm BreakPoint thứ hai trace xuống chút ta thấy mã lệnh sau Trace thẳng vào đoạn này để chuẩn bị đến đoạn mã hoá chương trình
00401C8E | E8 CC030000 CALL AUTOCONN.0040205F ;
\AUTOCONN.0040205F
>>>> Trace thêm một đoạn ngắn ta thấy đọan này Trace thẳng vào đây để đi đến đoạn mã xử lý chuỗi U nhập
0040207A | E8 B5000000 CALL AUTOCONN.00402134
>> Nếu trace qua đoạn này thì sẽ thấy ngay Serial thực
>> Sau khi trace vào lệnh CALL trên, ta đến
00402134 /$ 55 PUSH EBP
Trang 3>>>> Giai đọan mã hoá chuỗi U nhập vào lần đầu tiên :
>> Đầu tiên, nhảy đến địa chỉ 00402190, đến vòng lặp thứ hai, sẽ bắt đầu từ
00402181
0040217F | EB 0F JMP SHORT AUTOCONN.00402190
00402181 |> 8B95 FCFEFFFF /MOV EDX,DWORD PTR SS:[EBP-104]
00402187 | 83C2 01 |ADD EDX,1 < ==== Sau mỗi vòng lặp tăng EAX lên 1
== > biến đếm
0040218A | 8995 FCFEFFFF |MOV DWORD PTR SS:[EBP-104],EDX
00402190 |> 8B85 FCFEFFFF MOV EAX,DWORD PTR SS:[EBP-104]
00402196 | 3B85 F4FEFFFF |CMP EAX,DWORD PTR SS:[EBP-10C] 0040219C | 73 22 |JNB SHORT AUTOCONN.004021C0
0040219E | 8B4D 08 |MOV ECX,DWORD PTR SS:[EBP+8]
004021A1 | 038D FCFEFFFF |ADD ECX,DWORD PTR SS:[EBP-104] 004021A7 | 0FBE11 |MOVSX EDX,BYTE PTR DS:[ECX]
>> Tại địa chỉ 40603C ta tìm được giá trị 1Fh ==== đây là số mặc định 004021AA | 0315 3C604000 |ADD EDX,DWORD PTR DS:[40603C] <
==== 1Fh
004021B0 | 8B85 F8FEFFFF |MOV EAX,DWORD PTR SS:[EBP-108] 004021B6 | 03C2 |ADD EAX,EDX
004021B8 | 8985 F8FEFFFF |MOV DWORD PTR SS:[EBP-108],EAX 004021BE |.^ EB C1 \JMP SHORT AUTOCONN.00402181
>> >> Quá trình này được hiểu là :
a- Lấy ký tự đầu tiên + 1Fh === > giá trị được lưu ở [EBP-108]
b- Lấy kết quả trước đó + ( ký tự kế + 1Fh ) === > giá trị được lưu ở [EBP-108]
c- Kết quả cuỗi cùng được lưu ở [EBP-108]
>> Chuỗi thứ nhất có định dạng là XXXX-
004021C6 | 51 PUSH ECX ; /<%u>
004021C7 | 68 2C634000 PUSH AUTOCONN.0040632C ; |Format = "%u-"
>>>> Giai đoạn mã hoá chuỗi U nhập vào lần thứ hai :
004021ED | EB 0F JMP SHORT AUTOCONN.004021FE
Trang 4004021EF |> 8B85 FCFEFFFF /MOV EAX,DWORD PTR SS:[EBP-104] 004021F5 | 83C0 01 |ADD EAX,1
004021F8 | 8985 FCFEFFFF |MOV DWORD PTR SS:[EBP-104],EAX 004021FE |> 8B8D FCFEFFFF MOV ECX,DWORD PTR SS:[EBP-104]
00402204 | 3B8D F4FEFFFF |CMP ECX,DWORD PTR SS:[EBP-10C] 0040220A | 73 23 |JNB SHORT AUTOCONN.0040222F
0040220C | 8B55 08 |MOV EDX,DWORD PTR SS:[EBP+8]
0040220F | 0395 FCFEFFFF |ADD EDX,DWORD PTR SS:[EBP-104]
00402215 | 0FBE02 |MOVSX EAX,BYTE PTR DS:[EDX]
00402218 | 0FAF05 406040>|IMUL EAX,DWORD PTR DS:[406040] <
==== 0Ch
0040221F | 8B8D F8FEFFFF |MOV ECX,DWORD PTR SS:[EBP-108]
00402225 | 03C8 |ADD ECX,EAX
00402227 | 898D F8FEFFFF |MOV DWORD PTR SS:[EBP-108],ECX 0040222D |.^ EB C0 \JMP SHORT AUTOCONN.004021EF
>> >> Quá trình này được diễn tả lại như sau :
d- Lấy ký tự đầu tiên x Ch === > giá trị được lưu ở [EBP-108] < == Khác đoạn đầu
e- Lấy kết quả trước đó + ( ký tự kế x Ch ) === > giá trị được lưu ở [EBP-108]
f- Kết quả cuỗi cùng được lưu ở [EBP-108]
>> Chuỗi thứ hai cũng có định dạng XXXX-
00402235 | 52 PUSH EDX ; /<%u>
00402236 | 68 30634000 PUSH AUTOCONN.00406330 ; |Format = "%u-"
>> Kết hợp hai chuỗi lại với nhau, chúng có định dạng là XXXX-XXXX-
00402251 | 51 PUSH ECX ; /StringToAdd
00402252 | 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C] ; |
00402255 | 52 PUSH EDX ; |ConcatString
00402256 | FF15 28504000 CALL DWORD PTR
DS:[<&KERNEL32.lstrcatA>] ; \lstrcatA
>>>> Giai đoạn mã hoá chuỗi U nhập vào lần thứ ba :
Trang 500402270 | EB 0F JMP SHORT AUTOCONN.00402281
00402272 |> 8B85 FCFEFFFF /MOV EAX,DWORD PTR SS:[EBP-104]
00402278 | 83C0 01 |ADD EAX,1
0040227B | 8985 FCFEFFFF |MOV DWORD PTR SS:[EBP-104],EAX
00402281 |> 8B8D FCFEFFFF MOV ECX,DWORD PTR SS:[EBP-104]
00402287 | 3B8D F4FEFFFF |CMP ECX,DWORD PTR SS:[EBP-10C] 0040228D | 73 22 |JNB SHORT AUTOCONN.004022B1
0040228F | 8B55 08 |MOV EDX,DWORD PTR SS:[EBP+8]
00402292 | 0395 FCFEFFFF |ADD EDX,DWORD PTR SS:[EBP-104]
00402298 | 0FBE02 |MOVSX EAX,BYTE PTR DS:[EDX]
0040229B | 0305 44604000 |ADD EAX,DWORD PTR DS:[406044] < === 0Dh
004022A1 | 8B8D F8FEFFFF |MOV ECX,DWORD PTR SS:[EBP-108] 004022A7 | 03C8 |ADD ECX,EAX
004022A9 | 898D F8FEFFFF |MOV DWORD PTR SS:[EBP-108],ECX 004022AF |.^ EB C1 \JMP SHORT AUTOCONN.00402272
>> >> Quá trình này được hiểu là :
g- Lấy ký tự đầu tiên + 0Dh === > giá trị được lưu ở [EBP-108] < == Khác hai đoạn trước
h- Lấy kết quả trước đó + ( ký tự kế + 0Dh ) === > giá trị được lưu ở [EBP-108]
i- Kết quả cuỗi cùng được lưu ở [EBP-108]
>> Chuỗi thứ ba có định dạng là XXXX-
004022B7 | 52 PUSH EDX ; /<%u>
004022B8 | 68 34634000 PUSH AUTOCONN.00406334 ; |Format = "%u-"
>> Kết hợp ba chuỗi có định dạng : XXXX-XXXX-XXXX-
004022D3 | 51 PUSH ECX ; /StringToAdd
004022D4 | 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C] ; |
004022D7 | 52 PUSH EDX ; |ConcatString
004022D8 | FF15 28504000 CALL DWORD PTR
DS:[<&KERNEL32.lstrcatA>] ; \lstrcatA
Trang 6>>>> Giai đoạn mã hoá chuối U nhập vào lần thứ tư :
004022F2 | EB 0F JMP SHORT AUTOCONN.00402303
004022F4 |> 8B85 FCFEFFFF /MOV EAX,DWORD PTR SS:[EBP-104] 004022FA | 83C0 01 |ADD EAX,1
004022FD | 8985 FCFEFFFF |MOV DWORD PTR SS:[EBP-104],EAX
00402303 |> 8B8D FCFEFFFF MOV ECX,DWORD PTR SS:[EBP-104]
00402309 | 3B8D F4FEFFFF |CMP ECX,DWORD PTR SS:[EBP-10C] 0040230F | 73 23 |JNB SHORT AUTOCONN.00402334
00402311 | 8B55 08 |MOV EDX,DWORD PTR SS:[EBP+8]
00402314 | 0395 FCFEFFFF |ADD EDX,DWORD PTR SS:[EBP-104] 0040231A | 0FBE02 |MOVSX EAX,BYTE PTR DS:[EDX]
0040231D | 0FAF05 486040>|IMUL EAX,DWORD PTR DS:[406048] <
=== 20h
00402324 | 8B8D F8FEFFFF |MOV ECX,DWORD PTR SS:[EBP-108] 0040232A | 03C8 |ADD ECX,EAX
0040232C | 898D F8FEFFFF |MOV DWORD PTR SS:[EBP-108],ECX
00402332 |.^ EB C0 \JMP SHORT AUTOCONN.004022F4
>> >> Quá trình này được diễn tả lại như sau :
j- Lấy ký tự đầu tiên x 20h === > giá trị được lưu ở [EBP-108] < == Khác ba đoạn trước
k- Lấy kết quả trước đó + ( ký tự kế x Ch ) === > giá trị được lưu ở [EBP-108]
l- Kết quả cuỗi cùng được lưu ở [EBP-108]
>> Chuỗi thứ tư có định dạng là XXXX
0040233A | 52 PUSH EDX ; /<%u>
0040233B | 68 38634000 PUSH AUTOCONN.00406338 ; |Format = "%u"
>> Kết hợp bốn chuỗi có định dạng là XXXX-XXXX-XXXX-XXXX
00402356 | 51 PUSH ECX ; /StringToAdd
00402357 | 8B55 0C MOV EDX,DWORD PTR SS:[EBP+C] ; |
0040235A | 52 PUSH EDX ; |ConcatString
0040235B | FF15 28504000 CALL DWORD PTR
DS:[<&KERNEL32.lstrcatA>] ; \lstrcatA
Trang 7>>>>>>>> Vậy là ta đã hoàn toàn hiểu được cách tạo Serial của chương trình này
User : Moonbaby Serial : 1071-9876-927-26336
User : HVA-CrAkErTeAm Serial : 1597-13956-1345-37216