& Quot; Декомпилировать & Quot; файл в сырой двоичный код

Я хочу декомпилировать файлы в (/ читать их как) сырой двоичный код. Я не нашел ничего об этом. Это вообще возможно? Это должно быть для того, чтобы компьютер запускал его, но некоторые ОС могут не разрешать его читать.

РЕДАКТИРОВАТЬ: позволяет очистить ответ. Я хочу начать с (например) файла .txt и закончить массивом из 0 и 1

-1

Решение

Файлы, хранящиеся в файловых системах операционных систем, таких как Windows и Linux, не нужно «декомпилировать» так, как вы думаете. Они уже хранятся в виде двоичных данных.

Все, что вам остается сделать — это просто прочитать файл, но вам нужно использовать правильный инструмент.

Если вы используете что-то вроде потокового ввода-вывода для чтения файла с помощью потоковых манипуляторов, вы должны учитывать, что потоковые манипуляторы предназначены для отформатированные I / O. Но вы не хотите отформатированный ввод / вывод, вам нужен неформатированный ввод / вывод.

Рассмотрим этот пример. Если у вас есть файл c:\temp\test.txt который содержит:

Привет, мир.

…и запустите этот код:

#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
ifstream f("c:\\temp\\test.txt", ios_base::binary|ios::in);
for( char c = 0; f.get(c); )
{
cout << c << "\t" << "0x" << hex << static_cast<int>(c) << endl;
}
}

Вы увидите вывод:

H       0x48
e       0x65
l       0x6c
l       0x6c
o       0x6f
,       0x2c
0x20
w       0x77
o       0x6f
r       0x72
l       0x6c
d       0x64
.       0x2e
0xd

0xa

Шестнадцатеричные числа и отображаемые символы представляют собой данные сохранения, просто отформатированные по-разному. Там нет «декомпиляции» шаг или что-то в этом роде. Все, что осталось сделать на этом этапе, это сохранить эти данные где-то вроде vector<char>и, возможно, переформатировать вывод, чтобы он отображал эти значения в двоичном формате, а не в шестнадцатеричном или ASCII. Я оставлю это в качестве упражнения для читателя.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]