sfmf520 发表于 2023-12-2 17:11:13

内存模块的问题

JU文件 = 取特定目录 (特定目录类型.系统桌面) + "124.dll"
JU模块句柄 = 内存模块.从文件加载 (JU文件)

请问下,内存模块 加载的DLL文件,是不是里面不能带窗口的?我试了两个DLL文件,不带窗口的DLL可以加载,带窗口的DLL它报错了。

错误: 接收到未经处理的严重异常,代码为: 0xE06D7363

Xelloss0618 发表于 2023-12-2 19:19:58

内存模块不是通过系统 API 正常加载 DLL,而是模拟了系统加载 DLL 的流程,但有些系统内部的操作是无法还原的。
比如内存加载的 DLL 对系统而言是不可见的,这带来的优点是隐蔽性,但同样也导致了内存 DLL 调用一些 API 无法得到正常的结果。

加载带窗口 DLL 出错的原因也是如此,MFC 内部会调用 GetModuleFileName,内存加载后,这个 API 只能返回 NULL。
而正常情况下会返回非空的文本指针,所以 MFC 内部没有对此做判断,接着 MFC 继续调用了这个空指针,自然就出错了。

fengyishen 发表于 2023-12-2 22:03:18

Xelloss0618 发表于 2023-12-2 19:19
内存模块不是通过系统 API 正常加载 DLL,而是模拟了系统加载 DLL 的流程,但有些系统内部的操作是无法还原 ...

擦,太生猛了。。之前加载大漠免注册DLL也是闪退
页: [1]
查看完整版本: 内存模块的问题