2

我正在与 PEB 合作。我设法进入_RTL_USER_PROCESS_PARAMETERS。我的目标-> 仅通过使用二进制文件(.exe 文件)来了解 argc 和 argv 的内存地址。(如果可能的话,它们的值)

我设法通过在 ac 程序中嵌入 asm 来进入它

mov eax:fs[0x30]
mov [PEBaddress] , eax

mov ebx, [eax+0x10]
mov [ProcessParameters] , ebx

我通过研究 Windows 调试器下的二进制文件得到了偏移量 0x30 和 0x10

现在在 Processparameters 地址的 0x40 偏移处是字符串命令行,我相信它是一个缓冲区,我进一步相信它保存了 argc 和 argv 的值。

问题:我想读取该缓冲区,并获取 argc 和 argv 的地址值(传递给进程的命令行参数)任何人都可以通过向我提供读取缓冲区的代码(因为它是 Unicode 字符串)和获取所需的地址。

还有其他方法可以完成这项工作吗?(您也可以建议我,不要让我选择在 main 中打印 argc 和 argv 的地址)我想要静态答案。

4

1 回答 1

2

Windows 不会通过argcargv进入程序。它以字符串的形式传递完整的文字命令行。如果所讨论的程序甚至是 C 程序,则此解析由嵌入在该程序中的 C 运行时库完成。

于 2012-10-19T18:43:37.687 回答