检测dll是32/64位?(直接读dll文件包含的某几个字节进行判断)

Posted findumars

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测dll是32/64位?(直接读dll文件包含的某几个字节进行判断)相关的知识,希望对你有一定的参考价值。

检查dll是32位还是64位?

 

[cpp] view plain copy
 
  1. #include "stdafx.h"  
  2. #include <Windows.h>  
  3.   
  4. int _tmain(int argc, _TCHAR* argv[])  
  5. {  
  6.     BYTE buf[4];  
  7.     FILE *fp = fopen("D:\\plugin_d.dll", "rb");  
  8.     fseek(fp, 0x40-4, 0);  
  9.     fread(buf, sizeof(char), 4, fp);  
  10.   
  11.     int a = int(buf[0]);  
  12.     int b = int(buf[1])*256;  
  13.     int c = int(buf[2])*256*256;  
  14.     int d = int(buf[3])*256*256*256;  
  15.     int sum = a+b+c+d;  
  16.     fseek(fp, sum+4, 0);  
  17.   
  18.     BYTE bufMachine[2];  
  19.     fread(bufMachine, sizeof(char), 2, fp);  
  20.   
  21.     int machine = (int)bufMachine[0] + (int)(bufMachine[1])*256;  
  22.   
  23.     if(machine == 0x14C)//332  
  24.     {  
  25.         printf("32 bit\r\n");  
  26.     }  
  27.     else if(machine == 0x8664)//34404  
  28.     {  
  29.         printf("64 bit\r\n");  
  30.     }  
  31.     else  
  32.     {  
  33.         printf("Unknow bit\r\n");  
  34.     }  
  35.   
  36.     //system("pause");  
  37.     getchar();  
  38.     return 0;  
  39. }  

 

https://blog.csdn.net/hellokandy/article/details/73863510

以上是关于检测dll是32/64位?(直接读dll文件包含的某几个字节进行判断)的主要内容,如果未能解决你的问题,请参考以下文章

asp.net提示“未能加载文件或程序集“XXXXXXXX.dll”或它的某一个依赖项。找不到指定的模块。”

校园网小蝴蝶运行显示:缺少packet.dll文件

dll文件32位64位检测工具以及Windows文件夹SysWow64的坑(很详细,还有自动动手编程探测dll)

dll文件32位64位检测工具以及Windows文件夹SysWow64的坑转发

启动Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误

api-ms-win-crt-conio-l1-1-0.dll丢失这个怎么办