SO庫文件是Linux的動態鏈接庫,作用相當于windows下的.dll文件。它是采用C或C++源碼編寫的二進制文件。相比與采用JAVA編寫的DEX文件,其反編譯難度更大。因此,一般開發者認為SO文件相對而言更加安全,并將許多核心算法、加密解密方法、協議等放在SO文件中。 但是,黑客可以通過反編譯SO庫文件,竊取開發者花費大量人力物力財力的研發成果,進行創意竊取或二次打包,使得開發者和用戶利益受損。
對SO文件的源碼進行混淆,降低黑客反編譯的可讀性,增加反編譯難度。
使用自定義指令集對SO文件進行虛擬化保護,增加逆向分析的難度。
對整個SO文件進行加密壓縮,包括代碼段、符號表和字符串等,運行時再解密解壓縮到內存,從而有效的防止SO數據的泄露。
主要功能 | 描述 |
---|---|
SO加殼 | 對C/C++源碼編譯出來的SO文件進行加殼,使SO文件無法正確反編譯和反匯編。 |
SO源碼虛擬化保護 | 對SO文件進行虛擬化保護,實現數據隱藏、防篡改、防Dump,增加逆向分析的難度。 |
SO防調用 | 對SO文件進行授權綁定,防止SO文件被非授權應用調用運行。 |
SO Linker | 代碼段加密壓縮、字符串加密壓縮、導出表加密壓縮、函數動態加解密。 |
SO源碼混淆 | 常量字符串加密、控制流扁平化、分裂基本塊、等價指令替換、虛假控制流、控制流間接化。 |