-
Notifications
You must be signed in to change notification settings - Fork 112
Closed
Description
最新版 sciter.dll(v5.0.3.13) 用 mmpp 加载崩溃 STATUS_ACCESS_VIOLATION 错,v5.0.3.13版之前的均可正常加载。
不知这一版开始有了什么变化。
dll下载连接 https://gitlab.com/sciter-engine/sciter-js-sdk/-/blob/main/bin/windows/x32/sciter.dll?ref_type=heads
用最新提交的 mmpp 加载也不行。
__LdrLoadDllMemoryExW 崩溃 STATUS_ACCESS_VIOLATION
int main() {
size_t len = 0;
PVOID buffer = ReadDllFile2("MemoryModule.dll", &len);
printf("1: %p, %u\n", buffer, len);
HMODULE hm = (HMODULE)LoadLibraryWithReflectiveLoader( buffer, len );
printf("2: hm: %p\n", hm);
//MmpGlobalDataPtr = *(PMMP_GLOBAL_DATA*)GetProcAddress(hm, "MmpGlobalDataPtr");
//printf("3: %p\n", MmpGlobalDataPtr);
__LdrLoadDllMemoryExW = (LdrLoadDllMemoryExW_t)GetProcAddress(hm, "LdrLoadDllMemoryExW");
__LdrUnloadDllMemory = (LdrUnloadDllMemory_t)GetProcAddress(hm, "LdrUnloadDllMemory");
printf("4: %p, %p\n", __LdrLoadDllMemoryExW, __LdrUnloadDllMemory);
VirtualFree(buffer, len, MEM_RELEASE);
buffer = ReadDllFile2("sciter50313.dll", &len);
printf("5: %p, %u\n", buffer, len);
HMODULE hm1 = NULL;
NTSTATUS res = __LdrLoadDllMemoryExW(&hm1, NULL, LOAD_FLAGS_NOT_FAIL_IF_HANDLE_TLS, buffer, 0, NULL, NULL);
printf("6: res: %x, hm1: %p\n", res, hm1);
//DisplayStatus();
return 0;
}上面 ReadDllFile2 中内存是用 VirtualAlloc(0, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE) 分配的。
错误日志
故障存储段 2115915853192506159,类型 1
事件名称: APPCRASH
响应: 不可用
Cab ID: 0
问题签名:
P1: loader_mmpp_from_mem.exe
P2: 0.0.0.0
P3: 00000000
P4: 3752B4E99BA4A6F1.DLL
P5: 0.0.0.0
P6: 66843965
P7: c0000005
P8: 000059e4
P9:
P10:
上面测试程序可以正常加载 5.0.3.13版之前的 sciter.dll
麻烦大侠看看能否解决一下,多谢了。
Metadata
Metadata
Assignees
Labels
No labels