能力值:
( LV2,RANK:10 )
|
-
-
2 楼
菜鸟思路 通过 进程快照 得到 进程模块地址 加上偏移
最后于 2021-2-9 09:18
被寻她梦编辑
,原因:
|
能力值:
( LV7,RANK:100 )
|
-
-
3 楼
LPCVOID getLoadAddress( DWORD dwProcessId ) { HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, 0, dwProcessId); HMODULE hModule = LoadLibrary(TEXT("Ntdll.dll ")); if (NULL == hModule) return NULL; PROCESS_BASIC_INFORMATION pbi = {0}; NtQueryInformationProcessPtr NtQueryInformationProcess = (NtQueryInformationProcessPtr)GetProcAddress(hModule, "NtQueryInformationProcess"); LONG status = NtQueryInformationProcess(hProcess, ProcessBasicInformation, (PVOID)&pbi, sizeof(PROCESS_BASIC_INFORMATION), NULL); if (NULL != hModule) FreeLibrary(hModule); if (NULL != hProcess) CloseHandle(hProcess); return pbi.PebBaseAddress->Reserved3[1]; }
|
能力值:
( LV3,RANK:30 )
|
-
-
4 楼
如果是注入的方式的话,你要取这个模块直接用LoadLibrary函数即可,如果是远程的话参考我写的这个函数即可 //获得进程指定模块句柄 参数:进程pid,模块名
DWORD GetModule(DWORD pid, LPBYTE ModuleName)
{
MODULEENTRY32 me32;
me32.dwSize = sizeof(MODULEENTRY32); //在使用这个结构前,先设置它的大小
HANDLE hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid); //HANDLE也是属于句柄,是通用句柄 ,HWND是窗口句柄
if (hModuleSnap == INVALID_HANDLE_VALUE) //INVALID_HANDLE_VALUE表示无效的句柄
{
return 0;
}
BOOL bMore = Module32First(hModuleSnap, &me32); //获取第一个模块信息
char* name = NULL;
char temp_dest[MAX_PATH] = { 0 }; //用来存放遍历模块转换大写的结果
char temp_results[MAX_PATH] = { 0 }; //用来存放要查询模块的大写结果
Conversion_Big((char*)ModuleName, temp_results); //转换大写
while (bMore)
{
USES_CONVERSION;
name = W2A(me32.szExePath);
Conversion_Big(name, temp_dest);
if ( strstr(temp_dest, temp_results) != NULL)
{
CloseHandle(hModuleSnap);
return (DWORD)me32.modBaseAddr;
}
bMore = Module32Next(hModuleSnap, &me32);
}
CloseHandle(hModuleSnap);
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
API EnumProcessModules 直接可以遍历进程内的所有模块句柄,GetModuleFileNameEx 获取模块路径
|
能力值:
( LV1,RANK:0 )
|
-
-
6 楼
ffggddss
API EnumProcessModules 直接可以遍历进程内的所有模块句柄,GetModuleFileNameEx 获取模块路径
感谢老哥的帮助
|
能力值:
( LV1,RANK:0 )
|
-
-
7 楼
千音丶
如果是注入的方式的话,你要取这个模块直接用LoadLibrary函数即可,如果是远程的话参考我写的这个函数即可//获得进程指定模块句柄 参数:进程pid,模块名
...
感谢老哥的帮助
|
能力值:
( LV1,RANK:0 )
|
-
-
8 楼
舒默哦
LPCVOID getLoadAddress( DWORD dwProcessId )
{
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMA ...
感谢老哥的帮助
|
能力值:
( LV1,RANK:0 )
|
-
-
9 楼
寻她梦
菜鸟思路通过 进程快照 得到 进程模块地址 加上偏移
感谢老哥的帮助
|
|
|