Skip to content

Instantly share code, notes, and snippets.

@J4ckKn1ght
Created December 31, 2018 11:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save J4ckKn1ght/f44f4e196a70dc0c05b127339d7711d7 to your computer and use it in GitHub Desktop.
Save J4ckKn1ght/f44f4e196a70dc0c05b127339d7711d7 to your computer and use it in GitHub Desktop.
- Dynamic libary link:
+ Ảnh hưởng tính năng emulate, symbolic execution, ...
+ Mô tả: các hàm liên kết động không thể emulate (chạy thử) vì nó không có nằm trong binary mà do hệ điều hành xử lý, tool chỉ làm việc trên binary
+ Hướng giải quyết:
* Cách 1: Bỏ qua các hàm này. Emualte chỉ hướng đến việc hiểu code không phải hiểu thư viện hoạt động nên bỏ qua
* Cách 2: Implement các hàm liên kết động (Miasm đã implement một số lơn rồi). Miasm cho phép implement bằng python các hàm này. Vấn đề nảy sinh số lượng hàm liên kết động qua lớn => Chúng ta có thể limit tính năng lại ví dụ chỉ trên linux thì cho emulate thư viện liên kết động
* Cách 3: Tìm hiểu thêm về vấn đề này. Mình đã tìm hiểu một ít về nó gần như chưa có thằng nào giải quyết hoàn hảo về nó cả
- Vẽ Control Flow Graph:
+ Vấn đề 1: Miasm nó hiểu call giống như jmp nên nó tách ra 2 block khác nhau ngăn cách bởi call trong khi đáng nhẽ 2 cái phải merge lại. Hình ảnh mô tả: https://i.imgur.com/KLseTCh.png
* Giải quyết: có thể chấp nhận vì chỉ ảnh hưởng đến tính thẩm mỹ hoặc cố gắng tìm cách fix ví dụ như gặp mấy trường hợp call này thì merge lại (Merge như thế nào thì cần nghiên cứu có vẻ nó chỉ là vấn dề Font-end?)
- Diassembly:
+ Vấn đề 1: Miasm không biểu diễn số âm. Ví dụ: -0x4 sẽ được biến thành +0xFFFFFFFFFFFFFFFC
+ Vấn đề 2: Detect kiểu của segment data. Các hằng số, chuỗi của chương trình được lưu ở data segment chúng ta cần thông qua cách chương trình dùng để xác định nó là string, int, long.
+ Vấn đề 3: Xrefs. Tìm xem đối tượng (function, data, string,...) đó được dùng ở những đâu. Mình chưa biết Miasm có chức năng này không. Nếu không thì cỏ thể phải implement
+ Vấn đề 4: Nhận dạng tên hàm của thư viện liên kết động(printf, scanf,...). Miasm không hỗ trợ việc xác định tên hàm tự động. Cái này là công nghệ FLIRT(Fast Library Identification and Recognition Technology) của IDA. Hiện tại có rất nhiều thằng implement được cái này kể cả các tools open source. Cần nghiên cứu.
- Các chức năng như Emualte, Symbolic Execution, Taint analysis cũng cần đi xâu tìm hiểu. Mình chỉ biết dùng cơ bản phải manual nhiểu. Để viết được tool auto thì cần thời gian tìm hiểu nhiều.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment