反汇编代码:找出程序的命令行参数

逆向工程 拆卸 争论 程序分析
2021-07-09 10:47:48

想象一个程序(在 Windows 上)启动时带有几个起始参数,例如一个数字和一个字符串。

反汇编程序时(例如使用PEiD),如何找出启动参数?我想要做的是找出分配了起始参数的“变量”,然后跟踪该变量的使用,以便找到它们被使用的部分。

我对所有这些组装内容都是全新的,所以这个问题可能很愚蠢,但我没有通过简单的谷歌搜索找到我的答案。谢谢!

1个回答

与 Linux 不同,在 Windows 上,命令行参数不会传递到程序的入口点,而必须使用 API 从操作系统中检索GetCommandLine但是,在实际程序中很少使用。通常是 CRT 启动调用它,然后将其传递给WinMain函数(对于 GUI 程序),或者将其拆分为参数数组 ( argv) 并将其传递给main(对于控制台程序)。

一些反汇编程序(例如 IDA)可以自动识别 CRT 代码并只显示main/WinMain函数,在这种情况下,您可以只查看相应的参数(argv/argclpCmdLine)。