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

Cracker Handbook 1.0 part 99 ppsx

9 289 1

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 128,86 KB

Nội dung

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. 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 ! “ Click Ok và tiếp tục load. 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 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 Carried Out : Get Correct Serials 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 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 Lặp vòng nếu chưa hết chuỗi. 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 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 00401EFA |. 53 PUSH EBX ; |ConcatString 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 . gặp, 00 4 01 9 F9 . E8 5 203 000 0 CALL SYSDATE .00 401 D 50 Trace thẳng vào trong, ta đến đoạn mã lệnh 00 401 D 50 /$ 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4] 00 401 D54 |. 81EC 00 01 0 00 0 SUB ESP , 10 0 00 401 D5A. 00 401 D5A |. 8D4424 00 LEA EAX,DWORD PTR SS:[ESP] 00 401 D5E |. 50 PUSH EAX 00 401 D5F |. 51 PUSH ECX Trace thẳng vào trong lệnh này tiếp 00 401 D 60 |. E8 AB 000 000 CALL SYSDATE .00 401 E 10 < ===============. 90C1 400 0 PUSH SYSDATE .00 40C1 90 ; ASCII "%u-" Hai chuỗi được kết hợp với nhau có dạng XXXX-XXXX- 00 401 EA7 |. 51 PUSH ECX ; /StringToAdd 00 401 EA8 |. 53 PUSH EBX ; |ConcatString 00 401 EA9

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN