■ 威海職業學院 趙永華
編者按:宏代碼注入技術是一把雙刃劍,在給人們帶來便利的同時,也潛藏著安全風險。一些惡意軟件往往采取此類方式對用戶網絡和應用實施攻擊。因此,我們應當學會辨別其好壞。
代碼注入是Windows系統中常用的一種幕后技術,常用于改寫DDL文件,所以也稱作DLL注入,其實有時也會修改其他文件。
代碼注入技術是一種典型的雙刃劍,例如安全工具通過代碼注入瀏覽器去監控網絡流量,從而阻止危險內容。但是一些惡意軟件采用相同手段,其目的卻是竊取用戶隱私。
而且,很多應用程序將代碼注入作為一種技巧,為用戶解決實際問題,比如改變桌面布置,美化系統界面。AutoHotkey程序可以通過代碼注入編寫系統腳本完成一些操作任務。NVIDIA顯卡功能是通過注入DLLs完成圖顯,一些應用程序注入DLLs提供菜單項,一些工具軟件通過代碼注入提供自動搶票和點贊等。
代碼注入也會帶來bugs,比如在 Windows系統下使用Chrome瀏覽器時,代碼注入有時會引起Chrome崩潰。Windows中的瀏覽器Edge出于安全考慮,會阻止代碼注入修改瀏覽器設置。我們很難簡單說代碼注入是好是壞,代碼注入為用戶帶來了方便,而且有時是一種必不可少的功能,但它確實有時又會帶來隱患,那么我們如何判定它是好是壞呢?
對此,微軟網站提供了一個檢查工具Process Explorer,它頗似一個升級版的Windows任務管理器,它可以讓我們查看當前系統DLLs的詳情,其下載地址如下:
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
運行Process Explorer后,進入菜單“View→Lower Pane View→DLLs”(如圖 1)。

圖1 Process Explorer顯示DLLs
此時我們選擇其中的某個進程,即可查看其相應的 DLLs,通過其中的“Company Name”欄目可以了解其來源,比如可以看到是“Microsoft Corporation”或者“Google Inc.”等等,但是在這里我們很難有更多的行為,比如我們不能卸載具有代碼注入行為的那些程序。
代碼注入行為其實并不會修改當前系統中的底層應用,只是當那些底層應用開始運行后伺機執行代碼注入到進程中,從而改變功能和作用。而Windows系統本身不僅不會阻止這種行為,而且其提供的形形色色的APIs本質上也屬于代碼注入。有時有些游戲玩家會改變應用的底層代碼,也就是替換掉游戲原來的DLL,這種行為并不屬于代碼注入。