1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 99 ppsx

9 290 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cracksoft For Newnewbie
Trường học Magellass Corp.
Chuyên ngành Reverse Engineering
Thể loại Hướng dẫn
Năm xuất bản 2003
Định dạng
Số trang 9
Dung lượng 128,86 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Dùng PeiD kiểm tra, biết chương trình này được pack bằng ASPack 2.12, dùng ASPackDie v1.41 giải nén, kiểm tra bằng PeiD thêm lần nữa, biết được chương trình này viết bằng Borland Delphi

Trang 1

Powered by Invision Power Board (http://www.invisionboard.com)

© Invision Power Services (http://www.invisionpower.com)

Printable Version of Topic

Click here to view this topic in its original format

HVA Forum > Box thảo luận Reverse Engeneering, tutorial Reverse Engeneering > CrackSoft for NEWNEWBIE

Posted by: moonbaby Dec 17 2003, 01:58 PM

Homepage : URL http://www.magellass.com/files/wboost.exe

Production : Magellass Corp ( WinBoost V4.0 )

Copyright by : © 1998 - 2003 Magellass Corp All rights reserved

Cracked File : WinBoost.exe

Type : Name/Serials

Packed : ASPack 2.12 -> Alexey Solodovnikov

Crack Tool : OllyDbg 1.09d, Hex Workshop 4.1, W32dsmv10

Unpack Tool : ASPackDie v1.41

Carried Out : Get Correct Serials

Note : None

About WinBoost

WinBoost is a special utility designed to configure and personalize

Windows XP/2000/Me/9X looks and feels Using easy to use user

interface you can configure hundreds of Windows hidden settings, from Start Menu, Desktop, Accessories, Windows Explorer, to Internet

Explorer In addition, you will get hundreds of selected Windows Tips & Tricks to boost your productivity and performance

Trang 2

-

Chương trình này có thể tiến hành theo hai cách, Patch hoặc tìm ra số Serial thực

Dùng PeiD kiểm tra, biết chương trình này được pack bằng ASPack 2.12, dùng ASPackDie v1.41 giải nén, kiểm tra bằng PeiD thêm lần nữa, biết được chương trình này viết bằng Borland Delphi 6.0 - 7.0

Cách thứ nhất : Patch

Dùng W32dsmv10 mở chương trình, lục tìm trong dãy chuỗi, ta thấy dòng

“ WinBoost has been registered successfully

Please restart your WinBoost “

Ở địa chỉ 0047B6D6 Ghi nhớ địa chỉ này, mở Olly lên, tìm đến dòng lệnh này

0047B6C3 | 3C 01 CMP AL,1

0047B6C5 | 0F85 E3000000 JNZ UNPACKED.0047B7AE

dễ dàng nhận thấy ngay là chỉ cần thay JNZ bằng JE thì chương trình luôn thông báo kết quả đúng với mọi U nhập và S Ta thay đổi thử thì thấy từ

mã 0F85 chuyển thành 0F84 Thóat ra, mở Hex Workshop 4.1, tìm đến mã này, và chuyển thành 0F84, sau đó lưu lại

Chạy lại chương trình, nhập tên đúng, còn P muốn nhập gì thì nhập Sau khi boot lại chương trình xong, sẽ thấy hiện lên thông báo rằng ta là chủ

sở hữu

Cách hai : tìm Serial thực

Sau khi giải nén, chạy chương trình bằng Olly, thì xuất hiện thông báo :

“ Module WINBOOT has entry point outside the code ( as specified in PE header ) Maybe this file is seft-extracting owr seft-modifying Please keep it in mind when setting breakpoints ! “

Trang 3

Sau đó, ta nhấn Shift-F9 khoảng 30 lần thì đến phần nhập U và P, ta cứ nhập đại vào Nhấn Ok thì Olly sẽ dừng tại điểm set BreakPoint

Đặt thêm một BreakPoint nữa ở đây

0047B6BC | 837D E4 01 CMP DWORD PTR SS:[EBP-1C],1

Trace F9 đến đây, nhìn bên của sổ thứ 5, ta thấy chuỗi số Serial thực Chuỗi này luôn luôn được lưu ở địa chỉ 00C7DD34 015CA5A4 ASCII

"hv6k8m-7a8ac6n5-5s3i33"

Thêm một cách khác để tìm số Serial thực : khi nhập xong U và P Nhấn

OK, Olly dừng ở điểm set bp, ta vào của sổ thứ tư, nhấn tổ hợp phím

Ctrl-G, và nhập vào số 1727138, ta sẽ thấy cửa sổ chuyển đến vị trí này Kéo thanh trượt trong cửa sổ này ta sẽ thấy rất nhiều chuỗi giống số Serial

Thực sự, đây là các chuỗi S thực Từ đó ta kết luận đựoc cách mã hoá của chương trình này :

1- Tên nhập là gì không quan trọng Chỉ là để ghi vào bảng tên mà thôi 2- Đã có sẵn một loạt các số Serial thực được lưu trước trong chương trình Chỉ là so sánh S nhập với S có sẵn mà thôi

3- Để tạo keygen, thì ta liệt kê toàn bộ chuỗi, dùng hàm Random để mỗi lần chọn một chuỗi

Đây là một số Serial thực truy được trong chương trình

bc6m7s-6c5sy5p6-4x7d44

gg2b3s-8b6vb5g7-4c6f68

pq7n6k-7b8ps7i3-6x6c42

bx6x2k-6i5pk9q2-5n5e63

ar5r6j-7e8vi8n4-2p3n43

kb3e5f-4y3bf7x3-6e6k88

ky6x6d-4n4jn3q6-5t4b65

xt6q2m-6k3ax3p8-8u8a35

uw3p7t-6j8cv4m8-6p3r33

Trang 4

su6v8j-5b7ue2x5-3g3b63

mx3t3s-6d2fw3r7-4v6x83

up7u5u-3b7qr8b4-4m3x23

bd7a6i-6x4xj3b2-7e4x26

qi2p4i-8f7ix3g3-8k6s65

xd2n6q-8k6hs5n3-2e4d33

sy4t3h-6x4rh5e8-6h4c66

xw5f2h-6s5sj4u5-7d7i67

xf5r7i-3b6xq6n3-6s5p66

dd2u3x-3j7hf7b7-6p2x44

dk6b8v-5c6ns7e6-6u6g52

jv3i5i-6r3tp6a6-8y8n68

ge7i7n-7d2fb6x4-4v3w85

bs3b5j-6e6hg8h8-5v2j78

xk3f3i-5t2sd3c6-7f8k36

dw7a3m-8f6ph3w5-3c8q63

hv6k8m-7a8ac6n5-5s3i33

xk3c3n-7x2ys3a3-8g7m66

Ai rảnh thì tìm tiếp cho mọi người

Posted by: moonbaby Dec 18 2003, 09:04 AM

Homepage : http://www.southbaypc.com/download/SDSetup.exe Production : South Bay Software ( SysDate 1.26 )

Copyright by : Copyright © 1998-2003 All Rights Reserved Cracked File : SysDate.exe ( Microsoft Visual C++ 6.0 )

Type : Name/Serials

Packed : N / A

Crack Tool : OllyDbg 1.09d, W32dsmv10

Unpack Tool : N / A

Trang 5

Note : None

About SysDate 1.26

SysDate displays the day of the month in the system tray (next to the time) How many times have you needed to know the current date, without fumbling through the Windows calendar? SysDate is a huge timesaver, and its affordability makes it a must have! You can customize it to show the date in different colors It is small, and takes up very little memory, and virtually no CPU time

-

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

Không thể dùng Olly để thấy thông báo "Sorry, you have entered an

incorrect registration code." Này được mà phải dùng đến W32dsm89 thì mới thấy thông báo này ở ngay dòng thứ 3 Từ đó truy ra địa chỉ của thông báo này là 00401A50

Load chương trình này lên bằng Olly Nhấn tổ hợp phím Ctrl-G, nhập vào địa chỉ này, ta đến đúng vị trí, nhưng chẳng nhìn thấy gì cả

Ta trace lên một đoạn thì thấy hai lệnh GetDlgItemTextA, đặt BreakPoint ngay tại đây

004019D8 FFD7 CALL EDI ; \GetDlgItemTextA

004019EA FFD7 CALL EDI ; \GetDlgItemTextA

Nhấn F9 chạy Olly, nhập vào U và P, nhấn OK, chương trình sẽ dùng tại BreakPoint Trace xuống một ít, ta gặp,

004019F9 E8 52030000 CALL SYSDATE.00401D50

Trace thẳng vào trong, ta đến đoạn mã lệnh

00401D50 /$ 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4]

00401D54 | 81EC 00010000 SUB ESP,100

00401D5A | 8D4424 00 LEA EAX,DWORD PTR SS:[ESP]

00401D5E | 50 PUSH EAX

Trang 6

00401D5F | 51 PUSH ECX

Trace thẳng vào trong lệnh này tiếp

00401D60 | E8 AB000000 CALL SYSDATE.00401E10 <

=============== Trace into

Ta sẽ chuyển đến đoạn mã hoá chuỗi U nhập Ở địa chỉ 00401E41 ( ta sẽ nói đến quá trình mã hoá sau) Nhưng nếu ta không trace vào trong lệnh CALL này mà đi qua thì ta sẽ thấy S thực của chuỗi được mã hoá và chuỗi

S nhập ở hai vị trí sau

00401D65 | 8B8424 100100>MOV EAX,DWORD PTR SS:[ESP+110] <

=== S input

00401D6C | 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8] < === S real

