KỸ THUẬT PHÂN TÍCH MÃ ĐỘC: Một số công cụ phân tích tệp tin

21 79 1
KỸ THUẬT PHÂN TÍCH MÃ ĐỘC: Một số công cụ phân tích tệp tin

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Công cụ nm được sử dụng để kiểm tra các file nhị phân (bao gồm thư viện, modules đối tượng được biên dịch, file đối tượng được chia sẻ và các file thực thi độc lập) rồi hiển thị nội dung các file đó hoặc thông tin meta được lưu trữ trong đó, cụ thể là bảng biểu tượng. Đầu ra từ nm phân biệt giữa các loại ký hiệu khác nhau. Ví dụ, nó phân biệt giữa một hàm được cung cấp bởi một modules đối tượng và một hàm được yêu cầu bởi nó. Công cụ nm được sử dụng để trợ giúp gỡ lỗi, để giúp giải quyết các vấn đề phát sinh từ xung đột tên.

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THƠNG KỸ THUẬT PHÂN TÍCH MÃ ĐỘC Một số cơng cụ phân tích tệp tin GIẢNG VIÊN HƯỚNG DẪN Nguyễn Tấn Cầm Nhóm sinh viên: Huỳnh Tấn Duy – 14520214 Đỗ Bá Tứ Mỹ – 14520541 Nguyễn Hoàng Thanh – 14520842 I Công cụ nm Giới thiệu - Công cụ nm sử dụng để kiểm tra file nhị phân (bao gồm thư viện, modules đối tượng biên dịch, file đối tượng chia sẻ file thực thi độc lập) hiển thị nội dung file thơng tin meta lưu trữ đó, cụ thể bảng biểu tượng - Đầu từ nm phân biệt loại ký hiệu khác Ví dụ, phân biệt hàm cung cấp modules đối tượng hàm u cầu - Cơng cụ nm sử dụng để trợ giúp gỡ lỗi, để giúp giải vấn đề phát sinh từ xung đột tên Chức - Cơng cụ nm liệt kê biểu tượng từ file đối tượng Các lệnh nm cung cấp thông tin ký hiệu sử dụng file đối tượng file thực thi - Các thông tin mặc định mà lệnh nm cung cấp: • Địa ảo biểu tượng • Một ký tự mơ tả loại ký hiệu Nếu ký tự chữ thường thuộc local, chữ hoa external • Tên biểu tượng Một số cờ thông dụng Cách mặc định sử dụng ‘nm’: Nếu khơng có tên thực thi định, tên ‘a.out’ a Hiển thị file đối tượng tham chiếu đến biểu tượng Lệnh hiển thị tất file đối tượng tham chiếu đến biểu tượng ‘func’ folder b Hiển thị tất biểu tượng không xác định file thực thi Lệnh liệt kê tất ký hiệu không xác định file thực thi ‘1’ c Hiển thị tất biểu tượng thực thi Lệnh liệt kê tất ký hiệu ‘namepid’ theo thứ tự xếp địa chúng d Tìm kiếm biểu tượng hiển thị kích thước Lệnh tìm kiếm biểu tượng ‘abc’ hiển thị kích thước e Hiển thị biểu tượng động thực thi Lệnh hiển thị ký hiệu động file thực thi ‘1’ f Trích xuất biểu tượng loại khác Một tính mạnh mẽ khác lệnh nm trích xuất biểu tượng từ nhiều loại đối tượng định dạng file khác g Thay đổi định dạng đầu nm Mặc định, định dạng đầu hiển thị nm kiểu bsd Có thể thay đổi định dạng cách dụng cờ -f ví dụ đây: Lệnh hiển thị đầu theo kiểu ‘posix’ h Chỉ hiển thị biểu tượng bên thực thi i Sắp xếp đầu nm theo kích thước ký hiệu j Chỉ định tùy chọn nm file Một tính có giá trị khác nm lấy đầu vào dịng lệnh từ file: định tất tùy chọn file định tên file cho lệnh nm II Công cụ Otool Giới thiệu - Công cụ Otool chạy hệ điều hành Mac OS, hỗ trợ phân tích tĩnh phân tích động - Otool trợ giúp hiển thị phần định file thư viện đối tượng - Nó hiển thị thông tin định dạng thô (số) dạng biểu tượng sử dụng tên macro số Cài đặt Otool - Otool cài đặt mặc định, có sẵn phần module cơng cụ dịng lệnh Xcode có hai cách để có nó:  Tải 1.5 GB Xcode App (có chứa 100MB cơng cụ dịng lệnh) Cách đơn giản giúp tự động tải xuống cài đặt  Thiết lập tài khoản nhà phát triển tải xuống Nhà phát triển Apple Có thể đăng kí tài khoản với email https://developer.apple.com/programs/register/ kết nối với site https://developer.apple.com/downloads/ để tải xuống công cụ dòng lệnh phù hợp cho Xcode từ danh sách Hình giao diện yêu cầu xác nhận điều khoản người dùng trước phép tải xuống Một số tùy chọn thông dụng Otool -a: Hiển thị tiêu đề lưu trữ -S: Hiển thị nội dung tệp có SYMDEF tệp lưu trữ -f: Hiển thị toàn headers -h: Hiển thị Mach header -l: Hiển thị lệnh load -L: Hiển thị tên phiên thư viện chia sê ID thư viện -D: Chỉ hiển thị tên cài đặt thư viện chia sẻ -s: Hiển thị nội dung section (segname, sectname) Nếu cờ -v định, section hiển thị dạng loại nó, trừ loại khơng -t: Hiển thị nội dung section (text) -d: Hiển thị nội dung section (data) -o: Hiển thị nội dung segment OBJC dùng hệ thống thời gian chạy -c: Hiển thị chuỗi đối số từ lõi file argv[ ] envp[ ] -I: Hiển thị bảng ký hiệu gián tiếp -T: Hiển thị nội dung thư viện chia sẻ liên kết động -R: Hiển thị bảng liên thư viện chia sẻ liên kết động có liên quan -M: Hiển thị bảng modules thư viện chia sẻ liên kết động -H: Hiển thị bảng gợi ý namespace hai lớp -G: Hiển thị liệu bảng code -C: Hiển thị gợi ý tối ưu hóa trình liên kết -P: In thơng tin danh sách saction dạng chuỗi -function_offsets: Khi thực tháo gỡ offset thập phân từ nhãn in cuối -j: Khi thực tháo gỡ byte opcode hướng dẫn -m: Tên file đối tượng không giả định có lưu trữ (thành viên), cho phép tên file chứa dấu ngoặc đơn version: in thông tin phiên otool *Câu hỏi: Nêu chức công cụ nm tool: - Kiểm tra file nhị phân (bao gồm thư viện, modules đối tượng biên dịch, file đối tượng chia sẻ file thực thi độc lập) hiển thị nội dung file thơng tin meta lưu trữ đó, cụ thể bảng biểu tượng - Trợ giúp gỡ lỗi, để giúp giải vấn đề phát sinh từ xung đột tên - Liệt kê biểu tượng từ file đối tượng, cung cấp thông tin ký hiệu sử dụng file đối tượng file thực thi III Công cụ Ldd: Giới thiệu: Ldd (List Dynamic Dependencies) tiện ích dịng lệnh chạy hệ điều hành *unix Ldd cho phép xem thư viện sử dụng chương trình định Lưu ý: Không nên chạy lênh ldd với chương trình khơng đáng tin cậy lệnh ldd chạy thực thi chương trình Ví dụ: Như ví dụ dịng đầu tên thư viện: linux-gate.so.1 mã hex sau địa thư viện nhớ tải lên Ở dòng thứ hai thấy có kí hiệu =>, sau kí hiệu đường dẫn đến thư viện ổ cứng mã hex địa thư viện tải lên nhớ Một số tùy chọn thông dụng:  Cú pháp: ldd [tùy chọn]  Tùy chọn:  help in tùy chọn  version in thông tin phiên  -d, data-relocs tái định vị lại liệu tiến trình  -r, function-relocs tái định vị lại liệu hàm tiến trình  -u, unused in thư viện không sử dụng trực tiếp  -v, verbose in tất thông tin Video demo: https://drive.google.com/open?id=1gmEhEITg2bpDNb1U01QS4trhPZQGwcaP IV Công cụ Dumpbin: Giới thiệu: - Dumpbin tiện ích dịng lệnh chạy hệ điều hành Windows - Dumpbin cài đặt kèm theo Visual Studio IDE - Tiện ích hiển thị thông tin tập tin thực thi exe, thư viện liên kết động dll dạng tập tin đối tượng chung COFF Định dạng tệp đối tượng chung (COFF) định dạng cho tệp thực thi, mã đối tượng tập tin máy tính thư viện chia sẻ, sử dụng hệ thống Unix Nó giới thiệu Unix System V, thay định dạng a.out sử dụng trước đây, hình thành sở cho đặc tả mở rộng XCOFF ECOFF, trước thay ELF, giới thiệu với SVR4 COFF biến thể tiếp tục sử dụng số hệ thống giống Unix, Microsoft Windows, môi trường EFI số hệ thống phát triển nhúng Việc sử dụng rộng rãi định dạng COFF ngày Portable Executable (PE) Microsoft Một số tùy chọn thông dụng:  Cú pháp: dumpbin [tùy chọn] [tập tin]  Mặc định gõ dumpbin hiển thị tùy chọn lệnh  Một số tùy chọn hay dùng:  /ALL - in tất thông tin tập tin ngoại trừ mã asm  /DEPENDENTS - in tên tập tin dll mà tập tin sử dụng  /DISASM[:{BYTES|NOBYTES}] - in mã asm phân đoạn  /EXPORTS - in hàm mà dll cung cấp  /HEADERS - in header tập tin phân đoạn  /IMPORTS[:filename] - in tập tin dll hàm tương ứng mà ứng dụng sử dụng Với filename tên dll cần lọc  /OUT:filename - thay in console chuyển vào tập tin  /RANGE:vaMin[,vaMax] - cắt đoạn tập tin, thường kèm với lựa chọn /DISASM  /SECTION:name - in thông tin phân đoạn định  /SUMMARY - in thơng tin tóm tắt tập tin Video demo: https://drive.google.com/open?id=1gmEhEITg2bpDNb1U01QS4trhPZQGwcaP V Công cụ Objdump: Giới thiệu: Objdump công chụ cho phép đọc thông tin object files, hay file thực thi Thường sử dụng reverse engineering dùng cho developer làm công cụ debug Objdump đa số cài trước phân phối linux với cấu trúc lệnh objdump [tùy chọn] Các ví dụ minh họa: Ta có file C đơn giản sau compile file thực thi #include int main(void) { int n = 6; float f=1; int i = 1; for(;i

Ngày đăng: 12/05/2020, 14:37

Tài liệu cùng người dùng

Tài liệu liên quan