【发布时间】: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 用于名称。CreateProcessA、CreateProcessW(unicode)、CreateProcessAsUserW和其他 CreateProcess* 导出上的 F2(断点)。如果它不使用其中之一来调用 something 则尝试ntdll和ZwCreateProcess* 函数。还有其他方法可以创建进程,它们都更有趣来调试。先告诉我你是怎么处理这些的。 -
@Leigh:如果你使用的是 OllyDbg,我相信你可以按 Ctrl+G。
标签: winapi reverse-engineering ollydbg