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 1Powered 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 3Sau đó, 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 4su6v8j-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 5Note : 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 600401D5F | 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 700401E5B |.^ 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 8Trace 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 900401EFB | 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