Và thế là ta có được S thực tương ứng với tên nhập vào

Quá trình xử lý chuỗi U nhập vào để tạo S Như ta nói trên, khi trace thẳng vào, ta đến đây :

00401E41 | 8BF0 MOV ESI,EAX

Trace xuống một chút ít ta đến đoạn mã hoá đầu tiên

Quá trình tạo chuỗi đầu tiên :

Từng ký tự của chuỗi U nhập đựơc đưa vào EDX

00401E4E |> 0FBE1438 /MOVSX EDX,BYTE PTR DS:[EAX+EDI] Tăng EAX lên 1, EAX là biến đếm cho vòng lặp

00401E52 | 40 |INC EAX

EDX = EDX x 5 ==== > Kết quả được lưu ở EDX

00401E53 | 8D1492 |LEA EDX,DWORD PTR DS:[EDX+EDX*4] < === Cái này

Xét xem đã xử lý hết chuỗi chưa ESI có gí trị là chiều dài chuỗi U nhập 00401E56 | 3BC6 |CMP EAX,ESI

ECX = ECX + EDX*4 ( với gía trị ECX ban đầu được gán bằng 6Bh ) 00401E58 | 8D0C91 |LEA ECX,DWORD PTR DS:[ECX+EDX*4] <

=== Cái này

