朱朱你堕落了 发表于 2023-6-3 07:30

求助关于劫持补丁的疑惑

本帖最后由 朱朱你堕落了 于 2023-6-3 07:53 编辑

编译一个试炼品名称为"timeGetTime.exe"的32位程序,它只能在WIN7或WIN10上运行,那我就在WIN7虚拟机里测试吧,直接放到OD里加载,查看加载模块,可以看出来,加载了C:\Windows\SysWOW64\winmm.dll

1
如果我要用AheadLib写一个winmm.dll劫持补丁,我应该使用System32下的winmm.dll来做模板,还是使用SysWOW64下的winmm.dll做模板?为什么?

https://s1.ax1x.com/2023/06/03/pCpJG1x.png

System32下的winmm.dll和SysWOW64下的winmm.dll有什么区别吗?因为我以前都是用的xp的winmm.dll做模板,就不存在System32和SysWOW64两个目录下的winmm.dll的选择问题,省事了,
结果到了win10,win7就出现两个winmm.dll了,不知道使用哪个来做模板,请说明具体原因,谢谢。

陨落星辰 发表于 2023-6-3 07:30

这涉及到windows 64位系统 运行32位程序的问题。你现在的问题涉及到目录重定向这一块,具体文档链接如下:
https://learn.microsoft.com/zh-cn/windows/win32/winprog64/file-system-redirector

下面回答你的问题:
1.如果我要用AheadLib写一个winmm.dll劫持补丁,我应该使用System32下的winmm.dll来做模板,还是使用SysWOW64下的winmm.dll做模板?为什么?
答:32位程序,使用SysWOW64 目录下的,64位程序,使用system32的。

2.System32下的winmm.dll和SysWOW64下的winmm.dll有什么区别吗?
答:有区别,64位系统下,system32目录下是64位的,SysWOW64目录是32位的

总之,劫持DLL必须与目标程序的架构相同,aheadlib里面有一个信息就是提示文件架构
Architecture: IMAGE_FILE_MACHINE_I386 这是32位
Architecture: IMAGE_FILE_MACHINE_AMD64 这是64位。

亿联网络 发表于 2023-6-3 07:37

我是这么理解的不对的希望大佬指出
SysWOW64 中 winmm.dll 是32位 可以劫持32位程序
System32目录中winmm.dll 是64位 可以劫持64位程序

忆魂丶天雷 发表于 2023-6-3 07:53

看你需要劫持的程序是32还是64吧 一般情况能劫持到并且能跑起来就行了{:301_1009:}

理想的海洋 发表于 2023-6-3 07:58

这个我试过 及时你用的是64位程序 劫持补丁还是system32下的winmm.dll 不知道原因

朱朱你堕落了 发表于 2023-6-3 08:28

忆魂丶天雷 发表于 2023-6-3 07:53
看你需要劫持的程序是32还是64吧 一般情况能劫持到并且能跑起来就行了

当然劫持32位的EXE

Bszk 发表于 2023-6-3 08:42

SysWOW64 是专门用于32位程序的。
windows 64位系统能兼容32位程序的主要原因就是在这,对于32位程序,系统会将其访问系统文件重定向导致这个专门的32位目录。具体可以百度“windows 文件重定向”,其实注册表也是有这个机制的。

回到你这个问题,如果你需要劫持的是32位程序,那就是以SysWOW64的dll为模板

wgz001 发表于 2023-6-3 09:01

沙发为正确答案

666888tzq 发表于 2023-6-3 09:12

主要看程序是x86还是x64,x86就用SysWOW64下的,x64就用system32下的。

Light紫星 发表于 2023-6-3 11:22

32位软件都是调用的syswow64目录下的
页: [1] 2
查看完整版本: 求助关于劫持补丁的疑惑