如何获取NSIS安装程序支持的所有自定义CLI参数?
获取NSIS安装程序自定义CLI参数的方法
直接反编译提取脚本片段
NSIS安装程序的参数逻辑都写在编译前的.nsi脚本里,可通过NSIS官方工具提取核心脚本:
- 下载NSIS完整工具包,找到
makensis.exe - 在命令行执行反编译命令:
makensis /X"SetCompressor /FINAL lzma" /D__COMPRESSOR_LZMA__ /D__LZMA__ /D__ZIP__ /D__SOLID__ /D__SOLID_LZMA__ /U your_installer.exe - 查看生成的
.nsi文件,搜索${GetOptions}、CommandLine相关代码块,这里会明确列出所有自定义参数(包括你已知的/op=n)
动态调试追踪参数解析流程
用调试工具直接跟踪安装程序的参数处理逻辑:
- 用x64dbg或OllyDbg加载目标安装程序,设置断点在
GetCommandLineW(或GetCommandLineA)函数上 - 启动程序触发断点后,查看完整命令行参数,再单步跟踪代码执行,重点关注字符串比较指令(如
strcmp、wcscmp) - 这些比较指令会匹配自定义参数的名称,借此可以找出所有支持的参数
枚举常见参数模式反向验证
基于NSIS脚本的常规写法,尝试以下参数格式,结合安装行为变化推导参数:
- 键值对格式:
/KEY=VALUE,比如/INSTALLPATH=C:\Program Files\YourApp、/CONFIG=custom.ini - 布尔型参数:
/KEY,比如/NOSTARTMENU、/SKIP_DESKTOP_SHORTCUT - 冒号分隔格式:
/KEY:VALUE,比如/op:1(对应你已知的/op=n) - 针对已知的
/op=n,可以尝试/op=1、/op=2等不同值,观察安装过程的差异,反向判断参数的作用
避坑提示
- 7zip只能解压安装程序的资源文件,无法提取核心脚本逻辑,不要依赖这种方法
- 用Procmon监控时,要精准过滤目标进程,重点对比不同参数下注册表、文件系统的操作差异,可能间接发现参数对应的功能
内容的提问来源于stack exchange,提问作者v.doro2
相关产品推荐
相关产品推荐

