-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
作者厉害!原版的加载我的dll有问题,用你这个成功了,不过运行一段时间后断言失败 #23
Comments
你好,这个问题可能是由“带线程局部存储的TppWorkerThread”引起的,最新的提交已修复。#58379ac |
非常感谢!! |
最近发现在使用GdiPlus这个系统库时,可能引起崩溃 ` ++MmpGlobalDataPtr->MmpTls->MmpActiveThreadCount; __skip_tls: 这个可以解决嘛 |
我屏蔽了这里的HOOK,暂时好像不崩溃了,就是不知道有什么影响没 //DetourAttach((PVOID*)&MmpGlobalDataPtr->MmpTls->Hooks.OriginRtlUserThreadStart, HookRtlUserThreadStart); |
可以提供详细的异常状态吗? |
Critical error detected c0000374 |
你是直接从内存加载的gdiplus?还是通过内存dll间接加载的?我没有复现出来,能提供一个简单的示例吗? |
我测试了下gidplus崩溃的这个是跟 windows.storage.dll有关,我先手动加载windows.storage.dll后就没出现过了。 然后我在内存加载之前,手动加载了另外几个系统dll, |
顺便问下 ,关闭这个有影响吗? |
关闭后会导致新线程无法使用内存模块的tls数据,并且新线程退出时会在HookLdrShutdownThread处崩溃 |
嗷嗷,那影响还是挺大的,等我完全搭好了环境,把代码和dll都发你试试哈 |
我修复了一个错误,你更新一下看看问题解决了没 |
我试了下,还是会偶尔崩溃,但崩溃位置变了,好像跟lock有关。 |
或许是跟Wow64进程的native64线程有关,我没有处理64位TEB的TLS。需要发出详细的异常状态才能进一步判断。 |
有两种情况的崩溃: 第二种是在 locks.cpp 这个文件里面崩溃: |
有用其他加载器(如BlackBone)试过吗?我感觉不像是TLS的问题。我最新的提交添加了原始处理TLS的方法(特征码定位LdrpHandleTlsData),使用stdafx.h中的 |
OKOK,现在暂时没碰到崩溃了,如果出现了再采用你这个~ |
if (MmpGlobalDataPtr->MmpTls->MmpTlsList.Flink != &MmpGlobalDataPtr->MmpTls->MmpTlsList) { assert(NtCurrentTeb()->ThreadLocalStoragePointer == nullptr); }
file: MmpTls , line:378
不知道啥原因
The text was updated successfully, but these errors were encountered: