【问题标题】:How locate Windows process creation calls in disassembled code?如何在反汇编代码中定位 Windows 进程创建调用?
【发布时间】:2012-03-15 06:47:21
【问题描述】:

我有一个调用另一个 CLI 程序的程序,这两个程序都没有源代码。 我想知道第一个程序使用哪些参数调用命令行程序。

使用 Sysinternals Process Explorer 我能够找出参数。其中一个是一个看起来很奇怪的字符串。出于好奇,我想知道它的来源:它依赖于什么样的变量,或者它是否是硬编码的。

字符串不以 ASCII 格式存在。所以,我想真正找出调用 CLI 应用程序的位置,以便深入挖掘。不幸的是,这就是我卡住的地方。 我不太了解 Windows API 以及如何创建进程。我找不到正在创建 CLI 应用程序进程的部分。我尝试使用名为 StraceNT 的工具,但在任何地方都找不到调用(我以为它会使用 CreateProcess() 函数)。

对不起,如果这是一个愚蠢的问题,但它看起来很有趣。欢迎任何建议阅读以自学。

【问题讨论】:

  • 使用调试器。在 NtCreateProcess 上设置断点。
  • 没什么可继续的,但有几个CreateProcess 变体可供查看。您已经标记了 OllyDbg,Alt+E 用于模块列表,找到 kernel32,Ctrl+N 用于名称。 CreateProcessACreateProcessW(unicode)、CreateProcessAsUserW 和其他 CreateProcess* 导出上的 F2(断点)。如果它不使用其中之一来调用 something 则尝试ntdllZwCreateProcess* 函数。还有其他方法可以创建进程,它们都更有趣来调试。先告诉我你是怎么处理这些的。
  • @Leigh:如果你使用的是 OllyDbg,我相信你可以按 Ctrl+G。

标签: winapi reverse-engineering ollydbg


【解决方案1】:

您可以使用Process Monitor。如果您只想查看流程创建/终止活动,请添加过滤器 Operation begins with Process。然后将在创建进程时记录它,包括创建它的内容。

然后您可以双击您感兴趣的“Process Create”事件,并查看选项卡“Stack”。瞧,你会得到一个调用堆栈,显示进程创建是如何启动的!

这里我从资源管理器开始记事本:

【讨论】:

    猜你喜欢
    • 2022-12-24
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2010-12-11
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多