Cracking part 13

Chia sẻ: Dqwdasdasd Qwdasdasdasd | Ngày: | Loại File: PDF | Số trang:6

0
50
lượt xem
5
download

Cracking part 13

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ
Lưu

Nội dung Text: Cracking part 13

  1. với TaskLock, chúng ta nhấn F11 để trở về đoạn lệnh gọi function. Chúng ta nhấn Ctrl- Up để kéo màn hình lên trên và sẽ thấy đoạn code sau : MOV ESI,[ESP+0C] PUSH 1E_____________________________Lưu chiều dài lớn nhất của FN PUSH 0040A680_______________________Địa chỉ đến buffer PUSH 000003ED_______________________Control handle PUSH ESI_____________________________Dialog handle CALL [USER32!GetDlgItemTextA] Các bác có thấy cái gì không ? Đó là số 40A680. Để xem nó giấu cái gì nào, okey chúng ta hãy đánh : d 40A680 Và cái gì hiện ra trong data window vậy các bác. Well, chúng ta hãy nhìn vào phần đầu của đoạn code : PUSH 00 PUSH 00 PUSH 000003F6_______________________Control handle MOV EDI, 00401680___________________Lưu địa chỉ đến buffer PUSH EDI____________________________Dialog handle CALL [USER32!GetDlgItemInt] Chắc các bác đang thắc mắc GetDlgItemInt là cái quái gì phải không ? Ở đây em xin nói ngoài lề 1 chút : GetDlgItemInt là 1 function giống với GetDlgItemText, nó trả về giá trị integer từ hộp thoại text. Nó được trả về trong EAX, vì vậy chúng ta “nhảy” qua đoạn lệnh này, và nhìn vào register window … Của em là nó như thế này : EAX=00003039 Và để biết 3039 là cái gì, chúng ta đánh : ? 3039 Okey, chúng ta sẽ có gì nào : 00003039 0000012345 “09” ___|_________|________| ___|_________|________| __hex_______dec______ascii Như các bác thấy, nó hiện ra FS mà chúng ta đã đánh vào ban nãy. Bây giờ chúng ta típ tục, các bác hãy nhìn vào đoạn code theo sau, trước tiên là FS đã được lưu lại : MOV [0040A548], EAX___________________Lưu FS MOV EDX, EAX_________________________”đặt” FS vào EDX 3.1.3 Đoạn code tính số serial ------------------------------------- Và đây chính là đoạn code tính số serial : MOV ECX, FFFFFFFF______________________Tính chiều dài FN
  2. SUB EAX, EAX REPNZ SCASB NOT ECX DEC ECX_______________________________EAX chứa chiều dài FN MOVSX EAX, BYTE PTR [0040A680]____________Nhận byte tại 40A680 IMUL ECX, EAX___________________________ECX = ECX * EAX SHL ECX, 0A____________________________Đổi chỗ 0A ADD ECX, 0002F8CC______________________Thêm 2F8CC vào kết quả MOV [0040A664], ECX Và đây mới là đoạn code mà ta mong đợi nhất ( cố lên các bác, sắp xong rùi :) : CMP ECX, EDX___________________________So sánh EAX và EDX JZ 00402DA6___________________________Nhảy nếu bằng Sau khi “nhảy” đến CMP ECX,EDX , các bác có thể xem đoạn code thực của nó bằng cách đánh vào : ? ecx Và nó sẽ hiện ra như sau (không bít có giống của các bác không) : 000DC0CC 0000901324 Hehehehhe……đến đây thì chúng ta đã có được registration number của mình rùi đó là 901324. Bây giờ các bác thử nhập lại registration number xem có được không, được quá đi chứ lị :))))))) 4. Tạo keymaker cho phần mềm Command Line 95 =============================== Chúng ta nhìn vào đoạn code tính số serial ở trên, và dịch nó sang C. Em làm ví dụ này để thấy làm thế nào để tính được real serial : Real serial= [( kí tự viết hoa đầu tiên * chiều dài của chuỗi)
  3. strupr(buffer); code = ( ((unsigned long)buffer[0] * (unsigned long)strlen(buffer))
  4. Tuy nhiên các bác cũng chớ lo vì các programmer giỏi thường không bao giờ viết chương trình bằng Basic. (phù, may quá ;)) Phụ lục : A. Làm thế nào để kiểm tra SoftICE đã load symbols ? ++++++++++++++++++++++++++++++++++++++ Để kiểm tra xem SoftICE đã load symbols cho GetWindowText chưa, các bác vào SoftICE và đánh : exp getwindowtext B. Cú pháp cho function +++++++++++++++++ int GetWindowText(int windowhandle, char *buffer, int maxlen); int GetDlgItemText(int dialoghandle, int controlid, char *buffer, int maxlen); int GetDlgIemInt(int dialoghandle, int controlid, int *flag, int type); the_lighthouse (http://www.reaonline.net) cRACKER's nOTES Quote: Bài viết được chia thành 10 phần chính : 00. Giới thiệu 01. Assembly for Crackers 02. SoftICE ( Boot Menu, Setup, Commands) + 02.1 Boot Menu + 02.2 Setup + 02.3 Commands 03. Breakpoints và Win API Details + 03.1 Crippled Programs + 03.2 Dialog Box + 03.3 Drive Type Checks + 03.4 File Accesses + 03.5 Registry Accesses + 03.6 Serial Catching + 03.7 Time & Date Accesses + 03.8 Window Generating 04. Kiến thức về lệnh nhảy ( jump ) 05. Kiến thức về SET 06. Tips & Tricks for Cracking + 06.1 Crippled Programs + 06.2 Dongles + 06.3 General + 06.4 InstallSHIELD Setups
  5. + 06.5 Key File Protections + 06.6 Nag Screens + 06.7 Runtime Limits + 06.8 Serials + 06.9 Time Limits + 06.10 Visual Basic Programs 07. Window Messages for Crackers 08. Nhận biết Functions, Arguments, và Variables 09. Các cách thức bảo vệ của phần mềm + 09.1 C – Dilla SafeDISC + 09.2 SalesAgent + 09.3 SecuROM + 09.4 softSENTRY + 09.5 TimeLOCK + 09.6 Vbox 10. Bitmanipulation Phụ lục : +A. Những ý kiến chung về Cracking +B. Những câu hỏi thường gặp ******************************************* 00. Giới thiệu ======== Bài viết là 1 cuốn “bí kíp” được tích lũy từ những kiến thức “bí mật không thể bật mí “ cũng như các kinh nghiệm quý báu của các cracker trên thế giới, do đó những gì quan trọng nhất mà 1 cracker cần phải biết đều có trong loạt tuts này. 01. Assembly for Crackers ================ Quote: AND Cú pháp : AND , Tác dụng : thực hiện logical AND của 2 giá trị, thay thế đích với nguồn Ví dụ : AND BX,03h Quote: CALL Cú pháp : CALL address Tác dụng : đưa vào stack lệnh next. Sử dụng cho việc gọi hàm Ví dụ : CALL 10284312 + Gọi function tại địa chỉ “address”, sau khi function kết thúc, đoạn code ngay phía dưới lệnh call sẽ được tiếp tục Quote:
  6.  
Đồng bộ tài khoản