某個 程式 Setup.exe 自動判斷 OS 位元 自動安裝,
我 的 Windows 11 23H2,
它 自動安裝 64 位元 版本,
但 我想要 留 32 及 64 位元 2 個 版本,
問了 2 大 AI 沒答案,
查 程式 官網 也沒有 說明(FAQ).

只剩 最後 1 招,
直接 動態 追 程式,
原來 有 隱藏 命令列 參數,
試了下 果然 安裝 32 位元 版本.

強制 安裝 32 位元 版本

強制 安裝 32 位元 版本
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
“逆向開發工程師”
改天拿閒置老I5 4代電腦來玩看看
看看Win11 LTSC版本可不可以安裝32位元
巷口水果攤 wrote:
“逆向開發工程師”


不是.
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
grason00 wrote:
改天拿閒置老I5 4代電腦來玩看看
看看Win11 LTSC版本可不可以安裝32位元


不是 這個 意思.
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
你硬裝32位元根本沒有任何意義

除了自找麻煩

因為並不是你裝了32位元就能完美向下相容

所以安裝32位元版本的差別就是你跑不了x64的東西而已


真正需要安裝32位元的大概就是win xp而已
pc8801 wrote:
你硬裝32位元根本沒有任何意義
除了自找麻煩
因為並不是你裝了32位元就能完美向下相容
所以安裝32位元版本的差別就是你跑不了x64的東西而已
真正需要安裝32位元的大概就是win xp而已


>你硬裝32位元根本沒有任何意義
MS 目前只有 Windows 11 是 唯 1 的 只有 64 位元版本,
其它 的 Windows 都有 32 位元版本,
這 意謂著 64 位元程式 無法 執行,
只能 執行 32 位元程式.

>因為並不是你裝了32位元就能完美向下相容
程式 只要 符合 最低標 通常 就能執行,
這 與 32/64 位元 程式 無關,
我 Windows 11 23H2 有 95% 以上 的 程式 只 執行 32 位元版本,
賊少數 程式 有 大記憶體 需求 必須使用 64 位元程式.

某個 知名的 商業軟體 不同版本 對 OS 的 最低標 要求,
其實 實務上 這只是 標註 通常 能 再低.

★★★ "我要留言" 不回, 只回 1 般回文. ★★★
64位元OS硬要裝32位元軟體意義只剩減少記憶體的使用

對記憶體少的機器是不無小補啦

樓主查出只要 setup.exe 參數只要下 /32 就可以強迫該軟體安裝32位元版本
cruiseton wrote:
64位元OS硬要裝32位元軟體意義只剩減少記憶體的使用
對記憶體少的機器是不無小補啦
樓主查出只要 setup.exe 參數只要下 /32 就可以強迫該軟體安裝32位元版本


>64位元OS硬要裝32位元軟體意義只剩減少記憶體的使用
主要是 能 在 更多的 OS 執行.

例:
A 程式 同時 有 32 及 64 位元 For Windows XP 版本.

A 程式 32 位元 版本 可能在 如下 OS 執行 :
Windows XP/Vista/7/8/8.1/10 32 位元 OS
Windows XP/Vista/7/8/8.1/10/11 64 位元 OS
總共 6+7=13 個 OS.

A 程式 64 位元 版本 可能在 如下 OS 執行 :
Windows XP/Vista/7/8/8.1/10/11 64 位元 OS
總共 7 個 OS.

顯然 32 位元程式 有 優勢.

>樓主查出只要 setup.exe 參數只要下 /32 就可以強迫該軟體安裝32位元版本
並 不是不是不是 所有 Setup.exe 都有 額外的 參數,
我 是 動態 追 程式 才 看到,
本來 是 想 直接 修改 關鍵點 強迫 跳轉到 安裝 32 位元程式(正常情況 是 這種),
我 測試的 程式 是 1 個 Setup.exe 同時內含 X86/X64/ARM64 3 個版本,
自動偵測 目前 OS 自動安裝 X86/X64/ARM64 其中的 1 個版本.

PS:
這表示 X86 程式 仍然 有在使用,
即使 X64 OS 已推出 21 年(只 算 86-64 (AMD64/EM64T) 架構).

Windows XP X86 正式推出 日期 2001 年 10 月 25 日
Windows XP X64 正式推出 日期 2005 年 4 月 25 日
★★★ "我要留言" 不回, 只回 1 般回文. ★★★
直接問了 ChatGPT
any windows software that can analyse a exe file and try to figure out its command line parameters ?                     中文

有,而且如果你的目的是真正想「分析一个 EXE,尽量猜出它支持哪些命令列参数」,Windows 上有几款工具很适合。

我最推荐这几个


<thead data-start="73" data-end="91"></thead>
软件 主要用途 难度
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,直接传上来通常比我泛泛介绍工具更有用——我可以告诉你应该从哪里下手,以及哪些参数最值得测试。
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!