關注一款app很久了,這款app為了防止別人逆向破解拉取數據做了很多工作:
防止別人修改apk包,執行關鍵動作時對dex文件進行md5驗證;
防止用戶調用接口批量拉數據,對返回的web網頁里個人信息進行加密,只有用戶點擊webview相關控件后,才js調用java代碼通過jni調用底層native代碼解密后,彈出toast顯示個人信息;
我按照逆向工程一貫的思路:
1. 先apk轉化jar,查看jar代碼,被混淆了,
2. 混淆只是最低級層次的防護,費點時間,主要邏輯點還是能看出來的,理清邏輯后開始反編譯,smali文件插入自己的代碼,重新打包運行,發現有些關鍵動作無法執行,失敗;
3. 仔細研究才發現做了包校驗;又接着看混淆后的代碼,發現其網頁解密是通過jni調用底層so文件,於是自己寫一個android的demo,嘗試調研so中解密方法,返回空串,失敗;
4. ida 打開so文件,查看arm匯編代碼,發現解密方法里也有包校驗,於是修改so文件,繞過包校驗,重新嘗試調用,成功
所用工具:
anti-android:集成了dex2jar,jad,apktool
jd-gui
arm匯編查看機器碼: http://bbs.pediy.com/showthread.php?p=1156571
ida pro
Winhex