赞 | 14 |
VIP | 0 |
好人卡 | 1 |
积分 | 18 |
经验 | 2716 |
最后登录 | 2022-6-5 |
在线时间 | 133 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1803
- 在线时间
- 133 小时
- 注册时间
- 2013-10-6
- 帖子
- 193
|
我这里是第一次运行时会卡一阵子,鼠标无响应,整个屏幕停止重绘,之后就好了{:2_270:}
如果楼主是每次都这样的话,可以试试两个方法
1 放一个假的dmusic.dll到游戏目录下,因为Windows的DLL加载顺序问题不知道能不能骗过去
2 如果每次启动都会卡,楼主会编程的话自己写一个Loader,阻止RM程序加载dmusic.dll即可
具体实现的话,方便起见可以用微软的Detours库。
启动游戏进程的时候使用DetourCreateProcessWithDllEx,使用方法和CreateProcess差不多,多出的两个参数,第一个填写你写的DLL名称,第二个给NULL即可
DLL方面,在DllMain里面进行API HOOK即可
过程类似这样,以C++为例
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(LPVOID&)Old_LoadLibraryW,New_LoadLibraryW);
DetourTransactionCommit();//一定要commit才能生效
至于拦截的处理
HMODULE (WINAPI* Old_LoadLibraryW)(LPCWSTR lpLibFileName)=LoadLibraryW;
HMODULE WINAPI New_LoadLibraryW(LPCWSTR lpLibFileName)
{
if(wcscmp(lpLibFileName,L"dmusic.dll")==0)//如果加载的是dmusic.dll
{
return NULL;//直接让函数失败
}
return Old_LoadLibraryW(lpLibFileName);//不是的话正常加载
}
这样就可以屏蔽RM对这个DLL的加载,其他应用不受影响。
好吧我承认我很懒,随手写的没有测试 有兴趣的可以做出来 Detours可以从微软官网下载,需要自己编译一下,挺方便的,或者你自己写API HOOK也行 只是代码比较多 |
|