您好,登錄后才能下訂單哦!
如何理解Linux ARM及其應用保護,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Linux ARM 在 IoT 和 AI 領域有著廣泛的應用,大量使用在工業控制、智慧生活、城市管理等場景下,為 人們的工作和生活發揮著重大作用。
l 工業控制:智能AI、機器視覺、智能裝備、無人駕駛等;
l 智慧生活:智能家居、數字醫療、定位導航等;
l 城市管理:智能交通、環境監測、智能安防、智能建筑、智慧物流等
越來越多的應用切換到 ARM 架構是一個趨勢。但目前絕大部分應用還都運行在 X86 架構的 CPU 上,開 發者需要將應進行某種形式的「重構」才能運行在 ARM 架構的設備上。主要原因是 X86 與 ARM 采用了 不同類型的指令級,需要完美的處理指令級上的差異,應用才能正常運行。
不同類型的開發語言,在遷移過程中的難度和工作量是不同的。最簡單的是解釋型語言,例如 Python 等,如果不依賴 C 、C++ 等編譯型語言的公共組建,可以直接運行在 ARM 架構下。對于 C、C++、Go 等 編譯型語言編寫的應用程序,需要采用 ARM64「aarch74」編譯器重新編譯后才能運行。因為編譯型語言先要被「翻譯」成匯編,然后再轉換成二進制指令。對于極少數的匯編語言,則需要使用 ARM 指令級改 寫一遍了。
背景
目前,大量的 Linux ARM 應用是由 Linux X86 遷移而來,由于指令集的變化,應用做了相應的適配,原有 的保護方案隨著指令集變化也失去了作用,開發者需要重新調整安全方案。
方案
代碼虛擬化
程序的執行依賴 CPU 對符合指令集規范的代碼進行解析處理。如果指令集不符合 CPU 的規定,就無法識別。
代碼虛擬化,是將原指令,通過自定義的方式進行的變形處理,生成一種新的指令集,這種指令集,需 要通過能夠解析該指令的特殊的解釋器才能夠運行,這種通過特殊的解釋器運行變形的虛擬指令的過 程,就是代碼虛擬化。
傳統的加殼產品,在對抗靜態分析會有不錯的效果,但運行后會在內存里暴露原有的代碼,黑客 Dump 內存后,進行必要的修復,即可使用 IDA 進行閱讀分析,但使用代碼虛擬化以后,程序運行時不會將虛 擬指令集還原,即便被 Dump,IDA 也無法閱讀被虛擬化后的代碼,黑客只能嘗試分析復雜度更高的虛擬 機,極大的提升了代碼分析的難度和需要的時間。
由于 ARM 指令集與 X86 相差較大,原有的 Linux X86 的虛擬化方案,并不能應用在 Linux ARM 平臺上, 所以,開發者需要能夠支持 Linux ARM 的代碼虛擬化方案。
代碼混淆
代碼混淆亦稱花指令,是將計算機程序的代碼,轉換成一種功能上等價,但是難于閱讀和理解的形式。 混淆就是對發布出去的程序進行重新組織和處理,使得處理后的代碼與處理前代碼完成相同的功能,而 混淆后的代碼很難被反編譯,即使反編譯成功也很難得出程序的真正語義,通過進行代碼混淆可以有效 提升應用被逆向破解的難度。
代碼混淆對于擾亂原始指令、防止靜態分析和反編譯具有極大的幫助。
代碼加密
代碼加密是使用 SMC(Self-Modifying Code)技術,將原始的函數加密,在函數被執行時才將函數解密并 執行的保護方式。代碼加密尤其適合 Linux ARM 平臺,因為其運行效率高,幾乎沒有性能損失。
Virbox Protector 作為深思數盾安全實驗室在代碼保護方向上的主打產品,成功將代碼虛擬化從 X86 平臺 移植到 ARM 平臺,并結合 ARM 指令集特點進行了專門優化,結合代碼混淆、智能壓縮等主流功能,對 于防止動態分析和靜態分析有著極強的防御能力。
Virbox Protector 基于二進制文件操作,開發者無需提供源代碼,無需調用 API。
保護效果如下圖:
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。