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