Winapi 如何在反汇编代码中定位Windows进程创建调用?

Winapi 如何在反汇编代码中定位Windows进程创建调用?,winapi,reverse-engineering,ollydbg,Winapi,Reverse Engineering,Ollydbg,我有一个调用另一个CLI程序的程序,两个程序都没有源代码。 我想知道第一个程序调用命令行程序的参数是什么 使用Sysinternals Process Explorer,我能够找到参数。其中一根是一根看起来很奇怪的绳子。出于好奇,我想知道它的起源:它依赖于什么类型的变量,或者它是否是硬编码的 该字符串不以ASCII格式存在。所以,我想找出调用CLI应用程序的位置,以便深入挖掘。不幸的是,这就是我被卡住的地方。 我不太了解Windows API以及进程是如何创建的。我找不到正在创建CLI应用程序进

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

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

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

抱歉,如果这是一个愚蠢的问题,但它似乎很有趣。欢迎任何关于自我教育的建议阅读。

您可以使用。如果只想查看流程创建/终止活动,请添加一个过滤器
操作
流程
开始。然后,在创建进程时,将记录该进程,包括创建它的内容

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

在这里,我从资源管理器启动了记事本:


使用调试器。在NtCreateProcess上设置一个断点。虽然没有太多操作,但是有几个
CreateProcess
变体需要检查。您已经标记了OllyDbg so,Alt+E代表模块列表,find
kernel32
,Ctrl+N代表名称。F2(断点)位于
CreateProcessA
CreateProcessW
(unicode)、
CreateProcessASERW
和其他CreateProcess*导出上。如果它不使用其中的一个来调用某些东西,那么请尝试
ntdll
ZwCreateProcess
*函数。还有其他创建流程的方法,调试起来更有趣。首先让我知道你是如何处理这些问题的。@Leigh:如果你使用的是OllyDbg,我相信你可以按Ctrl+G组合键。