能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这个论坛好多的。随便搜一大票!
http://bbs.pediy.com/showthread.php?t=203910
这个类源代码 就是这里:https://github.com/fancycode/MemoryModule
两个地址都可以下到这个类
这个类就可以搞定 DLL 但要WIN32的DLL 不支持MFC DLL
但可以 MFC.exe 内存加载调用win32的DLL(非MFC DLL文件)
把那类下了 然后添加你工程 你建立个MFC.exe工程 然后把win32.dll加入资源
就是不支持MFC DLL 要是楼主搞定支持MFC DLL 请告诉我啊!
typedef int (WINAPI *PFN_POPMSGBOX)(void);
void LoadDllFromMemAndCallEX()
{
HRSRC hResInfo;
HGLOBAL hResData;
DWORD dwSize;
PVOID DllResourceModule=NULL;
HMEMORYMODULE hDll;
PFN_POPMSGBOX pfn;
hResInfo = FindResource(NULL,MAKEINTRESOURCE(IDR_MYDLL), "MYDLL"); //资源文件夹和资源名称
if (hResInfo == NULL)
{
printf("无法找到指定的资源!\n");
return ;
}
dwSize = SizeofResource(NULL, hResInfo);
// 装载资源
hResData = LoadResource(NULL, hResInfo);
if (hResData == NULL)
{
printf("无法加载指定的资源!\n");
return ;
}
//锁定资源,并获取指向资源的指针
DllResourceModule=LockResource(hResData);
// 加载
hDll=MemoryLoadLibrary(DllResourceModule); //内存加载
if (hDll==NULL)
{
printf("从内存直接加载Dll失败!\n");
return ;
}
//获取导出的函数的地址
pfn=MemoryGetProcAddress(hDll,"PopCurrentProcPath"); //获取函数地址
if (pfn==NULL)
{
printf("无法获取指定的函数地址!\n");
MemoryFreeLibrary(hDll);
return;
}
//调用导出的函数
pfn();
//printf("调用结束!\n");
if (hDll!=NULL)
{
MemoryFreeLibrary(hDll);
hDll=NULL;
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
给分分转正呀
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我是来转正的
|
能力值:
( LV12,RANK:760 )
|
-
-
5 楼
支持MFC DLL的也有,只是大家都觉得,撸起来很蛋痛
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
求传送门! 一直找不到!
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
这个可能是你需要的
https://github.com/fancycode/MemoryModule/
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
MemoryModule不支持加载MFC DLL
原因概括下大概是:
mfc dll有些函数用到了文件名,然而你直接从内存中加载的,没有文件名,然后就不开心了。
http://read.pudn.com/downloads93/sourcecode/windows/control/368102/Inc/RawPeApi.h__.htm
|
能力值:
( LV6,RANK:90 )
|
-
-
9 楼
inline HMODULE ModuleHandleByAddr(const void* ptrAddr)
{
MEMORY_BASIC_INFORMATION info;
::VirtualQuery(ptrAddr, &info, sizeof(info));
return (HMODULE)info.AllocationBase;
}
inline HMODULE ThisModuleHandle()
{
HMODULE sInstance = ModuleHandleByAddr((void*)&ThisModuleHandle);
return sInstance;
}
HMODULE hInst= ThisModuleHandle();
HRSRC hrsc = FindResource(hInst, MAKEINTRESOURCE(nResID), szFileType);
if (hrsc == NULL)
{
CloseHandle(hFile);
return FALSE;
}
HGLOBAL hG = LoadResource(hInst, hrsc);
DWORD dwSize = SizeofResource(hInst, hrsc);
WriteFile(hFile, hG, dwSize, &dwWrite, NULL); //WriteFile(hFile,LockResource(hG),dwSize,&dwWrite,NULL);
FreeResource(hG);
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
还在做梦幻辅助啊! 梦幻有行为检测 看过你之前帖子 应该还没破解 梦幻的保护吧。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
小菜鸟,学习中,有分赚吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
LOAD的方法,动态加载DLL.
|
|
|