前言:書本中對crackme02.apk的破解是分析關鍵詞進行破解的,而本文使用另外的Smali分析方式,對樣本進行分析。
樣本:《Android軟件安全與逆向分析》crackme02.apk
工具:AndroidKiller v1.3.1.0(AK) && Android Studio2.2.3(AS)
語言:Java,Smali
目的:Smali代碼分析之前的准備工作
一、樣本反編譯
二、在AS下打開反編譯出來的文件夾
三、安裝原始apk到AVD中
命令行:adb install (crackme02的文件路徑)
注:如出現安裝失敗可能有如下原因
- AVD中存在同名apk。 解決:需卸載后重安裝或命令行:adb -r install (crackme02)
-
AVD無連接。 解決:adb kill-server , adb device
四、設置遠程調試
Run->Debug Configuration-> “+”->Remote Java Application
修改HOST:localhost,Debug:8700五、使用adb以debug方式啟動apk
執行命令:Adb shell am start -D -n packageName/ActivityName
其中packageName是主活動所在文件夾,ActivityName是主活動名稱及其路徑,可在AndroidManifest.xml中的android:name查看。
這里我們執行:
Adb shell am start -D -n
com.droider.crackme0201/com.droider.crackme0201.MainActivity
如果debug模式執行成功會有如下圖
六、准備調試程序
1、啟動Android Device Monitor.
這里介紹兩種方式啟動,第一種方式在舊版本的AS中可行,但在我現在的AS版本卻不行,似乎打開的文件夾不是app項目,就無法通過選項卡打開:
(1)Tools->Android->Android Device Monitor
(2)命令行中,進入 SDK tools/ directory 目錄,輸入下述命令:
monitor
參考:http://blog.csdn.net/qzw9231000/article/details/53115878
2、選擇對應的Device,這個Device有8700端口。
3、設置斷點
這里我們在MainActivity.smali的
.method private checkSN(Ljava/lang/String;Ljava/lang/String;)Z
下一行設置斷點。
七、開始調試程序!
debug!
發現程序停在了斷點處,摁下f8一步步調試,並添加監視變量即可開始通過Smali代碼對程序進行分析。
jpg改rar