c - 没有它们如何获取 GetProcAdress 和 LoadLibrary?

标签 c windows winapi dll reverse-engineering

<分区>

假设我没有导入 .lib 库 我希望一切都以原始方式进行,通过手动编写 调用(如汇编或纯 c)

GetProcAdress LoadLibrary 是 winapi dll 的一部分 通常加载 dll 并获取指针 对于我需要调用这两个函数的函数,但是因为我 没有得到它们我可以用什么来获得它们?

这有点像悖论,可能可以通过其他一些机制来解决,但是这里我缺乏知识,我不知道这个机制是什么,有人可以解释一下吗?

最佳答案

我以前确实设法做到过。确实有可能。解决方案是基本上实现 LdrGetDllHandle 手动 并使用它来搜索 LdrLoadDll/LdrUnloadDllLdrGetProcedureAddress NTDLL 中,通过 NtCurrentPeb 获取指向进程的 PEB_LDR_DATA 数据结构的指针,这是一个读取 FS 或 GS​​ 的宏CPU 寄存器。
一旦您获得了这三个函数的指针,您就可以使用它们来加载您需要的其他 DLL。

我不打算为您发布代码,但是如果您查看 ReactOS 的源代码,您应该能够逐渐弄清楚如何实现它——我认为这些应该是足够的指针(没有双关语意图)让你开始。 :)

关于c - 没有它们如何获取 GetProcAdress 和 LoadLibrary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32817005/

相关文章:

c - Linux : Check if message queue is empty

c - 如何读取不确定长度的数字输入?

c++ - 如何在事件窗口之外进行C++输入?

c - 如何使用启用惯性的控件实现捕捉点

c - free() 函数只释放结构的第一个元素?

java - 如何在 NDK 中计算 C 中的输入 int 数组

python - 确定两个文件在 Windows 上是否硬链接(hard link)?

windows - 从 setlocal 代码中传递变量

windows - 批处理文件,文件夹路径中的通配符,不知道通配符是什么

c++ - CreateProcess 不传递命令行参数