Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
1,05 MB
Nội dung
SKKN Tiểu Luận PRO(123docz.net) ĐẠ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 Hồng Thanh 14520842 SKKN Tiểu Luận PRO(123docz.net) 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 yê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 SKKN Tiểu Luận PRO(123docz.net) 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 SKKN Tiểu Luận PRO(123docz.net) 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 SKKN Tiểu Luận PRO(123docz.net) 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 SKKN Tiểu Luận PRO(123docz.net) 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ữ SKKN Tiểu Luận PRO(123docz.net) -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 SKKN Tiểu Luận PRO(123docz.net) - 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 SKKN Tiểu Luận PRO(123docz.net) ⮚ -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 SKKN Tiểu Luận PRO(123docz.net) ⮚ /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 SKKN Tiểu Luận PRO(123docz.net) Hiện thị thông tin tổng thể file thực thi thông qua –f option: Hiện thị thông tin chi tiết file thực thi thông qua option –p: SKKN Tiểu Luận PRO(123docz.net) Hiện thị nội dung section header sử dụng option –h: SKKN Tiểu Luận PRO(123docz.net) Hiện thị nội dung tất header sử dụng option –x: SKKN Tiểu Luận PRO(123docz.net) Hiện thị nội dung mã assembly phần executable sections sử dụng –d opition: Hiện thị nội dung mã assembly tất section sử dụng –D option: SKKN Tiểu Luận PRO(123docz.net) Hiện thị nội dung toàn section option –s: SKKN Tiểu Luận PRO(123docz.net) Hiện thị thông tin debug –g option: Hiện thị mục cấp phát động sử dụng –R option: SKKN Tiểu Luận PRO(123docz.net) Hiện thị section cần quan tâm –j option: Video demo sử dụng Objdump lấy số thông tin file: https://youtu.be/U7HXZUsuEQA SKKN Tiểu Luận PRO(123docz.net) VI Công cụ C++ filt: Giới thiệu: Ta biết C++ cung cấp tính nạp chồng hàm Vậy làm hàm trùng tên biên dịch xuống ngôn ngữ bậc thấp assembly phân biệt hàm assembly cách nào? Câu trả lời hàm assembly gán định danh riêng, tức hàm ngôn ngơn ngữ C++ trùng tên xuống assembly có tên khác Q trình gọi mangling, công cụ C++filt cho phép làm ngược lại trình này, tức từ tên định danh assembly(hay gọi symbol) chuyển ngược thành tên hàm C++ ● Cú pháp: c++filt [tùy chọn] ● Tùy chọn: ⮚ -_: Có dấu gạch ⮚ -n : khơng có dấu gạc ⮚ -p : Khơng có tham số ⮚ -s : Định dạng (kiểu biên dịch) ⮚ -i : Xuất kết vắn tắt Ví dụ minh họa: Ta có mã C sau: SKKN Tiểu Luận PRO(123docz.net) SKKN Tiểu Luận PRO(123docz.net) Trong ví dụ ta rõ ràng thấy hàm print() sử dụng kỹ thuật overload, Trong code C++ ba hàm tên print(), ta dùng Objdump với option -t kiểm tra xem hàm chuyển xuống assxembly đổi tên Ta thấy hàm print mangling thành hàm assxembly khác Ta thử dùng c++filt để chuyển ngược hàm hàm code C++ Video demo: https://youtu.be/n09kxlA_tVw -HẾT - SKKN Tiểu Luận PRO(123docz.net) ... PRO( 123 docz.net) Hiện thị nội dung toàn section option –s: SKKN Tiểu Luận PRO( 123 docz.net) Hiện thị thông tin debug –g option: Hiện thị mục cấp phát động sử dụng –R option: SKKN Tiểu Luận PRO( 123 docz.net)... SKKN Tiểu Luận PRO( 123 docz.net) Hiện thị thông tin tổng thể file thực thi thông qua –f option: Hiện thị thông tin chi tiết file thực thi thông qua option –p: SKKN Tiểu Luận PRO( 123 docz.net) Hiện... dung section header sử dụng option –h: SKKN Tiểu Luận PRO( 123 docz.net) Hiện thị nội dung tất header sử dụng option –x: SKKN Tiểu Luận PRO( 123 docz.net) Hiện thị nội dung mã assembly phần executable