逆向工程-對native層的一次簡單逆向實踐


  關注一款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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM