Multicall Binary

Multicall Binary 指的是一個 binary 檔, 可以同時包含好幾隻不同的程式, 依照執行這 binary 的方式而決定要跑裡面的哪種程式, 這技巧的知名例子就是 BusyBox, 把撰寫的許多 command 編在一起, 共用許多部份, 藉此達到省空間的目的 (BusyBox 的目標是跑在資源相對有限的嵌入式系統), 達到這效果的方式則是利用 argv[0] 來做判斷, 如果名稱是內部程式之一的話, 就去執行該程式的部份, 因此可以看到諸多個指令都只是 BusyBox 的 symbolic link, 但執行起來效果卻不同。

例如這個樣子:

-rwxr-xr-x 1 root root 931664 Aug  9 13:19 busybox*
lrwxrwxrwx 1 root root      7 Aug  9 13:20 ls -> busybox*
lrwxrwxrwx 1 root root      7 Aug  9 13:20 pwd -> busybox*