问题描述
我正在尝试读取 .exe PE 文件并将其映射到标头结构。
这是我目前所拥有的:
static constexpr uint16_t DOS_HDR_MAGIC = 0x5A4D;
struct dos_header_t {
uint16_t e_magic;
uint16_t e_cblp;
uint16_t e_cp;
uint16_t e_crlc;
uint16_t e_cparhdr;
uint16_t e_minalloc;
uint16_t e_maxalloc;
uint16_t e_ss;
uint16_t e_sp;
uint16_t e_csum;
uint16_t e_ip;
uint16_t e_cs;
uint16_t e_lfarlc;
uint16_t e_ovno;
uint16_t e_res[ 4 ];
uint16_t e_oemid;
uint16_t e_oeminfo;
uint16_t e_res2[ 10 ];
uint32_t e_lfanew;
};
int main(void) {
std::ifstream input("./stuff.exe",std::ios::in | std::ios::binary );
input.seekg(0,std::ios::end);
int file_size = input.tellg();
char file[file_size];
input.read(file,file_size);
struct dos_header_t *dos_header = (struct dos_header_t *)file;
assert(dos_header->e_magic == DOS_HDR_MAGIC);
}
但是断言失败并且打印 e_magic
打印 0
。
我施错了吗?如何让断言通过?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)