注册

CpuDbg x96

查看: 3428|回复: 0
收起左侧

[多款调试器] 获取UnityPlayer.dll模块路径错误的问题

[复制链接]
发表于 2022-3-4 14:58:46 | 显示全部楼层 |阅读模式
        一位网友发来的网络游戏 [红月M] 进程名 RedmoonM.exe 调试器加载时, 其中有一个模块名为 [UnityPlayer.dll]
        获取路径不正常, (导致后面一系列操作 获取MD5 CRC32 Shell等都失败.)
        比如模块路径是 c:\游戏\UnityPlayer.dll 通过 GetMappedFileName 函数获取的却是 c:\UnityPlayer.dll
        这样一来, 路径不对, 如果有 open 操作, 都会找不到文件.
        后面测试了 yzdbg 也是一样获取错误的路径. 修改并保存这个模块的时候 yzdbg 会提示文件不存在, 点完确定就直接崩溃了
        测试的 x64dbg 是正常的, 懒得逆了,下了份源码查看其是调用自己实现的 GetFileNameFromHandle 函数. 里面又调用 PathFromFileHandleW,
        PathFromFileHandleW 看起来是一个导出函数, 源码中没有搜到实现, 看来是静态库了.打开 PathFromFileHandleW 所在文件夹,发现
        DeviceNameResolver_x64.lib 和 DeviceNameResolver_x86.lib  我下的是 x64dbg_2022.02.24 版本的源码,
        在此版本源码中并没有搜到 DeviceNameResolver_xxx.lib 实现, (白下了)
        又搜了下电脑上正好之前下的低版本中有一个 DeviceNameResolver.dll 模块.
        拖入IDA中, 查看导出函数就能看到. PathFromFileHandleW 的实现里面最终调用了 GetFinalPathNameByHandle 函数.
        换成这个函数测试就正常了. GetFinalPathNameByHandle 似乎比 GetMappedFileName 要省事许多.
        看来 GetMappedFileName 方法不一定靠谱, 而且还麻烦...
        这里先纪录一下, 日后多测一下 GetFinalPathNameByHandle 函数, 没问题再替换.
        --------------------------------------------
        刚又测了一下, 发现win7 x64没有此问题, 只有win10才有这个函数,
        另外 GetFinalPathNameByHandle 函数 低版本系统好像没有.


[Asm] 纯文本查看 复制代码
       This parameter can also include one of the following values.

        Value        Meaning
        VOLUME_NAME_DOS
        0x0
        Return the path with the drive letter. This is the default.
        VOLUME_NAME_GUID
        0x1
        Return the path with a volume GUID path instead of the drive name.
        VOLUME_NAME_NONE
        0x4
        Return the path with no drive information.
        VOLUME_NAME_NT
        0x2
        Return the path with the volume device path.

        GetFinalPathNameByHandle(hModule, pszFilename, sizeof pszFilename, VOLUME_NAME_DOS);


回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注册

QQ|Archiver|手机版| CpuDbg x96

GMT, 2024-12-22 05:16 , Processed in 0.062500 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

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