gpt4 book ai didi

c++ - Windows 将标准 C 文件结构注入(inject)正在运行的进程

转载 作者:行者123 更新时间:2023-11-30 20:28:59 25 4
gpt4 key购买 nike

我有一个奇怪的想法,想知道这是否可能。这是我计划的粗略轮廓。

场景:应用程序在启动时加载并解释配置文件中的值。我想通过配置文件对应用程序进行模糊测试,而不需要重写配置文件。

注意:配置文件稍后在程序中关闭,打开配置文件的函数用于打开各种其他文件,因此我不想 Hook 此函数。虽然此处使用了 SetKMode()SetProcPermissions(),但通常适用于 Windows 的答案与 Windows CE 答案一样有用。

计划:

  1. 通过 SetKMode() 和 SetProcPermissions 获得对此进程的调试权限,并通过 DebugActiveProcess() 附加调试器
  2. 加载文件的函数返回后中断
  3. 创建文件的临时修改版本并在父进程中打开它
  4. 使用VirtualAlloc()为调试者中的FILE结构分配空间
  5. 使用 WriteProcessMemory() 将临时文件的整个 FILE 结构传输到调试程序
  6. 将调试程序加载的配置文件的指针交换为临时文件的指针
  7. 允许调试者运行该文件
  8. 在调试程序关闭文件之前,将原始配置文件的旧指针复制回新指针,以便关闭正确的文件

调试器能够读取该文件吗?家长可以在文件完成后关闭它吗?

编辑:

每次尝试关闭文件时将旧指针传输回调试者似乎不再是经过一些 RE 后的一个好的解决方案,因此除了我当前的问题之外,我还有一个额外的问题:调试者是否能够关闭调试器打开的文件?那会有问题吗?原始文件未正确关闭会成为问题吗?

编辑:

抱歉,我是一个傻瓜,忘记了如果我正在经历注入(inject)所有这些的麻烦,我可以在调用 fopen 之前很久注入(inject)一个新文件名并交换指针。

最佳答案

假设整个文件被加载到内存中然后进行解析,我会挂接任何将文件数据加载到内存中的函数,使用条件来检查文件名,这样您只有在正确的文件加载到内存中后才执行代码通过检查文件名。然后,我将通过修改内存中的文件数据来执行模糊测试,然后在解析文件数据之前将执行返回到目标进程。通过这种方式,您不会触及任何文件权限,而只会触及内存。

要使其自动化,请创建一个“加载程序”,它执行目标进程、注入(inject)、执行您的 Hook ,然后检查是否有崩溃或其他不需要的行为。

关于c++ - Windows 将标准 C 文件结构注入(inject)正在运行的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59525031/

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