什么是从exe文件中读取的整数

时间:2015-03-04 08:49:58

标签: c++ operating-system

众所周知,Windows上的普通应用程序由PE头开始,前两个字符是" MZ"。 所以我有一个C ++程序来打开一个exe文件并阅读它。 正如我预测的那样,显示的字符是" MZ"但是读取的整数是不可理解的,每次都不同。 那么读取的整数是什么?

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream ifs;
    ifs.open("a.exe", ios::in);
    char c[2];
    ifs >> c[0] >> c[1];
    cout << c[0] << c[1] << endl;
    ifs.close();
    ifs.open("a.exe", ios::in);
    int i;
    ifs >> i;
    cout << i << endl;
    ifs.close();
    return 0;
}

1 个答案:

答案 0 :(得分:1)

尝试将文件解析为整数失败,因为文件以整数中不合法的字符开头。这会留下i中的任何垃圾,然后仍然存在。基本上,您只是打印一个从未设置过值的变量的值。

尝试更改:

int i;

为:

int i = 42;

看看会发生什么。