代码之家  ›  专栏  ›  技术社区  ›  Ryan

查看进程创建的临时文件

  •  1
  • Ryan  · 技术社区  · 16 年前

    我正试图反向工程一个执行一些基本解析的程序:文本输入,文本输出。我有一个可执行的“引用实现”和源代码,源代码必须是不同的版本,因为编译后的源代码输出!=可执行输出。

    这个过程在多步骤解析过程中创建和删除临时文件的速度非常快。如果我能看一下单独的临时文件,我就可以得到一些很好的诊断数据来缩小我的源代码与二进制代码的差别。

    有什么方法可以做到以下任何一点吗?

    • 冻结一个目录,以便文件创建可以工作,但文件删除将自动失败?
    • 以“慢动作”运行程序,以便我可以查看它创建的文件?
    • 记录程序所做的一切,包括任何写入文件的数据?
    3 回复  |  直到 16 年前
        1
  •  2
  •   MartW    16 年前

    运行类似的工具 NTFS Undelete 应该让您有机会恢复它正在创建的临时文件,然后删除。把这个和 ProcMon 从SysInternals获取正确的文件名。

        2
  •  1
  •   Agent_9191    16 年前

    你没有提到你在做什么操作系统,但是假设你使用的是Windows…

    您可能能够使用SysInternals工具,比如 Process Explorer Process Monitor 以便更好地了解正在访问的文件。据我所知,文件夹上没有“只写”选项。为了“减慢”文件速度,您只需要使用较慢的计算机。对于日志记录,SysInternals工具将有很大帮助。一旦创建了一个文件名,就可以尝试通过从另一个进程打开流中的文件来阻止删除。这将阻止系统删除它们。

        3
  •  1
  •   Aaron Digulla    16 年前

    有两种方法可以攻击:

    1. 在两个系统中运行各种小型测试用例,并注意它们之间的区别。由于测试用例很小,您应该能够理解为什么您的代码与可执行文件的工作方式不同。

    2. 反汇编可执行文件并删除所有“删除临时文件”指令。这可能是一项非常复杂的任务,具体取决于它的工作方式(例如,当没有中心位置时)。