gpt4 book ai didi

c++ - 如何获取kernel32.dll!BaseThreadStartThunk的内存地址?

转载 作者:行者123 更新时间:2023-11-28 06:47:29 24 4
gpt4 key购买 nike

我在 procexp 中看到一些起始地址为 kernel32.dll+0x106e9 的线程,解析符号后,我得到地址:kernel32.dll!BaseThreadStartThunk

我想枚举系统中的所有线程并打印具有此起始地址的线程,但是当我尝试获取 BaseThreadStartThunk 的地址时,通过:

PVOID BaseThreadStartThunk_addr = GetProcAddress(LoadLibrary(L"Kernel32.dll"), "BaseThreadStartThunk");

我回来了0

如何获取 BaseThreadStartThunk() 的地址?

最佳答案

GetProcAddress是EAT(Export Address Table)解析的实现,该函数尝试在EAT中查找名称或序号,然后从模块库中获取增量函数并将此增量添加到模块库中。

如果“BaseThreadStartThunk”不是导出符号,则GetProcAddress 无法获取它。

您可以:

  1. 使用 pdb 符号解析名称并从模块库中获取它的增量(每台 PC 上需要互联网加载符号)

  2. 创建“BaseThreadStartThunk”的二进制签名并在内存中找到它

  3. 用“kernel32 version”、“function delta”创建表 - 为每个 kernel32 版本硬编码 delta 到 func

  4. 使用反汇编程序查找函数地址 - 我认为这是最好的方法

关于c++ - 如何获取kernel32.dll!BaseThreadStartThunk的内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24697935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com