崩坏星穹铁道 StarRail 内存dump

在之前 il2cpp的导出函数没加密之前是可以直接通过 GetProcAddress来获取il2cpp函数的。

原本的长这样

都加密之后 然后存了进去他自己数组里面

所以我后面对比unity源码 把这些il2cpp函数dump要用到的函数地址手动给定位更新了。

这里提供一个dll注入即可自动dump。

GitHub - BinaryDaDou/StarRail-dump: 崩坏星穹铁道 StarRail 内存dump

免责声明:本帖子提供的内容仅供教育和研究目的,不鼓励或支持侵犯版权或任何非法活动。所有相关游戏和资料的版权归原作者及其公司所有。如有版权问题,请联系本人进行内容删除。

<think>好的,用户之前问过关于winedump list和如何放置dll文件的问题,现在他们又执行了winedump spec hkrpg.dll,并给出了输出结果,然后问这个情况。我需要分析他们的需求。 首先,用户可能在使用Wine来运行某个Windows程序,遇到了需要处理DLL的情况。之前的问题是关于如何让winedump识别自定义DLL,现在他们生成了spec文件,但输出显示只有1个导出函数DllMain,并且被忽略了。这可能让用户感到困惑,为什么没有其他函数被列出,或者他们的DLL是否有问题。 用户可能的目标是分析hkrpg.dll的导出函数,以便在Wine中使用或调试。然而,输出显示只有一个DllMain,这可能意味着这个DLL实际没有导出其他函数,或者可能被混淆或加壳了。考虑到hkrpg.dll可能与某个游戏相关(比如“崩坏铁道”),这类DLL可能被保护,防止逆向工程,所以winedump无法正确解析导出函数。 接下来,我需要解释winedump spec的输出结果。DllMain是DLL的入口点,通常会被自动调用,但winedump在生成spec时会忽略它,因为它不是需要手动调用的导出函数。如果只有DllMain被列出,说明其他函数可能未被正确导出,或者DLL的结构有问题。 可能的原因包括:DLL是延迟加载的,导出表被隐藏,或者被加壳保护。用户可能需要进一步检查DLL是否加壳,使用工具如Detect It Easy确认。如果加壳了,需要脱壳后再分析。 另外,用户可能需要了解如何强制处理这样的DLL,比如使用winedump的开关参数,或者使用其他工具如objdump或Dependency Walker来查看导出函数。如果DLL是受保护的,可能需要逆向工程的知识,但要注意法律风险。 最后,需要提醒用户注意法律问题,逆向工程可能违反许可协议,特别是商业软件。确保用户了解他们在合法范围内操作。</think>### 分步解答 执行 `winedump spec hkrpg.dll` 的输出表明该 DLL 的导出函数结构非常简单(甚至可能是经过混淆或加密的)。以下是关键分析: --- #### **步骤 1:理解输出内容** - **`Contents of hkrpg.dll: 36568576 bytes`** 表示该 DLL 文件大小为约 36.5 MB,体积较大(可能包含大量代码或资源)。 - **`1 named symbols in DLL`** 仅检测到一个导出符号(即 `DllMain`)。 - **`[Ignoring]`** `DllMain` 是 DLL 的默认入口函数,`winedump` 会跳过对此函数的分析,因为它通常由系统自动调用。 --- #### **步骤 2:可能的原因分析** 1. **DLL 未导出其他函数** 该 DLL 可能仅包含内部函数,或通过**序号(Ordinal)导出函数**而非名称(例如某些游戏或加密 DLL)。 ```bash # 尝试查看序号导出(使用 `winedump` 的其他参数) winedump dump -C hkrpg.dll | grep 'Ordinal' ``` 2. **导出表被隐藏或混淆** 若该 DLL 属于商业软件(例如游戏崩坏铁道”),可能通过以下手段保护: - **加壳(Packed)**:使用 UPX、VMProtect 等工具压缩或加密代码段。 - **动态加载**:通过 `LoadLibrary` + `GetProcAddress` 手动加载函数,绕过导出表。 3. **架构不匹配** 确认 DLL 与 Wine 前缀的架构一致: ```bash file hkrpg.dll # 检查 DLL 是 32 位(PE32)还是 64 位(PE32+) winecfg # 查看 Wine 前缀的 Windows 版本和架构 ``` --- #### **步骤 3:进一步验证方法** 1. **检查是否加壳** 使用工具检测 DLL 是否被压缩或加密: ```bash sudo apt install detect-it-easy # 安装检测工具 diec hkrpg.dll # 查看保护类型 ``` 2. **尝试其他分析工具** 使用 `objdump` 或 `Dependency Walker`(需在 Windows 下运行)查看导出表: ```bash objdump -x hkrpg.dll | grep 'Export' # 查看导出段信息 ``` 3. **强制解析导出函数(高风险)** 如果确信存在隐藏函数,可尝试用 `winedump` 的 `-f` 参数强制解析: ```bash winedump spec -f hkrpg.dll # 强制生成 spec 文件(可能崩溃) ``` --- ### **关键注意事项** 1. **法律风险** 若 `hkrpg.dll` 来自商业软件(如游戏),逆向工程可能违反用户协议。**仅限合法用途**。 2. **Wine 兼容性** 即使导出函数被隐藏,Wine 仍可能通过**内置实现**或**兼容层**运行该 DLL。可通过以下命令测试: ```bash wine your_app.exe # 观察是否依赖 hkrpg.dll WINEDEBUG=+loaddll wine your_app.exe 2>&1 | grep hkrpg.dll # 监控 DLL 加载 ``` 3. **替代方案** 若需调用该 DLL 的功能,可尝试通过 **Winelib** 或 **Frida** 动态注入代码(需编程能力)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值