精易论坛

标题: 内存加载DLL_V1.8(HOOK法_支持加壳的DLL、COM免注册创建对象) [打印本页]

作者: lyjdgkg    时间: 昨天 20:57
标题: 内存加载DLL_V1.8(HOOK法_支持加壳的DLL、COM免注册创建对象)
本帖最后由 lyjdgkg 于 2024-9-21 20:57 编辑

这个HOOK版的兼容性最接近系统API加载。
原理参考于 https://github.com/A-Normal-User/MemoryDll-DllRedirect 、 【全网首发】加载Dll时直接转向内存Dll,兼容性极佳【你见过幽灵吗?】幽灵Dll
已迭代了多个版本,基本上可以稳定使用了。


主要功能:
1. 内存加载DLL:纯内存加载DLL,文件不用落地,仅支持windows7及以上系统。
2. 系统加载DLL:需要将DLL写到硬盘,DLL加载完毕后会删掉DLL文件,支持XP及以上系统。
3. 创建内存COM对象:免注册创建COM或OCX组件对象 (额外多了个优点,多线程中无需初始化COM)。


使用说明:
1. 加载加壳的DLL需要在参数里启用【过文件校验】
2. 具体使用请看示例代码。
3. 有Bug可以加Q群484756729反馈。


图:
使用示例.png
模块信息.png



更新日志:
v1.8-2024.9.21
        1. 【修复】由于GetProcAddress有时候取函数指针会异常, 从而导致崩溃的问题。(全部替换为GetProcAddress_ASM来获取)


v1.7-2024.5.9
        1. 【修复】相关NT函数已被HOOK时内存加载DLL会崩溃问题。

v1.6-2024.4.25
        1. 【增强】创建内存COM对象() 兼容基于COM的OCX组件的创建。
        2. 【添加】内存加载DLL() 和 系统加载DLL() 增加【参_不执行入口函数】参数,真: 不执行DLL的入口函数,假: 执行DLL的入口函数,默认:假。
        3. 【优化】系统加载DLL() 现在支持XP系统。

v1.51-2024.4.8
        1. 【修复】 模块初始化中 局_初始化 变量没勾选静态属性问题。(感谢 夜未央 的反馈)

v1.5-2024.4.7
        1. 【增强】过文件校验功能,过 壳通过NtReadFile方式读取文件的校验。
        2. 【增加】【创建内存COM对象】功能,用于COM库免注册内存创建对象。(可参考示例里对大漠3.1233版本的操作)
        3. 【增加】【取COM类GUID】功能,用于取COM库的类GUID用以【创建内存COM对象】时使用,封装前取一次即可。(具体细则参考示例)
        4. 【调整】为避免多线程操作冲突,给会冲突的功能增加了同一临界许可。

v1.4-2024.3.21
        1. 【添加】API版的【压缩数据】和【解压数据】功能。(压缩率没有支持库版的【压缩数据】好,但性能更好些。)
        2. 【添加】系统加载DLL方式。(此方式会将DLL写到硬盘,加载完成后由系统自动删除DLL文件,完全是正常加载方式,但依然不支持XP。)

v1.3-2024.3.20
        1. 【添加】过文件校验参数。(仅针对壳使用MapViewOfFile映射文件方式读取文件来校验自身的壳才有效)
        2. 【优化】优先根据PE头里指定的模块jz来加载,jz若被占用则由系统指定。

v1.2-2024.3.19
        1. 【修复】模块jz改为NtMapViewOfSection分配,解决卸载模块时内存不释放问题。

v1.1-2024.3.18
        1. 【修复】已知问题。
        2. 【优化】ZwOpenFile回调内回传虚假句柄,实现不打开任何文件。


内存加载DLLHOOK法_V1.8.zip (1.15 MB, 下载次数: 92)