加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – Win32 API,用于判断给定的二进制文件(EXE或DLL)是x86

发布时间:2020-12-13 20:34:12 所属栏目:Windows 来源:网络整理
导读:我试图找到一种编程方式来判断二进制文件是x86,x64还是ia64. 平台:Windows. 语言:c / c. 背景:在尝试加载第三方dll之前,我需要找出它的位数. 感谢任何指针. 对于EXE 使用GetBinaryType(…) Here is same question for manged exe. 对于DLL(和EXE) 使用Ima
我试图找到一种编程方式来判断二进制文件是x86,x64还是ia64.

平台:Windows.
语言:c / c.

背景:在尝试加载第三方dll之前,我需要找出它的位数.

感谢任何指针.

对于EXE

使用GetBinaryType(…)

Here is same question for manged exe.

对于DLL(和EXE)

使用ImageNtHeader(…)获取文件的PE数据,然后检查IMAGE_FILE_HEADER.Machine字段.

Here is some code我发现使用谷歌代码搜索

没有清理并且没有错误检查

// map the file to our address space
// first,create a file mapping object
hMap = CreateFileMapping( 
  hFile,NULL,// security attrs
  PAGE_READONLY,// protection flags
  0,// max size - high DWORD
  0,// max size - low DWORD      
  NULL );         // mapping name - not used

// next,map the file to our address space
void* mapAddr = MapViewOfFileEx( 
  hMap,// mapping object
  FILE_MAP_READ,// desired access
  0,// loc to map - hi DWORD
  0,// loc to map - lo DWORD
  0,// #bytes to map - 0=all
  NULL );         // suggested map addr

peHdr = ImageNtHeader( mapAddr );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读