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