android加固系列—4.加固前先學會破解,無源碼調試apk

【版權全部,轉載請註明出處。出處:http://www.cnblogs.com/joey-hua/p/5138585.html】html

項目關鍵java代碼爲,將tv設置爲從jni讀取的字符串,這裏的破解內容是直接從apk動態調試修改最終顯示在tv裏的字符內容java

 

1.工具介紹android

Apktool,反編譯源碼用git

Android studio+smalidea插件,動態調試用github

 

2.準備工做shell

A.配置插件app

下載插件smalidea,地址https://bitbucket.org/JesusFreke/smali/downloadside

這個工具

下載完成後,打開android studioSettings | Plugins,點擊選中下載好的zip壓縮包。並applyidea

此步驟的目的是讓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和主activityMainActivity。而後cmd窗口輸入

adb shell am start -D -n com.example.crackme/.MainActivity

 

手機上出現Waiting For Debugger對話框。

這時打開as,大概等待兩三秒就會出現

 

而後再點擊as的Run | Edit Configurations(注意不是DDMS的run),新建一個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並敲回車鍵,會出現等待框

 

而後此變量的值就變了,這時候點擊Resumestop

 

手機界面上就顯示huaxiaozhou了。

 

一個碼農的平常 

crackme項目地址

smalidea地址

相關文章
相關標籤/搜索