标题:一件令人匪夷所思的事。
取消只看楼主
tigerdown
Rank: 1
等 级:新手上路
帖 子:63
专家分:3
注 册:2017-8-21
结帖率:69.23%
已结贴  问题点数:20 回复次数:4 
一件令人匪夷所思的事。
这是有关windows里的user32. dll和kernel.dll基址的问题。先以 user32. dll为例( kernel..dll也发生同样的情况)在 WinXP里一切正常,可以看出在 od里和在 PEinfo程序里所显示的基址是相同的。

但在 Win8里od和 PEinfo所显示的基址不一样,这是为什么?

 PEinfo程序所显示的基址是根据 API定义得出的,od也应该用了同样 API定义,但为什么会得出不同的基址?真是令人匪夷所思!
Windows 8.1
File nameC:\WINDOWS\System32\user32.dll
API: IMAGE_NT_HEADERS.OptionalHeader.ImageBase
IMAGE_NT_HEADERS   - ImageBase      0x6BA80000

IMAGE_NT_HEADERS32 - ImageBase      0x6BA80000
搜索更多相关主题的帖子: Windows 显示 API dll 定义 
2022-11-07 16:44
tigerdown
Rank: 1
等 级:新手上路
帖 子:63
专家分:3
注 册:2017-8-21
得分:0 
Od和PEinfo都是32位程序,文件user32. Dll显然是32位,这要看 API如可定义。关键是 od的基址是从那来的?

Windows 8.1

File nameC:\WINDOWS\System32\user32.dll

API: IMAGE_NT_HEADERS.OptionalHeader.ImageBase


IMAGE_NT_HEADERS   - ImageBase      0x6BA80000

IMAGE_NT_HEADERS32 - ImageBase      0x6BA80000

IMAGE_NT_HEADERS64 - ImageBase      0x0008A000




[此贴子已经被作者于2022-11-7 19:47编辑过]

2022-11-07 19:37
tigerdown
Rank: 1
等 级:新手上路
帖 子:63
专家分:3
注 册:2017-8-21
得分:0 
在 x32dbg和 x64dbg里查看了 user32. dll的基址,这些基址是怎样得到的?它们是真实的地址吗?
2022-11-07 20:17
tigerdown
Rank: 1
等 级:新手上路
帖 子:63
专家分:3
注 册:2017-8-21
得分:0 
那么你是不是认为只有在上面的 x64dbg里的基址是正确的,如果是这样的,所有的程序只要用到 user32. Dll就会跳转到这个基址。这必须要验证一下。
2022-11-07 20:51
tigerdown
Rank: 1
等 级:新手上路
帖 子:63
专家分:3
注 册:2017-8-21
得分:0 
是32和64位的问题,od和x32 dbg都是32位的程序,所以我们是不是可以说,在64位环境下运行它们所得到的基址都是错误的,另外 PEinfo跟它们一样是32位程序,为什么得到的基址却不一样,最后一个非常现实的问题,在 win8. 1或win10中打开 notepad用的是那个 user32. dll 基址?!
2022-11-08 15:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510577-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051595 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved