OllyDbg Tut_9

Một cái đầu lạnh để vững vàng, một trái tim đỏ lửa để yêu và làm việc hết mình!

I. Giới thiệu chung

Vậy là chúng ta đã trải qua tám bài viết trong loạt bài viết về OllyDbg, trong tám bài viết này tôi đã hoàn thành phần việc đầu tiên là giới thiệu và giải thích sơ bộ về các lệnh asm thường được sử dụng nhất khi chùng ta làm việc với OllyDbg. Trong các phần tiếp theo tới đây chúng ta sẽ dần dần tiếp cận những kiến thức mới mẻ hơn,  sẽ có nhiều đất để cho chúng ta tìm tòi, học hỏi và thực hành. Chúng ta sẽ tìm hiểu dần dần từng phần một một cách chậm rãi, song song với việc đọc lý thuyết thì chúng ta sẽ thực hành luôn những gì chúng ta đã tìm hiểu được và tự bổ sung những mảng mà chúng ta còn khiếm khuyết. Bài viết này tôi sẽ trình bày tới các bạn một số thuật ngữ cơ bản, cách thức làm việc với các hàm APIs, cách patch thông qua các cờ và cuối cùng là các edit trực tiếp code của chương trình. N0w….L3t’s G0!!!!!!!!!

II. Thuật ngữ cơ bản, làm việc với APIs và patch thông qua cờ

Trong phần 9 này chúng ta vẫn tiếp tục sử dụng crackme của CRUEHEAD để demo, Load crackme vào trong Olly chúng ta dừng lại tại entrypoint của Crackme. Vậy entrypoint nó là cái gì? Có khá nhiều câu hỏi của các bạn liên quan đến nó, tôi không phải là dân lập trình chính gốc nên tôi hiểu thế nào sẽ giải thích cho các bạn.

Về cơ bản thuật ngữ EntryPoint (EP) ám chỉ điểm bắt đầu của một chương trình nơi mà tại đó trở đi chương trình sẽ được thực thi một cách bình thường. Không nên bị nhầm lẫn giữa EPOEP (Original Entry Point), OEP là một thuật ngữ khác mà chúng ta sẽ tìm hiểu ở các phần tiếp theo sau của bộ tuts này. Sau khi chúng đã open một chương trình trong Olly, đợi cho quá trình phân tích kết thúc thì Olly sẽ đưa chúng ta dừng lại tại EntryPoint của chương trình đó.

Download toàn bộ bài viết :

ollydbg_tut9

Best Regards

4 thoughts on “OllyDbg Tut_9

  1. e chào anh ạ. tình hình là e đang là newbie và đang đọc bộ tut của a, nó khá là hay ạ. chuyện sẽ không có gì đáng nói nếu thầy e không cho bài tập là dịch ngược một con virus và e phải hoàn thành nó. e có debug trong ollydbg và phát hiện được sau khi load virus vào ollydbg=>debug=> ghi đè vùng nhớ trong cửa sổ dump.
    sau khi ghi đè xong thì trong cửa sổ dump window=>right+click=> diassemble thì nó tạo thành một doạn code mới hoàn toàn(e nghĩ là con virus đã bị pack và đây là code gốc) cho e hỏi là có cách nào để dump code gốc này ra thành file exe không ạ. e có thử nhiều cách nhưng chỉ toàn là dump từ code chứ không dump từ memory. mong a có thể hướng dẫn giúp e được không ạ. e cảm ơn a nhiều

    1. Chào em,

      Hi vọng bộ tutors của anh giúp ích được thêm cho em trong công việc học tâp.
      Về phần bài tập của em thì malware nào cũng có xu hướng áp dụng self-packing, bung code có hành vi độc hại để thực thi. Việc làm này nhắm tránh việc bị phát hiện từ đầu bởi AV. Thường thì malware sẽ sử dụng các API như VirtualAlloc/ZwAllocateVirtualMemory/HeapCreate để cấp phát các vùng nhớ có thuộc tính Protect = PAGE_EXECUTE_READWRITE hay HEAP_CREATE_ENABLE_EXECUTE, sau đó sẽ drop code mới hoặc PE mới vào và chuyển đổi tới để thực thi. Hoặc cũng có thể decode chính vùng nhớ mà em đang thực hiện debug,…

      Trong trường hợp của em, với vùng code em nghi ngờ tại cửa sổ dump, em nhấn chuột phải, chon Backup -> Save data to file. Nó sẽ dump thành một file dạng .mem. Tuy nhiên, khi em save kiểu này, nó không phải là PE file bình thường, cho nên em chỉ có thể load bằng công cụ disassembly như là IDA để phân tích code tĩnh.

      Hoặc có một cách khác nữa, em nghi ngờ đó vùng code của malware, muốn debug tiếp thì tìm cách thiết lập các breakpoint như Hw_bp hoặc mem_bp.

      Regards,

Leave a Reply