安卓工具總結
一、安卓開發工具
安卓開發工具主要是一些Java開發環境、集成開發環境和安卓開發環境等
1、JDK和JRE
可以去官網下載,選擇jdk8u111版本進行安裝
JDK:Java Development Kit是Java的開發工具包,JDK包含了JRE,同時還包含了編譯java源碼的編譯器javac,還包含了很多java程序調試和分析的工具。
JRE:Java Runtime Environment是Java運行時環境,包含了java虛擬機,java基礎類庫
安裝過程:
1)雙擊啟動安裝程序

2)默認安裝路徑

3)jre路徑選擇

4)配置環境變量
JAVA_HOME C:\Program Files\Java\jdk1.8.0_111

%JAVA_HOME%\bin

C:\Program Files\Java\jre1.8.0_111\bin

2、adt-bundle
adt-bundle用于在Windows操作系統上搭建安卓開發環境
下載地址:http://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
直接下載下來拷貝至C盤即可
3、Eclipse
在adt-bundle中配帶了Eclipse
1)雙擊啟動

2)選擇Finish

3)創建Java Project

配置Java編譯環境

配置Java運行環境

配置文本文件編碼

打開Logcat界面
LogCat界面主要用于查看報錯信息及進程信息

配置Java代碼提示
便于后面的Java代碼編寫,這部分可配可不配
abcdefghijklmnopqrstuvwxyz.

創建Class文件

public class try001 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello World!");
}
}

4、Android Studio
?Android Studio是一個為Android平臺開發程序的集成開發環境,以IntelliJ IDEA為基礎構建而成。類似于上面的Ecilpse,一般情況下兩者都有使用,暫時不過多介紹,后面會使用到再詳細介紹。
在官網直接下載即可,雙擊安裝
安裝類型

確認安裝

二、安卓逆向工具
這部分介紹的安卓逆向工具是一些用于安卓反編譯、逆向分析的工具,可以將源程序反編譯成可讀代碼,如Android Killer、Jadx和JEB等工具
1、Android Killer
Android Killer是一款安卓逆向工具,集Apk反編譯、Apk打包、Apk簽名、編碼互轉、ADB通信等特色功能于一身,支持logcat日志輸出,語法高亮,基于關鍵字項目內搜索,可自定義外部工具,簡化了用戶在安卓應用中的各種瑣碎工作。
下載地址:https://www.androiddevtools.cn
Android Killer下載安裝
1)下載后,解壓至C盤

免安裝直接使用。
2)簡單配置
如果打開報錯,就修改下jdk路徑

加載APKtool工具
默認情況下會自帶一個apktool工具,這里加載額外的apktool

Android Killer簡單使用
對apk進行反編譯

2、Android逆向助手 v2018 少月版
下載地址:CSDN上有
安裝前需確認存在JDK,其功能包括反編譯、重打包,格式轉換等。簡單的功能都列在主頁了,其中最好用就是簽名apk功能

3、Jadx 反編譯工具
Jadx工具用于將dex文件反編譯成Java代碼文件,分為命令行窗口和可視化窗口兩種類型
命令行窗口工具,直接進入目錄的cmd中,通過jadx命令進行反編譯

可視化窗口工具Jadx-gui,打開后導入文件即可開始反匯編
載入文件及介紹
載入貪吃蛇apk文件,主要反編譯有兩個文件,源代碼和資源文件,資源文件對應apk中的文件(這里用壓縮軟件打開apk文件查看到)

簡單搜索類

函數跳轉
選擇函數,按住Ctrl+左鍵可以直接跳轉至函數聲明處。比如這里的BuyFailed()

4、JEB 反編譯工具
JEB是一款Android應用程序反編譯工具,用于逆向分析、代碼審計,具有靜態分析和動態分析的能力
下載地址:https://www.pnfsoftware.com
雙擊bat文件啟動

選取一個apk文件進行反編譯
Manifest文件是清單文件(元數據文件),用來定義擴展或檔案打包相關數據包含了不同部分中的名/值對數據
Bytecode是字節碼,里面內容是smali代碼

簡單使用
在smali文件中按q可以反編譯回java代碼
按Ctrl+b下斷點
三、安卓調試工具
這部分為安卓調試工具,主要先介紹下載及安裝,JEB動態調試在本文的第六節中介紹,其余的IDEA和IDA會在后面的動態調試文章中體現
1、JEB
JEB是一款Android應用程序反編譯工具,同時也具備動態調試的功能,下文將以一個小例子進行演示。
第六部分簡單演示了JEB的動態調試過程
2、IDEA
IDEA 全稱 IntelliJ IDEA,是java編程語言開發的集成環境,在智能代碼助手、代碼自動提示、重構、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創新的GUI設計等方面的功能可以說是超常的
下載地址:https://www.jetbrains.com/idea
安裝過程參考:01-IDE工具之IDEA的簡介、下載與安裝、初步配置
動態調試見后文
3、IDA
下載地址:百度
安裝后有32位的和64位,這里的位數是針對軟件而言的,而不是針對操作系統版本,這里先簡單安裝下,在后面IDA動態調試中會有專門一篇文章來介紹。
四、安卓輔助工具
這部分主要是一些輔助工具,查詢信息、是否加殼等。對于沒有真機的情況下還介紹了一些上手還可以的安卓模擬器
1、APK helper
APK helper工具用于查看apk文件簡單信息,包括包名、證書、版本、文件信息等

