凡事都有兩面性,各有利弊??茖W技術(shù)的發(fā)展給人們帶來便利的同時,也帶來了意想不到的隱患。有越來越多的手機和手機應(yīng)用,但你覺得越來越安全嗎?由于安卓系統(tǒng)的開源性,手機應(yīng)用很容易被黑客攻擊,被注入惡意代碼,并在打包兩次后重新上市。在這里,損失不僅是手機用戶,也是手機應(yīng)用開發(fā)者和開發(fā)者。現(xiàn)在,尋求手機應(yīng)用的加密方案,保護手機應(yīng)用的安全迫在眉睫!
偽加密1偽加密是安卓4.2.x系統(tǒng)發(fā)布前的手機應(yīng)用加密方案之一。APK(壓縮文件)被java代碼偽加密。它的修改原理是將最后一個第5字節(jié)修改為連續(xù)的4位字節(jié),標記為“PK0102”。奇數(shù)表示不加密,偶數(shù)表示加密。
2
雖然偽加密在防止破解方面可以發(fā)揮一定的作用,但也會有問題。首先,市場無法對通過偽加密加密的APK進行安全檢測,導致一些市場拒絕此類APK上傳。其次,偽加密的加密方法和解密方法已經(jīng)公布,導致安全性大大降低。第三,安卓4.2.x系統(tǒng)不能安裝偽加密APK;;最后,偽加密對APK來說只是一個簡單的保護,但在java層源代碼外殼保護、核心so庫、資源文件、主分發(fā)文件和第三方架子包中沒有保護。手機應(yīng)用加密方案
結(jié)束混淆保護1將具有特定含義的原始類名、變量名和方法名修改為人們無法理解的名稱。例如,方法名getUserName對方法名進行了編程。手機應(yīng)用加密方案
混淆保護只會增加代碼閱讀的難度,破解它基本上是沒有用的!手機應(yīng)用加密方案
結(jié)束運行時驗證1運行時驗證主要是指在代碼啟動時在本地獲取簽名信息,然后檢查簽名信息以確定您的應(yīng)用程序是否是真實的。如果簽名信息不是真實的,它將提示盜版或直接崩潰。當然,您可以將必要的數(shù)據(jù)放在服務(wù)器端。手機應(yīng)用加密方案
破解:找到smali文件中的部分,判斷它是否相等。更改為常量true,即無效。
簡而言之,在反編譯一些apk之后,只要是用java代碼寫的,總是會有smil文件。對于smil文件,如果你耐心閱讀,你仍然可以看到一些關(guān)鍵代碼。
3與應(yīng)用程序相比,游戲apk使用由c++和c#編寫的跨平臺程序,因為它使用cocos2d-x或unity3D,并在apk中使用JNI。因此,如果沒有smali,靜態(tài)apk數(shù)據(jù)包就不會被破解。手機應(yīng)用加密方案
當然,當apk運行時,它會加載。*如此進入記憶。動態(tài)也可以在內(nèi)存中捕獲相應(yīng)的數(shù)據(jù)。然而,NDK不是一個等級關(guān)系與斯馬利裂解。手機應(yīng)用加密方案
終端使用第三方手機應(yīng)用加密平臺1進行實例分析
步驟閱讀2這個類. dex是原始代碼。沒有混淆和手機應(yīng)用加密方案保護。反編譯,源代碼無疑是暴露的。
這個類. dex是由AndroidAPK加密的?,F(xiàn)在看看反編譯后的效果。手機應(yīng)用加密方案
-3步讀取4NativeApplication類,load exec.so和execmain.so,應(yīng)該是固定代碼,是源代碼
-4步讀取5從應(yīng)用程序繼承的超級應(yīng)用程序,程序主條目:
-5步閱讀6在手機APP加密方案后的apk包中,有一個附加的資產(chǎn)目錄。在這個目錄下,有一些數(shù)據(jù)庫。事實上,這是原始的分類索引
-6步讀取結(jié)束摘要Agami手機應(yīng)用加密方案步驟:
1.使用安卓加密算法將原始分類索引加密成資產(chǎn)
2.將預先編寫的jni代碼和相應(yīng)的classex.dex替換到原來的位置
3.程序安裝運行后,首先運行手機APP加密方案的加密外殼程序,并在jni中動態(tài)加載原classex.dex代碼,從而達到保護手機APP加密方案的目的。
源代碼classex.dex是隱藏的,當它是靜態(tài)的時候沒有辦法破解它。
目標