Các công cụ giúp thiết kế ngược định dạng tệp nhị phân


81

Những công cụ nào có sẵn để hỗ trợ giải mã các định dạng dữ liệu nhị phân không xác định?

Tôi biết Hex Workshop và 010 Editor đều hỗ trợ các cấu trúc. Chúng có thể chấp nhận được ở một mức độ hạn chế đối với một định dạng cố định đã biết nhưng sẽ khó sử dụng với bất kỳ định dạng nào phức tạp hơn, đặc biệt là đối với các định dạng không xác định. Tôi đoán tôi đang xem một mô-đun cho ngôn ngữ kịch bản hoặc một công cụ GUI có thể viết kịch bản.

Ví dụ, tôi muốn có thể tìm thấy một cấu trúc trong một khối dữ liệu từ thông tin hạn chế đã biết, có lẽ là một con số kỳ diệu. Khi tôi đã tìm thấy một cấu trúc, hãy theo dõi các từ có độ dài và bù đã biết để tìm các cấu trúc khác. Sau đó lặp lại điều này một cách đệ quy và lặp đi lặp lại nếu nó có ý nghĩa.

Trong giấc mơ của tôi, thậm chí có thể tự động xác định các hiệu số và độ dài có thể dựa trên những gì tôi đã nói với hệ thống!


1
Không phải là câu trả lời trực tiếp cho câu hỏi của bạn: Bạn không có tệp thực thi hoạt động với các tệp nhị phân có định dạng không xác định này? Sử dụng trình gỡ lỗi ring3 chẳng hạn như OllyDbg để thiết kế ngược, thay vào đó sẽ dễ dàng hơn rất nhiều so với việc cố gắng xử lý các định dạng tệp brute force.
Daniel Sloof

Ồ vâng, một trong những ứng dụng đáng lẽ tôi nên thêm vào câu hỏi "bạn đã từng muốn viết chương trình nào nhưng không bao giờ tìm thấy thời gian để làm điều đó";)

Trong một số trường hợp, tôi có các tệp thực thi xử lý chúng ở một mức độ nào đó. Đôi khi các tệp là mã thực thi (nhưng không phải ở định dạng chuẩn) và có thể chứa các quy trình giải mã của riêng chúng. Chúng tôi có thể có một phần tài liệu giới hạn như một điểm khởi đầu. Trong những trường hợp khác tôi không có gì.
Mat

Câu trả lời:


22

Dưới đây là một số mẹo mà bạn cần lưu ý:

Từ kinh nghiệm của tôi, các ngôn ngữ kịch bản tương tác (tôi sử dụng Python) có thể là một trợ giúp tuyệt vời. Bạn có thể viết một khuôn khổ đơn giản để xử lý các luồng nhị phân và một số thuật toán đơn giản. Sau đó, bạn có thể viết các tập lệnh sẽ lấy số nhị phân của bạn và kiểm tra nhiều thứ khác nhau. Ví dụ:

Thực hiện một số phân tích thống kê trên các phần khác nhau. Ví dụ, dữ liệu ngẫu nhiên sẽ cho bạn biết rằng phần này có thể đã được nén / mã hóa. Zeros có thể có nghĩa là đệm giữa các bộ phận. Các số không nằm rải rác có thể có nghĩa là giá trị số nguyên hoặc chuỗi Unicode, v.v. Cố gắng phát hiện ra các hiệu số khác nhau. Cố gắng chuyển đổi các phần của nhị phân thành số nguyên 2 hoặc 4 byte hoặc thành số thực, in chúng ra và xem chúng có tạo thành không. Viết một số hàm sẽ tìm kiếm các phần lặp lại hoặc rất giống nhau trong dữ liệu, bằng cách này bạn có thể dễ dàng phát hiện các tiêu đề.

Cố gắng tìm càng nhiều chuỗi càng tốt, thử các mã hóa khác nhau (chuỗi c, chuỗi pascal, utf8 / 16, v.v.). Có một số công cụ tốt cho việc đó (Tôi nghĩ rằng Hex Workshop có một công cụ như vậy). Chuỗi có thể cho bạn biết rất nhiều điều.

Chúc may mắn!


Hachoir từ câu trả lời dưới đây chính xác là loại khuôn khổ này. Nó đi kèm với tập hợp các trường được xác định trước: các loại chuỗi, ngày tháng, bit, float, padding, v.v. Có thể sử dụng trình phân tích cú pháp tích hợp làm ví dụ cùng với tài liệu.
roolebo 14/09/19

