压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

使用滲透測試框架Xposed Framework hook調試Android APP

  Xposed Framework 是一個很強大的滲透測試框架,本文中講述如何用 Xposed Framework hook 一個Android APP中的一個方法并繞過登錄驗證。

  Xposed Framework 原理簡述

  Xposed Framewrork 也使用了模塊化的擴展模式,可以通過編寫模塊來滿足不同的需求,比如有一個模塊叫 3dot menu,可以在每一個 APP 界面中添加一個三點按鈕,20MP sensor for Superior Auto 可以擴展 sony 相機,所有 Xposed Framework 能夠實現的功能都是通過模塊的方式實現的,這里提供了一些例子模塊:example modules。

  如果想了解更多關于 Xposed Framework 的詳情,出門右轉 :Xposed Framework

  Zygote 是 Android 的核心,每打開一個 app,Zygote 就會 fork 一個虛擬機實例來運行 app,Xposed Framework 深入到了 Android 核心機制中,通過改造 Zygote 來實現一些很牛逼的功能。Zygote 的啟動配置在/init.rc 腳本中,由系統啟動的時候開啟此進程,對應的執行文件是/system/bin/app_process,這個文件完成類庫加載及一些函數調用的工作。

  當系統中安裝了 Xposed Framework 之后,會對 app_process 進行擴展,也就是說,Xposed Framework 會拿自己實現的 app_process 覆蓋掉 Android 原生提供的 app_process 文件,當系統啟動的時候,就會加載由 Xposed Framework 替換過的進程文件,并且,Xposed Framework 還定義了一個 jar 包,系統啟動的時候,也會加載這個包:

  /data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar

  環境要求

  1.Rooted Device / Emulator (已 root 的手機或者模擬器)

  2.Xposed Installer (Xposed 安裝程序)

  3.Testing Android App

  Xposed Framework 就是一個 apk 包,下載到后用下面的命令安裝到手機上:

  adb install <xposed-installer-you-just-downloaded>.apk

  安裝好之后,打開 Xposed ,下面是截圖:

  Modules 下面是一些可用的模塊

  實現一個模塊

  一個 Xposed 模塊就是一個 Android app,不需要實現 Activity,本例中的 module 叫com.bypass.validation, 下面是這個實例的 AndroidManifest.xml 文件,注意其中定義了三項 meta-data:

  1.Module name

  2.Module Description

  3.Module Minimum Version

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  package="com.bypass.validation"

  android:versionCode="1"

  android:versionName="1.0" >

  <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15" />

  <application android:allowBackup="true" android:icon="@drawable/ic_launcher"    android:label="@string/app_name" android:theme="@style/AppTheme" >

  <meta-data

  android:name="xposedmodule"

  android:value="true"/>

  <meta-data

  android:name="xposeddescription"

  android:value="Hooking Module for Bypassing Validation" />

  <meta-data

  android:name="xposedminversion"

  android:value="30" />

  </application>

  </manifest>

  其中 xposedminversion 是指 XposedBridge library 的版本,需要將 Xposed Library 復制到 lib目錄(注意是 lib 目錄不是 libs 目錄),然后將這個 jar 包添加到 Build PATH 中,jar 包可以在這里下載。

  然后在 src 目錄下面建立一個 java 文件,就叫 bypass.java 吧,并在 assets 目錄中新建一個叫xposed_init 的文件,里面寫上剛才建立的 java 文件的包路徑,這樣,我們的apk 就可以被識別為一個 Xposed 模塊了

  現在來看看要 hook 的 apk 包,要 hook,關鍵是要知道 hook 的點,即要明確要 hook 的函數名,實際使用中可以用 jeb 等反編譯工具得到需要 hook 的函數名,我們這里就直接看樣例 app 的源碼吧:

  從源碼中可以看到,MainActivity 的驗證邏輯很簡單,只要用戶輸入的密碼和定義的 password 相等,就可通過驗證(checkLogin 方法)。

  實現模塊還要完成下面幾個步驟

  1.實現 IXposedHookLoadPackage接口

  2.指定要 hook 的包名(這里是com.attify.vuln)

  3.判斷當前加載的包是否是指定的包(在接口方法中判斷

  4.指定要 hook 的方法名

  5.實現beforeHookedMethod方法和afterHookedMethod方法(hook的具體功能)

  下圖是模塊的核心代碼,上述各項都已經具備

  這里的包名是com.attify.vuln,

  if(lpparam.packageName.equals("com.attify.vuln"))

  上面這一行代碼指定了只有當 com.attify.vuln 這個包加載的時候,才會觸發一系列的 hook 行為,當這行為觸發的時候,de.robv.android.xposed.XposedHelpers 類的 findAndHookMethod 方法就會被調用,并在適當的時候執行前置方法(beforeHookedMethod)和后置方法(afterHookedMethod),這里繞過驗證方法只需要讓傳遞到 checkLogin 方法的兩個參數相等即可,so easy。當 checkLogin 方法被調用前調用我們實現的模塊,并執行前置函數,就可以使得傳遞給 checkLogin 函數的兩個參數相等。

  最后環節

  把我們實現的模塊安裝到設備上,如下圖:

  勾選我們剛才安裝的模塊,并重啟系統,等系統重啟之后,打開樣例 app,在輸入密碼的地方輸入任意字符,因為我們實現的那個模塊會執行

  param.args[1] = param.args[0];

  這行代碼,所以輸入任意密碼都會通過驗證,如下圖

  整個模塊執行過程的log信息可以在Xposed log中查看到,如下圖

  由日志可以看到,hook 的關鍵代碼(前置函數)執行前,checkLogin 方法的兩個參數是不同的,而在后置函數執行的時候,兩個參數已然相等了:)

 

上一篇:智能無懼挑戰 山石網科轟動RSA2015

下一篇:偽裝成USB充電器的無線鍵盤嗅探器 – KeySweeper