Trang 7

00401E5B |.^ 72 F1 \JB SHORT SYSDATE.00401E4E

Quá trình này được viết lại như sau :

ECX = ECX + (EDX x 5) x 4

Và cứ tính cho hết chuỗi, kết quả được lưu ở EDX Sau đó chuỗi được in

ra dưới dạng :

00401E6B | 68 90C14000 PUSH SYSDATE.0040C190 ; |Format =

"%u-"

hay nói cách khác là dạng “ XXXXXX- “

Trace xuốn tiếp, ta đến quá trình mã hoá chuỗi lần thứ hai

Từng kứ tự của chuỗi U nhập được đưa vào EDX

00401E81 |> 0FBE1438 /MOVSX EDX,BYTE PTR DS:[EAX+EDI] Tăng EAX lên 1 EAX là biến đếm cho vòng lặp

00401E85 | 40 |INC EAX

EDX = EDX x 5 ==== > Kết quả được lưu ở EDX

00401E86 | 8D1492 |LEA EDX,DWORD PTR DS:[EDX+EDX*4]

Kiểm tra xem đã hết vòng lặp hay chưa ESI là chiều dài của chuỗi U nhập 00401E89 | 3BC6 |CMP EAX,ESI

EDX = EDX x 5 ==== > Kết quả được lưu ở EDX

