鱼C论坛

 找回密码
 立即注册
查看: 476|回复: 2

如何找到dll 文件位置

[复制链接]
发表于 2024-4-17 11:07:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


问题描述:  OD中查看 内存布局, 如何确定内存布局中, 系统模块   kernel32.dll  在本机的具体文件目录, ( 直接本地搜索文件的话有好多目录都有kernel32.DLL)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-17 11:07:13 | 显示全部楼层
要确定系统模块 kernel32.dll 在本机的具体文件目录,可以使用Python中的ctypes库来实现。ctypes是一个强大的外部函数库调用模块,它允许Python程序直接调用DLL文件中的函数。

下面是一段使用ctypes库查找kernel32.dll文件位置的示例代码:
import ctypes

# 加载kernel32.dll
kernel32 = ctypes.WinDLL('kernel32.dll')

# 调用GetModuleHandleA函数获取kernel32.dll的句柄
kernel32_handle = kernel32.GetModuleHandleA('kernel32.dll')

# 创建存储文件路径的缓冲区
buffer = ctypes.create_string_buffer(256)

# 调用GetModuleFileNameA函数获取kernel32.dll的文件路径
kernel32.GetModuleFileNameA(kernel32_handle, buffer, 256)

# 输出文件路径
print(buffer.value.decode('gbk'))

通过上述代码,可以找到kernel32.dll在本机的具体文件路径,并将其打印出来。

需要注意的是,这里使用的是Windows操作系统下的相关函数和库,因此上述代码只适用于Windows环境。如果你使用的是其他操作系统,就需要针对不同的系统做相应的处理。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-17 11:18:58 | 显示全部楼层
本帖最后由 jackz007 于 2024-4-17 11:49 编辑

          和可执行文件一样,先找当前目录(exe 文件所在目录),再按照 PATH 环境变量顺序进行查找,找到为止。
import os

print()
print(' ' * 8 + '请在 exe 文件所在目录运行\n')
fn = input(' ' * 8 + '输入 dll 文件名:')
if fn :
    c = 0
    if len(fn) > 4 and fn[-4 :] . lower() != '.dll' :
        fn += '.dll'
    kx = fn
    if os . path . exists(kx) and os . path . isfile(kx):
        c += 1
    else :
        for xs in os . getenv('PATH') . split(';') :
            kx = xs + fn if xs[-1] == '\\' else xs + '\\' + fn
            if os . path . exists(kx) and os . path . isfile(kx) :
                c += 1
                break
    print(' ' * 8 + kx) if c else print(' ' * 8 + '[抱歉]:没有找到。')
        在 exe 文件所在目录内运行此代码就可以知道究竟用的是哪一个 dll 文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 22:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表