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

  關注一款app好久了,這款app爲了防止別人逆向破解拉取數據作了不少工做:php

防止別人修改apk包,執行關鍵動做時對dex文件進行md5驗證;java

防止用戶調用接口批量拉數據,對返回的web網頁裏我的信息進行加密,只有用戶點擊webview相關控件後,才js調用java代碼經過jni調用底層native代碼解密後,彈出toast顯示我的信息;android

  我按照逆向工程一向的思路:web

1. 先apk轉化jar,查看jar代碼,被混淆了,app

2. 混淆只是最低級層次的防禦,費點時間,主要邏輯點仍是能看出來的,理清邏輯後開始反編譯,smali文件插入本身的代碼,從新打包運行,發現有些關鍵動做沒法執行,失敗;工具

3. 仔細研究才發現作了包校驗;又接着看混淆後的代碼,發現其網頁解密是經過jni調用底層so文件,因而本身寫一個android的demo,嘗試調研so中解密方法,返回空串,失敗;ui

4. ida 打開so文件,查看arm彙編代碼,發現解密方法裏也有包校驗,因而修改so文件,繞過包校驗,從新嘗試調用,成功加密

 

所用工具:接口

anti-android:集成了dex2jar,jad,apktoolmd5

jd-gui

arm彙編查看機器碼: http://bbs.pediy.com/showthread.php?p=1156571

ida pro

Winhex

相關文章
相關標籤/搜索