防止apk反編譯的有效方法?

Tags: 反編譯,

由於安卓的開放性,apk文件很容易暴露出來,這就讓一些不法分子有機可乘。他們想方設法把apk破解反編譯,修改加入自己的代碼後二次打包,然後投入市場,以此來牟取不法利益。

作為開發者或開發商,是應用程序產生的源頭。建議將安全融入到應用開發生命週期當中去,使用一些第三方APP安全服務平臺工具如 愛加密。在開發階段進行安全測試和檢測,及時發現應用程序缺陷和安全漏洞,減少不必要的安全風險;在應用發佈階段進行應用安全加固,增加應用安全強度,防止應用被破解和二次打包;在運營階段進行渠道監測,及時發現盜版應用,保障自身合法權益不受惡意損害。

工具/原料

apk源文件

app安全檢測平臺

apk反編譯步驟

首先我們找一個經過混淆代碼和防二次打包的Android APK,這樣的Android APK包不難找!只要到APK源代碼安全檢測平臺,檢測一下就可以知道做過什麼保護。

通過圖片我們可以看到這款Android APK做了混淆代碼和防二次打包保護,對於其他的Android APK中的DEX、RES、SO庫等文件未做任何保護。下面我就通過對APK源代碼的安全分析,看看這Android APK的安全怎麼樣!

防止apk反編譯的有效方法

首先我先將APK反編譯,看看能不能拿到代碼!經過簡單的反編譯我們就可以輕鬆的拿到APK裡面的源代碼,下面我們就修改一下里面的東西,看看之前的APK保護是否有效!

防止apk反編譯的有效方法

1、配置用戶權限(重要)

2、添加必須組件(重要)

完成這2個步驟我們的sdk就已經植入成功了,如圖:

防止apk反編譯的有效方法

那麼我們怎麼解決這款APK做的保護呢?不用著急,我們慢慢來!

首先我們發現當登錄的時候會提示簽名信息不一致,導致不能登錄!經過分析發現他是給apk做了簽名信息認證,這時我們需要找到他獲取簽名信息的地方,如下圖:

防止apk反編譯的有效方法

到這一步就可以繞過這款APK的二次打包防護了,這樣我們就可以登錄了!登陸後我們可以看到這款Android APK已被植入廣告!

防止apk反編譯的有效方法

防止apk反編譯

這裡我要簡單介紹一下APK的混淆代碼、防二次打包的加密技術是怎麼回事!

混淆代碼:Android APP的源碼進行混淆後混淆器將代碼中的所有變量、函數、類的名稱加密為簡短的英文字母代號,在APP被破解後增加破解者對代碼的閱讀難度。 但是混淆的功效只能運作在APP已經被破解後,而且只是增加破解者的難度時間,對其防止破解的作用意義不是很大。

防二次打包:二次打包是指將APK拆包後重新打包,二次打包必將丟失原有的簽名。大多數的Android開發者都是將簽名信息作為認證標準,所以只要原有的簽名信息改變,APK就無法正常運行。但是如果將這個認證信息功能屏蔽掉,防二次打包就失效了!

通過對APK的反編譯我們知道,混淆代碼和防二次打包的APK加密技術已經無用!下面我們通過對DEX、RES、SO庫等主要Android APK文件進行加密,看看是否能有效防止APK被破解和反編譯!

我們先通過APK安全保護平臺,對這款Android APK進行安全保護。步驟如下:登錄/註冊→上傳APK→等待系統加密→完成後下載APK→給APK簽名→完成!

注意:在app安全檢測平臺,個人信息要填寫完整,否則無法正常使用。APK加密完成後,系統會發出郵件通知加密完成。最後下載APK包再次完成簽名,就可以正常使用了!

我們來看一下加密後的效果。我們先解壓,然後反編譯。當我們解壓的時候會得到“解壓文件損壞”的提示,而我們打開源代碼卻看到裡面的代碼已經和原來的不一樣了!

防止apk反編譯的有效方法

注意事項

APK包小於100M

使用app安全檢測平臺時,個人信息要填寫完整!

相關問題答案