首页
社区
课程
招聘
为什么在64位系统中读到了32位内核文件?
发表于: 2024-1-31 23:38 2610

为什么在64位系统中读到了32位内核文件?

2024-1-31 23:38
2610
void test()
{
    char szPath[] = "C:\\Windows\\System32\\ntoskrnl.exe";
    
    SYMSRV_INDEX_INFO info = { 0 };
    info.sizeofstruct = sizeof(SYMSRV_INDEX_INFO);
    if (!SymSrvGetFileIndexInfo(szPath, &info, 0))
    {
        printf("SymSrvGetFileIndexInfo error \r\n");
        return;
    }
    
    printf("data1: %08X \r\n", info.guid.Data1);
}

这里SymSrvGetFileIndexInfo读取PE文件调试目录中保存的GUID。

编译成32位程序。首先在32位Win7下运行,得到内核GUID.data1值为0x487DC690;然后在64位win7下运行,得到同样结果。

然后将内核拷贝到程序相同目录下,把szPath改成"ntoskrnl.exe",得到的结果是0xECE191A2,似乎这才是64位内核的GUID.data1。

所以似乎通过C:\Windows\System32\ntoskrnl.exe这个路径,在32位程序和64位程序打开这个文件,读到的分别是32位内核和64位内核,这是为什么呢?


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 4401
活跃值: (6481)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
32位进程在64位系统下文件系统和注册表都有重定向  1f1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6D9k6h3q4J5L8W2)9J5k6h3#2A6j5%4u0G2M7$3!0X3N6q4)9J5k6h3y4G2L8g2)9J5c8Y4A6Z5i4K6u0V1j5$3&6Q4x3V1k6%4K9h3&6V1L8%4N6K6i4K6u0r3N6$3W2F1x3K6u0Q4x3V1k6%4K9h3&6H3M7X3!0Y4y4U0c8Q4x3V1k6X3K9h3I4W2i4K6u0V1M7%4W2K6N6r3g2E0i4K6u0V1M7X3g2V1K9i4u0W2j5%4c8G2M7R3`.`.
2024-2-1 10:30
1
游客
登录 | 注册 方可回帖
返回