15

Đối với Mac OS X, có một công cụ tuyệt vời mới thậm chí còn tốt hơn iBored của tôi: Synaliyze It! ( http://www.synalysis.net/ )

So với iBored , nó phù hợp hơn với các tệp không bị chặn, đồng thời cho phép toàn quyền kiểm soát các cấu trúc, bao gồm khả năng tập lệnh (với Lua). Và nó cũng hình dung cấu trúc tốt hơn.


10

Tupni ; Theo kiến ​​thức của tôi không có sẵn trực tiếp từ Microsoft Research, nhưng có một bài báo về công cụ này có thể được quan tâm đối với ai đó muốn viết một chương trình tương tự (có lẽ là mã nguồn mở):

Tupni: Kỹ thuật đảo ngược tự động của các định dạng đầu vào ( @ thư viện kỹ thuật số ACM )

trừu tượng

Công việc gần đây đã thiết lập tầm quan trọng của kỹ thuật đảo ngược tự động các đặc tả giao thức hoặc định dạng tệp. Tuy nhiên, các định dạng được thiết kế ngược bởi các công cụ trước đây đã bỏ sót thông tin quan trọng cần thiết cho các ứng dụng bảo mật. Trong bài báo này, chúng tôi trình bày Tupni, một công cụ có thể đảo ngược thiết kế định dạng đầu vào với một bộ thông tin phong phú, bao gồm trình tự bản ghi, loại bản ghi và các ràng buộc đầu vào. Tupni có thể tổng quát hóa đặc điểm định dạng qua nhiều đầu vào. Chúng tôi đã triển khai một nguyên mẫu của Tupni và đánh giá nó trên 10 định dạng khác nhau: năm định dạng tệp (WMF, BMP, JPG, PNG và TIF) và năm giao thức mạng (DNS, RPC, TFTP, HTTP và FTP). Tupni đã xác định tất cả các trình tự bản ghi trong các đầu vào thử nghiệm. Chúng tôi cũng cho thấy rằng, bằng cách tổng hợp qua nhiều tệp WMF, Tupni có thể lấy ra một đặc tả định dạng hoàn chỉnh hơn cho WMF. Hơn nữa, chúng tôi chứng minh tiện ích của Tupni bằng cách sử dụng thông tin phong phú mà nó cung cấp để tạo chữ ký lỗ hổng zeroday, điều không thể thực hiện được với các công cụ thiết kế ngược trước đây.



8

Công cụ của riêng tôi "iBored", mà tôi mới phát hành gần đây, có thể thực hiện một phần công việc này. Tôi đã viết công cụ để trực quan hóa và gỡ lỗi các định dạng hệ thống tệp (UDF, HFS, ISO9660, FAT, v.v.), đồng thời triển khai hỗ trợ tìm kiếm, sao chép và thậm chí cả cấu trúc và mẫu sau này. Hỗ trợ cấu trúc khá dễ hiểu và các mẫu là một cách để xác định cấu trúc một cách linh hoạt.

Toàn bộ điều này có thể lập trình bằng phương ngữ Visual BASIC, cho phép bạn kiểm tra các giá trị, đọc các khối cụ thể và tất cả.

Công cụ này miễn phí, hoạt động trên tất cả các nền tảng (Win, Mac, Linux), nhưng vì nó là công cụ cá nhân mà tôi vừa phát hành ra công chúng để chia sẻ nó, nó không có nhiều tài liệu.

Tuy nhiên, nếu bạn muốn dùng thử và muốn đưa ra phản hồi, tôi có thể bổ sung thêm nhiều tính năng hữu ích hơn.

Tôi thậm chí còn muốn mã nguồn mở của nó, nhưng vì nó được viết bằng REALbasic , tôi nghi ngờ nhiều người sẽ tham gia một dự án như vậy.

Liên kết: Trang chủ iBored


2
Nghe có vẻ như là một dự án tuyệt vời để tham gia ... Khi tôi đang làm việc như một nhà nghiên cứu chống vi-rút, điều này sẽ thực sự hữu ích. Thay vào đó, tôi đã làm tất cả bằng tay ... Tôi sẽ tải xuống và kiểm tra. Cảm ơn bạn về điều này, tôi có một sử dụng cho nó. :)
LarryF

Trông giống như sự khởi đầu của một công cụ phân tích tập tin nhị phân tốt đẹp, nhưng vẫn là rất đĩa làm trung tâm (512-byte khối là một chút của một cho-đi ...)
Steve Bennett

