編輯:關於android開發
【版權所有,轉載請注明出處。】
項目關鍵java代碼為,將tv設置為從jni讀取的字符串,這裡的破解內容是直接從apk動態調試修改最終顯示在tv裡的字符內容
1.工具介紹
Apktool,反編譯源碼用
Android studio+smalidea插件,動態調試用
2.准備工作
A.配置插件
下載插件smalidea,地址https://bitbucket.org/JesusFreke/smali/downloads
這個
下載完成後,打開android studio的Settings | Plugins,點擊選中下載好的zip壓縮包。並apply。
此步驟的目的是讓android studio能識別smali代碼,並能正常下斷點。
B.反編譯apk
下載apktool並反編譯apk
3.動態調試
首先在android studio新建一個項目,然後把剛才反編譯的smali源碼
全部拷到項目的app | src | main | java下,把這個目錄下之前的全部刪除。
在MainActivity$1文件的這裡下個斷點,如下圖
接下來先以debug模式啟動程序,注意,是在手機上啟動。
如果你手機上有這些選項,設置 | 開發者選項 | 選擇調試應用(選擇crackme)| 等待調試器(勾選),
然後就可以直接點擊程序圖標,會出現Waiting For Debugger對話框。
如果手機上沒有這些選項,可以用adb命令的方式啟動,先從反編譯的androidmanifest.xml中找到對應的包名com.example.crackme和主activity名MainActivity。然後cmd窗口輸入
adb shell am start -D -n com.example.crackme/.MainActivity
手機上出現Waiting For Debugger對話框。
這時打開as的,大概等待兩三秒就會出現
然後再點擊Run | Edit Configurations,新建一個Remote並起碼假設crack,填寫端口為上圖的com.example.crackme對應的端口8700,選擇source using module’s classpath為我們之前創建的項目,點擊OK
現在終於可以開始調試了,點擊Run | Debug ‘crack’,注意一定要關閉其他IDE以防止端口占用,否則會出現類似下面的錯誤
程序已經調試起來了,因為我們設斷點的地方需要先點擊一下按鈕“檢測是否被crack”,停在了斷點處
這就和java斷點調試差不多了,可以watch寄存器v0,v1,v2等,這裡v1接收的是從jni層返回的字符串
這裡我們只需要把最後程序界面的文字顯示成huaxiaozhou就可以了,找到textView設置的從jni層返回的字符串
對mTransformed右鍵Set Value,在雙引號內輸入huaxiaozhou並敲回車鍵,會出現等待框
然後此變量的值就變了,這時候點擊Resume或stop
手機界面上就顯示huaxiaozhou了。
【項目地址】
【smalidea地址】
Android代碼故事第一回,平均間隔的按鈕,android第一回我們的APP新做了一個放操作按鈕的界面,老板要求簡潔美觀有內涵,按鈕要均勻分布,於是參考之前的實現,設計
Android事件分發機制淺談(一),android淺談---恢復內容開始--- 一、是什麼 我們首先要了解
Building Apps with Over 65K Methods(解決APP引用方法總數超過65536),appsapp 本
android launchmode 使用場景 菜鳥起飛記 android launchmode 使用場景 Activity一共有以下四種launchMode: 1.st