編輯:關於android開發
【版權所有,轉載請注明出處。】
因公司項目需要對app加固,經過本人數月的研究,實現了一套完整的仿第三方加固如愛加密等的加固方案(第三方加固價錢不菲,一整套針對金融app方案10~20萬/年),從對原項目java源碼dex文件加密在新項目中jni層解密之並替換當前進程到jni的反調試和linux對其加殼等一系列完整的方案及代碼實現。在這准備做成一套教程供大家參考和互相學習指出不足之處。
因對純java的破解過於簡單所以我的加固方案是建立在jni技術的前提下,java的破解就不介紹了,apktool能反編譯其源碼。但用jni加密並對其加固了並不代表就萬無一失了,最安全的方案就是建立在服務端不信任任何客戶端發來的請求的前提下,策略是只要接口訪問本身是合法的就是安全的。好了,廢話不多說了,加固只是提升一個安全檔次而已。
要想對自己的app加固首先得學會破解才能知道是不是真的加固成功了。這裡就先介紹一下最常見的也是最強大的破解技巧——IDA動態調試:
項目jni的關鍵代碼(項目地址見文章底部),獲取當前程序的包名com.example.shelldemo和com.example.nocrack對比,正常運行結果是this app is illegal,編譯jni我就不介紹了,項目中也帶了編譯好的so
1.工具介紹
IDA6.5,本人使用的所有IDA版本中只有這個版本能成功真機動態調試,手機系統版本為4.4及以下,需root
2.准備工作
A.傳輸android_server
首先找到IDA目錄下的dbgsrv目錄下的android_server,將其用adb推送到手機中,命令如下:
adb push android_server /data/local/tmp/
在手機上使用root explorer並賦予root權限檢查手機的/data/local/tmp下是否有android_server,這個文件是連接手機和IDA調試器的工具。
B.啟動android_server
分別執行以下命令
adb shell
su
chmod 777 /data/local/tmp/android_server
/data/local/tmp/android_server
C.重定向調試端口
這時啟動另一個命令窗口並執行如下命令
adb forward tcp:23946 tcp:23946
23946是和IDA上設置的端口對應
3.配置IDA
首先在手機上運行項目程序,然後:
選擇對應的項目程序包名
然後就會出現
直接cancel,接下來的對話框點擊OK或關閉按鈕都行,進入
4.選擇對應的so及將要調試的函數
找到項目的so文件
雙擊進入後找到對應的函數名
雙擊進入
往下拖,拖到關鍵代碼處,按F2設置斷點,然後按F9等待下次運行至此函數
在手機上點擊按鈕“檢測是否被crack”後進入斷點,並能夠單步執行,F8-step over,F7-step into,單步運行到這一行的時候
關鍵寄存器就是R0,觀察下面一行BEQ loc_75D09ED0,意思是如果上面一行CMP比較指令的R0等於0則跳轉到loc_75D09ED0,也就是running successfully那段代碼,代表破解了。
那麼現在來修改R0的值為0:
輸入0
OK後F9看你手機顯示running successfully。
注:中國象棋也在jni用了類似的判斷手法,有興趣的可以去破解玩下
【項目地址】
【IDA工具地址】
Android中Canvas繪圖之Shader使用圖文詳解 概述 我們在用Android中的Canvas繪制各種圖形時,可以通過Paint.setShader(shad
我的Android進階之旅------)關於android:layout_weight屬性的詳細解析 關於android:layout_weight屬性的詳細解析 效
Win7下搭建安卓android開發環境,win7安卓一、下載安裝包(可執行文件) 1.JDK(JavaDevelopmentKit),官網下載最新版本即可。 2.Ecl
Android App監聽軟鍵盤按鍵的三種方式與改變軟鍵盤右下角確定鍵樣式,androidappactionNone : 回車鍵,按下後光標到下一行actionGo :