C++ &引用;“反编译”;将文件转换为原始二进制代码
我想将文件反编译成原始二进制代码。我还没有找到任何关于这个的东西。有可能吗?它必须是为了让计算机运行它,但某些操作系统可能不允许读取它C++ &引用;“反编译”;将文件转换为原始二进制代码,c++,binary,decompiler,C++,Binary,Decompiler,我想将文件反编译成原始二进制代码。我还没有找到任何关于这个的东西。有可能吗?它必须是为了让计算机运行它,但某些操作系统可能不允许读取它 编辑:让我们清除答案。我想从(例如)一个.txt文件开始,然后以一个0和1的数组结束。存储在Windows和Linux等操作系统的文件系统上的文件不需要像您想象的那样进行“反编译”。它们已经存储为二进制数据 剩下要做的就是简单地读取文件,但需要使用正确的工具 如果使用流I/O之类的文件使用流操作器读取文件,则应该考虑流操作器是格式化的I/O,但不需要格式化的I/
编辑:让我们清除答案。我想从(例如)一个.txt文件开始,然后以一个0和1的数组结束。存储在Windows和Linux等操作系统的文件系统上的文件不需要像您想象的那样进行“反编译”。它们已经存储为二进制数据 剩下要做的就是简单地读取文件,但需要使用正确的工具
如果使用流I/O之类的文件使用流操作器读取文件,则应该考虑流操作器是格式化的I/O,但不需要格式化的I/O,您需要未格式化的I/O < /P> 考虑这个例子。如果您有一个文件
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;
}
}
显示的十六进制数和字符是保存数据,只是格式不同而已。没有“反编译”步骤或类似的步骤。此时剩下要做的就是将这些数据像向量一样存储在某个地方,然后重新格式化输出,使其以二进制而不是十六进制或ASCII显示这些值。我将把它作为练习留给读者。Erm。什么?所有文件都存储为原始二进制代码。没有“反编译”要做。你是说读汇编?试试
objdump-d
听起来你需要Nabob压缩工具!给我们看一个你想“反编译”的文本文件的例子。一个例子?“你好,世界”->(“反编译”)->01110100101010。。。
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