@SteveBennett: nó thích nhóm tệp thành các khối có kích thước bằng nhau, điều đó đúng, nhưng người ta có thể dễ dàng thay đổi kích thước khối thông qua menu. Và iBored cũng có thể xử lý toàn bộ tệp dưới dạng một khối. Điểm bất lợi duy nhất là nó sẽ gặp sự cố với các tệp lớn vì nó cố gắng hiển thị tất cả dữ liệu trong một chế độ xem khối có thể cuộn, sau đó, như một khối, điều này có thể dẫn đến các vấn đề về hiệu suất.
Thomas Tempelmann

6

Tôi vẫn thỉnh thoảng sử dụng một trình soạn thảo hex cũ có tên là AX, Advanced Hex Editor. Nó dường như đã biến mất phần lớn trên Internet, mặc dù Google vẫn có thể tìm thấy nó cho bạn. Phiên bản cuối cùng mà tôi biết là phiên bản 3.4, nhưng tôi thực sự chỉ sử dụng phiên bản 2.1 miễn phí cho mục đích cá nhân.

Tính năng thú vị nhất của nó và là tính năng mà tôi đã sử dụng nhiều nhất để giải mã các định dạng trò chơi và đồ họa khác nhau, là chế độ xem đồ họa của nó. Điều đó về cơ bản chỉ hiển thị cho bạn tệp với mỗi byte được chuyển thành một pixel được mã hóa màu. Và nghe đơn giản như vậy, đôi khi nó đã khiến những nỗ lực thiết kế ngược của tôi trở nên dễ dàng hơn rất nhiều.

Tuy nhiên, tôi cho rằng làm điều đó bằng mắt hoàn toàn trái ngược với thực hiện phân tích tự động và chế độ đồ họa sẽ không được sử dụng nhiều để tìm và theo dõi các hiệu số ...

Phiên bản mới hơn có một số tính năng có vẻ như chúng có thể phù hợp với nhu cầu của bạn (tập lệnh, công cụ tìm tính thường xuyên, trình tạo ngữ pháp), nhưng tôi không biết chúng tốt như thế nào.


URL đã chết, có thể nó đang ở đây bây giờ: advanced-hex-editor-axe.en.softonic.com
Steve Bennett

@Steve Cảm ơn vì sự quan tâm. Đó là một trong những. Tuy nhiên, bất chấp tất cả những lời hứa không có vi-rút ở đó, máy quét vi-rút của tôi đã đưa ra cảnh báo vi-rút đang cố gắng tải xuống, vì vậy tôi không bận tâm. Tôi đã diễn đạt lại câu trả lời của mình.
Mercator

5

Hachoir là một thư viện Python để phân tích cú pháp bất kỳ định dạng nhị phân nào thành các trường, sau đó duyệt qua các trường. Nó có rất nhiều trình phân tích cú pháp cho các định dạng phổ biến, nhưng bạn cũng có thể viết trình phân tích cú pháp riêng cho các tệp của mình (ví dụ: khi làm việc với mã đọc hoặc ghi tệp nhị phân, tôi thường viết trình phân tích cú pháp Hachoir trước để có công cụ gỡ lỗi). Tuy nhiên, có vẻ như dự án đã không còn hoạt động nữa.


(Liên kết bị hỏng)
jacobq

1

Dự án icebuddha.com của tôi hỗ trợ điều này bằng cách sử dụng python để mô tả định dạng trong trình duyệt.


0

Một câu trả lời của tôi cho một câu hỏi tương tự:

Một công cụ là WinOLS , được thiết kế để giải thích và chỉnh sửa hình ảnh nhị phân máy tính quản lý động cơ xe (chủ yếu là dữ liệu số trong bảng tra cứu của chúng). Nó có hỗ trợ các định dạng endian khác nhau (mặc dù không phải PDP, tôi nghĩ) và xem dữ liệu ở nhiều độ rộng và hiệu số khác nhau, xác định các khu vực mảng (bản đồ) và hiển thị chúng ở dạng 2D hoặc 3D với tất cả các loại tùy chọn tỷ lệ và bù đắp. Nó cũng có công cụ tìm bản đồ tự động theo thống kê / heuristic, có thể phù hợp với bạn.

Đó là một công cụ thương mại, nhưng bản demo miễn phí sẽ cho phép bạn làm mọi thứ nhưng lưu các thay đổi vào tệp nhị phân và sử dụng các tính năng quản lý công cụ mà bạn không cần.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.