00401E8B | 8D1492 |LEA EDX,DWORD PTR DS:[EDX+EDX*4] ECX = ECX + ( EDX x 8 ) == > Kết quả lưu ở ECX ( với gía trị ECX ban đầu được gán bằng 6Bh ) 00401E8E | 8D0CD1 |LEA ECX,DWORD PTR DS:[ECX+EDX*8]

Tiếp tục nếu chưa hết vòng lặp

00401E91 |.^ 72 EE \JB SHORT SYSDATE.00401E81

Quá trình trên được viết lại như sau :

ECX = ECX + {(EDX x 5 ) x 5 } x 8

Chuỗi thứ hai được in ra dưới dạng ( giống như đoạn trên ) :

00401E98 | 68 90C14000 PUSH SYSDATE.0040C190 ; ASCII "%u-" Hai chuỗi được kết hợp với nhau có dạng XXXX-XXXX-

00401EA7 | 51 PUSH ECX ; /StringToAdd

00401EA8 | 53 PUSH EBX ; |ConcatString

00401EA9 | FF15 20A14000 CALL DWORD PTR

DS:[<&KERNEL32.lstrcatA>] ; \lstrcatA

Trang 8

Trace xuống tiếp, ta đến quá trình tạo chuỗi thứ ba

Lấy ký tự cuối cùng của chuỗi nhập cho vào EDX

00401EAF | 0FBE543E FF MOVSX EDX,BYTE PTR DS:[ESI+EDI-1] Cộng gí trị với 2h ==== > EDX = EDX + 2h

00401EB4 | 83C2 02 ADD EDX,2

Chuỗi thứ ba cũng được viết giống hai chuỗi trên

00401EBC | 68 90C14000 PUSH SYSDATE.0040C190 ; ASCII "%u-"

Ba chuỗi được kết hợp lại, có dạng XXXX-XXXX-XXXX-

00401ECB | 51 PUSH ECX ; /StringToAdd

00401ECC | 53 PUSH EBX ; |ConcatString

00401ECD | FF15 20A14000 CALL DWORD PTR

DS:[<&KERNEL32.lstrcatA>] ; \lstrcatA

Trace xuống tiếp, ta đến quá trình tạo chuỗi thứ tư

Đưa ký tự cuỗi cùng của chuỗi nhập vào EAX

00401ED3 | 0FBE443E FF MOVSX EAX,BYTE PTR DS:[ESI+EDI-1] EAX = EAX x 5 ==== >Kết quả được lưu ở EAX

00401EDC | 8D0480 LEA EAX,DWORD PTR DS:[EAX+EAX*4] EDX = EAX x 5 ==== > Kết quả được lưu ở EDX

00401EDF | 8D1480 LEA EDX,DWORD PTR DS:[EAX+EAX*4] EAX = (EDX x 4) + 1 ==== > Kết quả được lưu ở EAX

00401EE2 | 8D0495 010000>LEA EAX,DWORD PTR DS:[EDX*4+1] Quá trình này được viết lại như sau :

EAX = [{(EAX x 5 ) x 5 } x 4 ]+ 1

Chuỗi thứ tư được tạo thành dưới dạng

00401EEA | 68 8CC14000 PUSH SYSDATE.0040C18C ; ASCII "%u"

Cả bốn chuỗi được kết hợp và có dạng XXXX-XXXX-XXXX-XXXX 00401EF9 | 52 PUSH EDX ; /StringToAdd

Trang 9

00401EFB | FF15 20A14000 CALL DWORD PTR

DS:[<&KERNEL32.lstrcatA>] ; \lstrcatA

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 : 16567-164707-123-12101

Ngày đăng: 03/07/2014, 17:20

TỪ KHÓA LIÊN QUAN