是否有一種方法或程序可以使另一個程序認為我正在使用其他系統?
例如,假設當前我在32位Windows 7上,並且我希望該程序能夠檢測到Windows10 64位或Windows XP。
我可以對硬件做類似的事情嗎?我能告訴一個程序我是從2003年初開始在PC上運行的,即使它是從去年(2019年)開始的?
是否有一種方法或程序可以使另一個程序認為我正在使用其他系統?
例如,假設當前我在32位Windows 7上,並且我希望該程序能夠檢測到Windows10 64位或Windows XP。
我可以對硬件做類似的事情嗎?我能告訴一個程序我是從2003年初開始在PC上運行的,即使它是從去年(2019年)開始的?
厚臉皮的答案:我認為您將要發明虛擬機。
為了欺騙硬件,看起來像是2003年的主板您需要處理諸如編寫CPU指令翻譯層之類的事情,以便該程序提供2003年代的CPU二進制指令,然後您的層將它們轉換為您的2019硬件可以理解的指令。為了欺騙操作系統,使其看起來像Windows 7 32位,您需要將所有二進製文件和其他文件隱藏在 C:\ Windows
, C:\ Program中文件
等顯然是Windows 10安裝的一部分,而是“偽造”具有所有Windows 7 32位文件的完整文件系統。您還需要圍繞Windows 10內核進行包裝,以使程序可訪問的內核API的外觀和行為類似於Windows 7內核。即你不能真的“偽造”這個;您基本上需要在Windows 10中模擬完整功能的Windows 7 32位安裝。
完成所有這些操作後,您基本上已經發明了虛擬機 。那麼,為什麼不下載VirtualBox,將硬件仿真設置為2003年以前的硬件,然後在其上安裝32位Windows 7呢?
根據所需的“技巧”級別,您可以使用內置的兼容性功能來做到這一點。Windows支持以特殊模式運行的程序,這些模式以各種方式模擬較早版本和/或較舊硬件。仿真不是完美的-如果您看一下,很容易就能知道它正在被使用,並能告訴您實際的操作系統是什麼-但它會滿足於一個認為只能在Windows 2000或更高版本上運行的軟件只知道256色模式。/ code>(對於Linux上的Windows代碼)或 wsl
(Linux的Windows子系統,運行未修改的ELF64 Linux二進製文件和需要Linux的腳本,但需要Win10)。再次,任何人都可以發現它,但是它將欺騙僅調用程序或庫調用以吐出OS名稱/版本的程序。
您可以在一定程度上做到這一點,但這並不容易。
首先,您可以嘗試WINE(Linux的Windows兼容層)。您可以輕鬆設置要模擬的Windows版本。缺點是應用程序兼容性可能會受到影響,如果您的應用程序無法正常工作,則可能需要找出解決方法以使其正常運行(如果有的話)
第二個QEMU是最適合您的第二個要求(隱藏硬件詳細信息)的方法。QEMU是一種免費的虛擬機軟件,之所以在諸如VMware或VirtualBox之類的系統中提及它,是因為它使您可以以可用性為代價,對要構建的計算機類型進行更多控制。
例如,可以使用 -cpu
標誌指定要模擬的CPU類型。例如,您可以使用 -cpu pentium3
來模擬奔騰3 CPU。這就是已安裝的來賓操作系統以及程序所看到的。
有沒有辦法或程序讓另一個程序認為我使用的是其他系統?
是的,這很常見。
例如FreeBSD有一個“ Linuxulator”,可以運行Linux二進製文件。這既不在虛擬機中,也不在仿真中。它是Linux二進製文件的另一套系統調用。通過可執行文件的ELF標頭AFAIK來檢測二進製文件是使用本機FreeBSD系統調用還是Linux系統調用。
WINE(在Linux或BSD系統上運行Windows本機程序)中使用了類似的原理。,以及Windows Services for Linux(在Windows上運行Linux本地程序)的版本1中。
僅在某種程度上取決於程序。
每個現代的OS都有一個系統調用,該系統調用僅返回版本號和/或字符串。
當然,您可以偽造那。Windows甚至在UI中都有此功能(搜索“兼容模式”)。
如果程序超出了此範圍(明確嘗試某些OS功能或在特定位置搜索特定文件),則必須對檢測機制進行逆向工程,並認真思考如何使其傻瓜。
請參閱@Mike答案-您將迅速發明VM和仿真器。甚至仿真器也不是完美的解決方案。
這取決於您要“傻瓜”編程的內容。它是一個特定程序嗎?在這種情況下,也許要仔細研究它如何推斷出運行哪種操作系統和計算機。如果僅使用一種或幾種方法來檢測它,則可以找到簡單的方法來覆蓋這些調用,甚至修補程序可執行文件本身。
您正在尋找一種可以欺騙任何或許多程序的通用解決方案,正確的和答案都是在某種模擬環境中運行該程序,例如Wine或Qemu等系統模擬器。/ p>
使用“實際”示例進行編輯:
在Windows 10上使用 WSL2,您可以在Windows中安裝Wine並運行OLD WindowsWindows 10中的程序,否則可能無法在Windows 10中運行。使用 winetricks,您可以安裝舊的系統庫並調整Wine的行為使其類似於舊的Windows版本。
只需在此處添加我的10位。
如果上下文是基於Web的,那麼絕對可以使用開發人員工具更改USER AGENT字符串。
對於Chrome,請轉到開發人員工具(Ctrl + Shift + I)。
在“網絡”選項卡中,依次轉到“網絡條件”和“用戶代理”。
取消選中“自動選擇”複選框。現在,您可以隨意選擇用戶代理,也可以對其進行編輯。
注意:此修改是臨時的,如果刷新或關閉開發人員工具,此修改將恢復。