intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Cracking part 41

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

71
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nhìn lên trên chúng ta biết địa chỉ nên đặt breakpoint là 0040120E , click vào đó nhấn F2, xong nhấn F9 để Run chương trình. Nhập name : the_lighthouse và serial : 1234567890. Bấm check và ngay lập tức Olly nhảy ra = breakpoint của chúng ta đã hoạt động và chúng ta ice tại địa chỉ 0040120E.

Chủ đề:
Lưu

Nội dung Text: Cracking part 41

  1. 00401223 | PUSH evdcm2.00402117 | ASCII "Sorry, Serial not valid !" Double click vào dòng đó, chúng ta đến đây : Code: 0040120E | . E8 79000000 | CALL breakpoint của chúng ta đã hoạt động và chúng ta ice tại địa chỉ 0040120E. Nhìn xuống dưới chúng ta thấy có 3 lệnh CALL càn chú ý là ở các địa chỉ : 0040123B, 00401245 và 00401255. Nhìn sơ qua thì chúng ta thấy cả 3 lệnh CALL này khá giống nhau, chẳng biết chọn cái nào bây giờ. Nhưng em mách cho các bác nhá, chúng ta hãy trace đến lệnh call thứ 3 đó, lí do bởi thường thì lệnh CALL cuối cùng sẽ làm nhiệm vụ CHECK serial (cái này ngộ quá ta :)). Okey, bây giờ chúng ta trace over đến đó bằng cách dùng F8 - lưu ý ở đây các bác phải dùng trace over nếu không chưa kịp đến "nhà nàng" 00401255 đã bị lạc giữa mê cung assemble thì dễ xa nhau lắm ;) Xong, đến được nhà nàng rồi, bây giờ chúng ta nhấn F7 (trace into) để mở cửa vào nhà thôi. Và đây là bên trong nhà nàng ( hơi bị rộng đấy :sick: ) : Code:
  2. 00401000 | $ 807D 00 01 | CMP BYTE PTR SS:[EBP], 1
  3. hiểu về IDA như tôi, nhưng ngặt nỗi tài liệu về IDA khá khiêm tốn trong khi đó ứng dụng của nó trong Reverse lại là rất lớn.Hii anh Be đã lên tiếng thì thằng em này cũng cố theo, hôm nay mạn phép xin viết một bài rất cơ bản về IDA để anh em đọc chơi, anh em nào đã biết rồi thì xin góp ý cho bài viết để tôi còn biết đường mà sửa, còn những anh em nào chưa biết thì …. Let’s go J Bài viết này tôi tổng hợp lại từ bài viết của tác giả BlackBird, đã viết từ năm 2000.Có thể anh em cho rằng nó quá cũ, nhưng có một câu “Cũ người mới ta”, thế giới đã đi trước chúng ta bao nhiêu năm thì giờ đây chúng ta phải chắt lọc những gì tính túy nhất để mà học hỏi.Bài viết này tôi sẽ giới thiệu cho các bạn một số chức năng của IDA, để các bạn thấy được tại sao IDA lại được đánh giá cao đến thế. Như các bạn thấy đối với những Newbies thì khi nhìn vào cửa sổ chương trình IDA, hehe điều đầu tiên họ làm là nhấn nút “X” ở góc trên phải màn hình, để làm gì thì khỏi nói các bạn cũng biết nhưng còn đối với những Elite Reverses thì IDA lại là một công cụ không thể thiếu được.Tại sao các Newbies mới ban đầu khi tiếp xúc với IDA lại có thái độ như trên, đó là bởi vì IDA có quá nhiều các hàm và các chức năng mở rộng đồng thời việc sử dụng IDA phức tạp hơn nhiều so với W32Dasm.Phần tiếp theo đây của bài viết sẽ đưa ra những lời giải thích ngắn gọn và trong sáng nhất về việc tại sao bạn nên sử dụng IDA trong khi bạn đã khá thành thạo trong việc sử dụng W32Dasm. II. IDA: A power disassembler Điều đầu tiên mà chúng ta nhận thấy một cách rõ ràng khi chạy IDA đó là giao diện của chương trình trông cực kì chuyên nghiệp và hơn hẳn W32Dasm. Có rất nhiều các tùy chọn cũng nhữ những tính năng cấp cao mà ở W32Dasm không có. Điều này có một thuận lợi đó là các bạn có thể Disassemble tốt hơn và chi tiêt hơn, nhưng đó cũng là điều không thuận lợi khiến IDA trở nên rất khó trong việc làm quen và sử dụng nó. Tuy nhiên, trên thực tế IDA vẫn có đầy đủ các tính năng tương như W32Dasm như : Bạn có thể nhảy tới chính xác một đoạn code nào đó, bạn có thể quan sát vị trí nơi mà một lệnh nhảy nhảy tới một đoạn code, hay bạn có thể xem các String References v..v.. Điều khó khăn đầu tiên cho tất cả các Newbies đó chính là quá trình tìm kiếm các String References. Trong W32Dasm chúng ta có một nút bấm mà theo đó chúng ta có thể xem trực tiếp tất cả các String References rất dễ dàng. Trong IDA, tính năng này được đặt trong Menu: View à Names. Giả sử chúng ta đã mở một file .exe trong IDA, một hộp thoại bật ra cung cấp cho chúng ta rất nhiều tùy chọn. Đừng có đụng tới bất cứ cái gì, chỉ việc nhấn ‘OK’. Sau đó IDA sẽ
  4. thực hiện công việc Analysis và sau khi thực hiện xong bạn hãy mở theo như hình trên chúng ta có được như sau : Oki, chúng ta đang ở cửa sổ Names, vậy làm thế nào để nhận biết ra đâu là String References.Như đã nói ở phần trên W32Dasm có một nút bấm riêng phục vụ cho công việc này, nhưng còn trong IDA các string reference được gắn vào trước bởi một chữ ‘a’.Để tìm kiếm một string bạn chỉ việc nhấn ‘a’ trên bàn phím tại cửa sổ Names, tương tự như việc tìm kiếm các hàm API trong Ollydbg.Hoặc các bạn có thể cuộn chuột để tìm kiếm, cho đến khi thấy được như sau : Đó chính là các String Reference mà IDA đã chỉ ra vị trí của chúng cho chúng ta thấy.Và đương nhiên tương tự như W32Dasm, khi tìm thấy một String đáng quan tâm chúng ta sẽ tìm đến vị trí của nó, trong IDA bạn nhấn Enter hoặc nhấp đúp vào String chúng ta sẽ đến vị trí mà String đó ở tại. Kết quả chúng ta sẽ được như hình minh họa trên. Tai đây bạn quan sát sẽ thấy có một tham chiếu được đặt cạnh String của chúng ta, nó có dạng như sau : DATA XREF: .text:XXXXXXXXo, chi tiết về các thành phần tôi sẽ đề cập trong bài viết sau. Ý nghĩa của cái Reference này cho chúng ta biết nơi mà String của chúng ta thực sử được sử dụng trong đoạn code của chương trình.Rê chuột vào địa chỉ XXXXXXXX, IDA sẽ cho chúng ta thấy được như sau điều mà ở W32Dasm không có được : Để thực sử tới đoạn code sử dụng String chúng ta chỉ việc nhấn đúp chuột vào địa chỉ đó, nó sẽ đưa chúng ta đến nơi chúng ta cần đến : Khà khà rất đơn giản phải không nào, đâu có gì là quá khó phải không các bạn. Tiếp theo chúng ta sẽ đề cập đến một số tính năng khác của W32Dasm mà cũng được IDA hỗ trợ rất tốt đó là các lệnh nhảy (Jump) và các lời gọi Call References.Tôi xin lấy 2 hình minh họa cho quá trình Disassembly một chương trình trong W32Dasm và IDA để các bạn nhận thấy được sự khác biệt.
  5. Như các bạn thấy, IDA cung cấp các thông tin chi tiết và rõ ràng hơn nhiều.Tiếp theo ta sẽ xem một ví dụ về Reference. Trong W32Dasm các ban sẽ thấy như sau : Còn trong IDA nó sẽ được thể hiện như sau : Nhìn vào hình minh họa trong IDA, ta thấy rằng IDA cho chúng ta nhiều thông tin mặc dù trông nó có vẻ ngắn gọn hơn W32Dasm.Cụ thể như sau : 1. Đây là một lệnh nhảy vì ta thấy có kí tự (j). Thêm nữa lệnh nhảy này nằm ở phía trên của địa chỉ 0x0040132D, tại sao lại biết được nó nằm phía trên đó là do ta thấy có hình mũi tên lên (). 2. Lệnh nhảy tới đoạn code bắt đầu tại địa chỉ 0x0040132D này nằm tại địa chỉ 0x0040131A (= DialogFunc + 29). Bạn sẽ hỏi làm sao tôi biết địa chỉ của DialogFunc, xin thưa rất đơn giản bạn chỉ cần nhấn chuột vào chữ DialogFunc và chọn Edit Function hay phím tắt là Alt+P, ta sẽ có được thông tin về địa chỉ như sau : Vậy là 0x0040131A = 0x004012F1 + 0x29 3. Lệnh nhảy này được nằm tại .CODE section. Nếu như Reference là một lời gọi (CALL) thì trong IDA nó sẽ được thể hiện như sau : Một trong những tính năng tuyệt vời khác của IDA đó chính là việc thể hiện các biến được dùng trong chương trình.Thậm chỉ bạn có thể nhấn đúp chuột vào chúng để đi tới địa chỉ nơi mà các biến được lưu trữ : Lea edi, [esp + 1B8h + var_104] Một trong những tính năng khiến cho IDA trở thành một công cũ rất mạnh đó chính là việc sử dụng Flirt Signatures. Giải thích một cách đơn giản nhất đó là trong quá trình disassembly IDA cố gắng nhận diện chính xác các hàm thư viện có liên quan với trình biên dịch. Ví dụ :  
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2