首页
社区
课程
招聘
未解决 CE找到基址模块,用C语言怎么获取到这个模块
发表于: 2021-2-9 00:30 5250

未解决 CE找到基址模块,用C语言怎么获取到这个模块

2021-2-9 00:30
5250


咋获取PlantsVsZombies.exe这个模块 ,GetModulehandle?
可以的话麻烦留下一点代码作为参考,感谢各位


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-2-9 00:32 被wx_python_215编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 498
活跃值: (251)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

菜鸟思路

通过 进程快照 得到 进程模块地址 加上偏移

最后于 2021-2-9 09:18 被寻她梦编辑 ,原因:
2021-2-9 09:17
0
雪    币: 3998
活跃值: (5131)
能力值: ( 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];
}
2021-2-9 11:55
0
雪    币: 9759
活跃值: (3419)
能力值: ( 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;

}


2021-2-9 13:41
0
雪    币: 2726
活跃值: (1110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
API EnumProcessModules   直接可以遍历进程内的所有模块句柄,GetModuleFileNameEx 获取模块路径
2021-2-9 14:16
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
ffggddss API EnumProcessModules 直接可以遍历进程内的所有模块句柄,GetModuleFileNameEx 获取模块路径
感谢老哥的帮助
2021-2-9 17:20
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
千音丶 如果是注入的方式的话,你要取这个模块直接用LoadLibrary函数即可,如果是远程的话参考我写的这个函数即可//获得进程指定模块句柄  参数:进程pid,模块名 ...
感谢老哥的帮助
2021-2-9 17:21
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
舒默哦 LPCVOID getLoadAddress( DWORD dwProcessId ) { HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMA ...
感谢老哥的帮助
2021-2-9 17:21
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
寻她梦 菜鸟思路通过 进程快照 得到 进程模块地址 加上偏移
感谢老哥的帮助
2021-2-9 17:21
0
游客
登录 | 注册 方可回帖
返回
//