2010-12-22 48 views
5

Tôi đang cố viết một tiện ích nhỏ để tạo tệp nhị phân bắt chước tệp được tạo bởi ứng dụng đã đóng khác. Tôi đã sử dụng hex biên tập viên để giải mã các định dạng của tôi đang bị mắc kẹt cố gắng để hiểu những gì các định dạng/mã hóa là để tôi có thể sản xuất nó bằng cách sử dụng C + + hoặc C#.Giúp tôi hiểu định dạng tệp nhị phân này

Tệp bắt đầu bằng bốn byte đầu tiên: 01 00 theo sau là FF FE. Sự hiểu biết của tôi là tập tin bắt đầu với SOH theo sau là dấu thứ tự byte cho ít người cuối cùng. Sau bốn byte này, chương trình xuất hiện để viết BSTR cho mỗi trường chuỗi từ GUI của ứng dụng.

Sử dụng C#, tôi đã tạo một tệp unicode bắt đầu bằng FF FE, nhưng tôi không chắc chắn cách chèn ký tự SOH trước.

Tôi sẽ mãi mãi biết ơn nếu ai đó có thể cung cấp thông tin chi tiết về định dạng tệp hoặc mã hóa và lý do tệp bắt đầu bằng ký tự SOH.

Cảm ơn bạn trước.

+0

Bạn có thể cho chúng tôi biết về phần mềm đóng này không? Ít nhất bạn có thể nói ngành công nghiệp hoặc lĩnh vực nỗ lực nào được liên kết với nó không? –

+0

Tệp được tạo ra bởi một giao diện đồ họa tự động sao lưu cơ sở dữ liệu hướng đối tượng và cơ sở dữ liệu SQL trong khi tạo tệp được sử dụng để khôi phục bản sao lưu. Tôi muốn tạo một tệp thực thi có thể tạo cùng một tệp bằng cách sử dụng các đối số để tôi có thể tự động sao lưu và tạo một tệp có thể được GUI sử dụng để khôi phục bản sao lưu theo kịch bản của tôi. Tôi không cố gắng bỏ qua bất kỳ giấy phép hoặc sản xuất một cái gì đó để bán. Nó chỉ dành cho một ứng dụng giúp tôi không thể chạy các bản sao lưu theo cách thủ công. Tệp chỉ có kích thước 1k. – Rob

Trả lời

3

Nếu bạn là chỉ gặp rắc rối khi viết ra bốn byte đầu tiên, điều này sẽ làm điều đó cho bạn.

using (var stream = new FileStream("myfile.bin", FileMode.Create)) 
{ 
    using (var binaryWriter = new BinaryWriter(stream)) 
    { 
     binaryWriter.Write((byte)1); 
     binaryWriter.Write((byte)0); 
     binaryWriter.Write((byte)0xFF); 
     binaryWriter.Write((byte)0xFE); 
     binaryWriter.Write(Encoding.Unicode.GetBytes("string")); 
    } 
} 

chí này ra file sau

01 00 FF FE 73 00 74 00 72 00 69 00 6e 00 67 00 ....s.t.r.i.n.g. 

Edit: đề nghị tăng Mark H cho viết ra một chuỗi.

+0

Wow! Cảm ơn bạn! Tôi ước gì tôi đã nhờ giúp đỡ sớm hơn. Bạn có thể biết làm thế nào một loại dữ liệu BSTR có thể được viết bằng cách sử dụng cùng một nhà văn? – Rob

+1

'binaryWriter.Write (Encoding.Unicode.GetBytes (" string "));' –

+0

Cảm ơn tất cả vì sự giúp đỡ. Với sự hỗ trợ của bạn, tôi đã có thể tạo ứng dụng chỉ trong vài giờ. Tôi chân thành cảm kích! – Rob

3

Kỹ thuật đảo ngược định dạng tệp nhị phân có thể là một nhiệm vụ khó khăn. Trên bề mặt, tôi không nhận ra điều này là một định dạng tệp rõ ràng, nổi tiếng ... nhưng có hàng nghìn người ở đó, vì vậy ai biết được.

Legal issues sang một bên, tôi sẽ đề nghị bạn nhìn vào một số các nguồn sau đó nói về cách tiếp cận đến một nỗ lực như vậy:

Các vấn đề liên quan