博弟弟丶 发表于 2021-10-1 20:53

学习C++第三十天

本帖最后由 博弟弟丶 于 2021-10-1 05:54 编辑


#include <windows.h>
#include <TlHelp32.h>//获取模块头文件

uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName)//定义一个函数 方便调用
{
    uintptr_t modBaseAddr = 0;
    HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);//可以获取系统中正在运行的进程信息,线程信息 一系列东西
    if (hSnap != INVALID_HANDLE_VALUE),
    {
      MODULEENTRY32 modEntry;//初始化 结构体
      modEntry.dwSize = sizeof(modEntry);// 这句话就是说 取这个结构体的大小 用sizeof(modentry)
      if (Module32First(hSnap, &modEntry))//此函数检索与进程相关联的第一个模块的信息
      {
            do
            {
                if (!_wcsicmp(modEntry.szModule, modName))//比较大小
                {
                  modBaseAddr = (uintptr_t)modEntry.modBaseAddr;
                  break;
                }
            } while (Module32Next(hSnap, &modEntry));
      }
    }
    CloseHandle(hSnap);//关闭
    return modBaseAddr;
int main(){


调用这个函数就行了   第一个进程ID 第二个 可以是模块(列如.exe+460这种 exe这种就属于本地的)可以是DLL(列如.DLL+460这种 DLL这种就属于服务器的)有哪里不对的地方 还望指教   如果实在不明白 可以下断点 一步一步过这样肯定会明白
return 0;
}

songxp03 发表于 2021-10-1 23:00

这是Windows编程吧?只是c艹的sdk,VB也行吧?c艹不是实现功能的必须语言

lichunfeng 发表于 2021-10-2 00:07

我以前也是这样,执迷windows编程....   还是太年轻,事实界面编程不是那么重要。。

xuyongze 发表于 2021-10-2 00:28

这意义不大啊

Rodriguezs 发表于 2021-10-2 02:54

lichunfeng 发表于 2021-10-2 00:07
我以前也是这样,执迷windows编程....   还是太年轻,事实界面编程不是那么重要。。

语言只是工具,重要的是思想。

非洲小白脸. 发表于 2021-10-2 06:02

你这种感觉没什么必要,自写这个函数的无非就是防止被HOOK或者防别人逆向什么的,一般都是用纯汇编写,你这用系统函数没什么区别

博弟弟丶 发表于 2021-10-6 00:18

songxp03 发表于 2021-10-1 08:00
这是Windows编程吧?只是c艹的sdk,VB也行吧?c艹不是实现功能的必须语言

谢谢大佬的指点

博弟弟丶 发表于 2021-10-6 00:18

xuyongze 发表于 2021-10-1 09:28
这意义不大啊

大佬可以略过

博弟弟丶 发表于 2021-10-6 21:02

xuyongze 发表于 2021-10-1 09:28
这意义不大啊

学习一下   

博弟弟丶 发表于 2021-10-6 21:03

非洲小白脸. 发表于 2021-10-1 15:02
你这种感觉没什么必要,自写这个函数的无非就是防止被HOOK或者防别人逆向什么的,一般都是用纯汇编写,你这 ...

HOOK或者 逆向什么不存在的就是单纯的学习一下
页: [1]
查看完整版本: 学习C++第三十天