| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 11268 人关注过本帖
标题:一件令人匪夷所思的事。
只看楼主 加入收藏
tigerdown
Rank: 1
等 级:新手上路
帖 子:72
专家分:8
注 册:2017-8-21
结帖率:64.29%
收藏
已结贴  问题点数:20 回复次数:12 
一件令人匪夷所思的事。
这是有关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
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10606
专家分:43182
注 册:2014-5-20
收藏
得分:10 
ImageBase是在扩展头,有32位和64位之分,看看文件是哪一位
2022-11-07 17:36
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10606
专家分:43182
注 册:2014-5-20
收藏
得分:0 
匪夷所思的事还有,在win10查看,查看工具是32位应用程序,打开windows\system32\的文件看是32位,但复制到其他文件夹看是64位???
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册
2022-11-07 18:24
tigerdown
Rank: 1
等 级:新手上路
帖 子:72
专家分:8
注 册: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
等 级:新手上路
帖 子:72
专家分:8
注 册:2017-8-21
收藏
得分:0 
在 x32dbg和 x64dbg里查看了 user32. dll的基址,这些基址是怎样得到的?它们是真实的地址吗?
图片附件: 游客没有浏览图片的权限,请 登录注册
2022-11-07 20:17
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10606
专家分:43182
注 册:2014-5-20
收藏
得分:0 
回复 4楼 tigerdown
还要看Od和PEinfo是否支持64位PE文件
如果用32位有头结构去取64位的头数据就不对
2022-11-07 20:18
TsXor
Rank: 2
等 级:论坛游民
威 望:1
帖 子:5
专家分:10
注 册:2022-11-7
收藏
得分:10 
以下是引用吹水佬在2022-11-7 18:24:17的发言:

匪夷所思的事还有,在win10查看,查看工具是32位应用程序,打开windows\system32\的文件看是32位,但复制到其他文件夹看是64位???


我记着在64位Windows中运行32位程序,system32会被重定向到sysWoW64
在64位Windows中,system32装64位库,sysWoW64装32位库
2022-11-07 20:42
tigerdown
Rank: 1
等 级:新手上路
帖 子:72
专家分:8
注 册:2017-8-21
收藏
得分:0 
那么你是不是认为只有在上面的 x64dbg里的基址是正确的,如果是这样的,所有的程序只要用到 user32. Dll就会跳转到这个基址。这必须要验证一下。
2022-11-07 20:51
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10606
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用TsXor在2022-11-7 20:42:13的发言:



我记着在64位Windows中运行32位程序,system32会被重定向到sysWoW64
在64位Windows中,system32装64位库,sysWoW64装32位库

可能是这个问题,用个64位程序去看看查证一下。
2022-11-07 22:50
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10606
专家分:43182
注 册:2014-5-20
收藏
得分:0 
回复 8楼 tigerdown
PEinfo是随书源码的吗,是的话应该不支持64位PE,显示的结果就不对。
那书好象也没提到64位PE的各种数据结构。
2022-11-07 23:08
快速回复:一件令人匪夷所思的事。
数据加载中...
 
   



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

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