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


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

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

 

1.工具介紹

Apktool,反編譯源碼用

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

 

2.准備工作

A.配置插件

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

這個

下載完成后,打開android studioSettings | 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和主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地址


免責聲明!

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



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