gpt4 book ai didi

c++ - 你如何访问另一个进程的内存并调用它的函数?

转载 作者:可可西里 更新时间:2023-11-01 13:23:14 25 4
gpt4 key购买 nike

我想学习如何读取其他进程的内存并让我的程序调用其他进程的函数以及不使用我自己的参数和东西的东西。我用谷歌搜索了一下,似乎您需要使用 ReadProcessMemory 之类的东西,但我找不到任何好的教程来解释如何使用它们。谁能指出我正确的方向来学习这样的东西?我想在 Windows(7 位和 64 位,如果重要的话)上用 C++(或 java,如果可能的话)来做。

另外,我知道这听起来很主观并且可能被用于恶意目的,但我保证我不会出于任何有害的原因使用从中获得的任何知识。我纯粹是为了好玩而学习这个,并自学一些新东西。

最佳答案

你不能直接调用其他进程中的函数,因为你的进程和其他进程有不同的地址空间。解决这个问题的一种方法是在进程中创建一个远程线程(使用 CreateRemoteThread 或 RtlCreateUserThread),但这只允许您将一个参数传递给函数。您可以尝试创建一个远程线程,将参数写入其堆栈并使用 SetThreadContext 更改其寄存器。另一种方法是注入(inject)您自己的调用该函数的 DLL。

另一个问题是定位要调用的函数。您可能需要为未导出所需功能的 EXE 或 DLL 加载符号。

有关 Windows 内部结构的一般问题,请尝试在 Sysinternals Forums 上提问.

编辑:如果事先不知道图像文件中指令和数据的布局,则很难在程序中执行您所说的内容(读取进程根据用户输入检查的字符串)。例如,如果您有一个 crackme 程序,您可以使用像 IDA Pro 这样的静态分析工具,或者在调试器下运行该程序。无论哪种方式,这些事情通常都需要人工输入并且很难自动完成。

关于c++ - 你如何访问另一个进程的内存并调用它的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007242/

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