cruiseton wrote:
直接問了 ChatGPT
any windows software that can analyse a exe file and try to figure out its command line parameters ? 中文
有,而且如果你的目的是真正想「分析一个 EXE,尽量猜出它支持哪些命令列参数」,Windows 上有几款工具很适合。
我最推荐这几个
软件 主要用途 难度
Detect It Easy (DIE) 判断 EXE 是什么编译器/语言、是否加壳 ⭐
Sysinternals Strings 从 EXE 找出 --xxx、/xxx、-xxx、Usage/Help 等文字 ⭐
Process Monitor (Procmon) 观察程序实际被其他程序用什么参数启动 ⭐⭐
Ghidra 反汇编/反编译,深入分析参数解析代码 ⭐⭐⭐⭐
x64dbg 动态调试,直接观察程序如何处理命令列参数 ⭐⭐⭐⭐
最简单的方法:Strings
先用 Sysinternals Strings 扫描 EXE。
例如:
strings.exe xxx.exe | findstr /i "help usage option command"
或者直接:
strings.exe xxx.exe | findstr /i /c:"--" /c:"/" /c:"-"
有时候可以直接找到:
Usage: xxx.exe [options]
-h
--help
-i
--input
-o
--output
--config
--verbose
/silent
/install
/uninstall
这种情况下基本就能猜出参数了。
如果 EXE 没有明显的文字
这时候我会推荐 Ghidra。
它可以反编译 EXE,然后搜索:
GetCommandLineW
CommandLineToArgvW
__argv
argv
argc
再往下追踪参数比较代码。
例如可能发现类似:
if (strcmp(argv[1], "--config") == 0)
或者:
if (wcscmp(arg, L"/silent") == 0)
这样就可以比较可靠地把参数找出来。
一个非常实用的方法:Procmon
如果这个 EXE 本来就是由另外一个程序启动的,Procmon 反而可能是最简单的。
例如你发现:
launcher.exe
↓
mytool.exe
你想知道 launcher.exe 到底给 mytool.exe 传了什么参数。
Procmon 可以看到类似:
Process Create
C:\Program Files\xxx\mytool.exe
--mode convert
--input "C:\test\a.dat"
--output "C:\test\b.dat"
这种情况甚至不需要逆向 EXE。
如果你想让我帮你判断某个 EXE
你可以直接把 EXE 文件上传给我。我可以先帮你从静态信息入手,看看里面有没有明显的:
--xxx
-xxx
/xxx
argc/argv
GetCommandLine
Usage
Help
错误提示
配置文件参数
输入/输出参数
隐藏参数
<button class="QZcSVW_Button shrink" type="button" data-color="primary" data-variant="outline" data-pill="" data-size="lg" aria-disabled="false" data-w-component="button">上傳檔案</button>
如果你有一个具体的 EXE,直接传上来通常比我泛泛介绍工具更有用——我可以告诉你应该从哪里下手,以及哪些参数最值得测试。
AI 文 就 不看了.
★★★ "我要留言" 不回, 只回 1 般回文. ★★★