2、PKiD 查殼工具
PKiD工具,將apk文件拖入可以查看是否加殼

3、安卓模擬器
如果沒有真機做實驗的情況下,可以使用安卓模擬器用于實驗,大部分的模擬器都可以完成實驗內容,但是注意的是安卓模擬器也是一個虛擬機,不建議在虛擬機內安裝模擬器,一是安裝不了,二是十分卡頓。這里介紹幾款不錯的安卓模擬器。
- 雷電模擬器
下載地址:https://www.ldmnq.com
- 網易MuMu
下載地址:https://mumu.163.com
- 逍遙模擬器
下載地址:https://www.xyaz.cn
- 藍疊模擬器
下載地址:https://www.bluestacks.cn
五、安卓抓包工具
這部分介紹如何使用工具抓取安卓手機上的流量,主要是BurpSuite和Fiddler工具,還有安裝證書抓取HTTPS的過程。
1、BurpSuite
BurpSuite抓取手機上的流量需要先設置手機和電腦為同一局域網
在BurpSuite中配置
設置一個新的代理監聽器

手機wifi設置代理

訪問應用-抓取流量
在手機上隨便訪問一些app,可以在BurpSuite中看到抓取的包

抓取HTTPS流量-下載證書
瀏覽器中輸入代理IP和端口,點擊右上角的CA Certificate按鈕下載cacert.der證書。默認下載是.der格式的證書,手機上無法打開.der文件,下載好后需要將其改為.crt文件。

抓取HTTPS流量-導入證書
在設置-安全-從存儲設備安裝中,選擇cacert.crt證書,安裝即可

訪問https的網址
在瀏覽器中訪問https://www.baidu.com,BurpSuite中成功抓取到。

2、Fiddler
先簡單介紹Fiddler抓包工具的一些基礎操作,稍微熟悉下
清除目前抓到的包
選項欄中選擇Remove all刪除所有的包

抓包及指定抓包
左下角的Capturing圖標來關閉/開啟抓包功能,旁邊可以對包進行選擇

All Processes 抓取所有通過Fiddler代理的request包 Web Browsers 抓取PC中瀏覽器的代理請求包 (需要選中Capturing) Non-Browser 抓取除瀏覽器外的代理請求包 Hide All 隱藏所有的代理請求包
配置抓取HTTPS流量
下載、安裝證書,配置監聽端口即可

3、HTTP Debugger Pro
下載地址:百度
直接雙擊安裝
默認下一步簡單安裝

解密SSL-添加證書
進入頁面后,點擊黃色框中的解密 SSL,選擇添加證書即可。

之后即可抓包,也可以抓模擬器上的數據包
六、JEB靜態分析+動態調試
1、簡單介紹
本次調試的目的:實現任意用戶注冊,無視注冊碼
調試程序截圖如下,失敗返回無效用戶名或注冊碼

2、靜態分析
1)將注冊機.apk文件導入至JEB中

2)簡單查看反編譯后的Java代碼
關鍵點在于checkSN函數,傳入兩個參數arg11和arg12,分別對應用戶名和注冊碼
MessageDigest類為應用程序提供信息摘要算法的功能,這里提供MD5算法 messageDigest.update(str)輸入待加密的字符串 messageDigest.digest()加密后的字節數組
主要的邏輯就是:將輸入的用戶名作為參數1并進行MD5加密,之后進行處理得到一個注冊碼,也就是說這里的注冊碼是實時根據用戶名生成的,之后在將輸入的注冊碼進行比較,相同則返回True。

跟進equalsIgnoreCase()函數找到生成的注冊碼即可,接下來交給動態調試
3、動態調試
1)雷電模擬器中啟動注冊機apk
隨意嘗試用戶名和注冊碼進行注冊,返回提示無效用戶名或注冊碼

2)JEB下斷點
選定equalsIgnoreCase()函數,按q返回到對應匯編代碼處,下好斷點

3)連接到模擬器進行動態調試
需要adb工具,在之前安裝SDK時配帶
選擇Debugger -> Start,選擇雷電模擬器和注冊機apk的進程

4)找到校驗值(破解點)
發現equalsIgnoreCase()函數需要兩個變量v6和p2,查看v6的值"222275aa4840481c"

5)成功注冊
重新啟動注冊機apk,輸入admin和注冊碼222275aa4840481c,注冊成功

4、小結
初入門移動安全逆向apk的第一個小項目,雖然簡單,只是一個破解得到注冊碼,但學到JEB工具的靜態分析及動態調試,簡單分析Java代碼等