工具
這里我使用的工具是Android Studio3.4.1,電腦環境mac os mojave 10.14.6(這個應該問題不大)
創建項目
1、打開Android Studio,看到這個界面,並點擊紅框中的內容創建一個項目。
2、創建一個空的項目選擇"Empty Activity"
3、創建一個Java項目XposedHook
4、gradle的配置
Android視圖模式下,選擇build.gradle(Moudle:app)打開,在dependencies內部添加下面,這句
//compileOnly 'de.robv.android.xposed:api:82' 如果安卓版本太低比如4.4可能會出錯
compileOnly 'de.robv.android.xposed:api:53'
版本號53適合安卓4.4的,用82可能報錯。
最后點擊右上角的Sync Now,具體過程看下圖。
5、在main下面創建Hook.java文件
package com.example.xposedhook;
import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class Hook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lppararm) throws Throwable {
Log.d("cxa", "hook");
if (!lppararm.packageName.equals("com.xxx.xxxx")) return; //填入要hook,app的packagename
Log.d("cxa", "hookend");
}
}
6、修改AndroidMainfest.xml文件
在application節點了添加下面內容最終內容看下面圖。
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="Hook log test" />
<meta-data
android:name="xposedminversion"
android:value="53" />
7、main文件夾下創建assets目錄
創建
xposed_init文件輸入下面內容
com.example.xposedhook.Hook
7、編譯app
8、編譯成功
9、點擊locate可以打開生成之后的app文件
網上看了很多教程都是使用jar包的,這里我要說明一點,我們采取的gradle配置方式是和它並行的,所以不需要jar了。
xposed軟件使用
1、官網下載
注意版本的選擇
地址
https://repo.xposed.info/module/de.robv.android.xposed.installer
2、一系列的操作
選擇安裝更新
選擇永久記住
點擊確定等待重啟
3、把上面生成好的app文件也app-debug.apk也拖進模擬器進行安裝。
然后打開Xposed選擇模塊,如果能看到我們的模塊,就勾選就可以了向下面這樣。(如果沒有模塊,就返回然后點擊框架再點擊軟重啟就有了)。
Android Studio操作安卓模擬器
1、連接安卓模擬器
💃🐍 CXAPython🌈/Users/chenxiangan> adb connect 127.0.0.1:62001
connected to 127.0.0.1:62001
💃🐍 CXAPython🌈/Users/chenxiangan> adb devices
List of devices attached
127.0.0.1:62001 device
2、打開logcat並配置
3、打開需要hook的app即可得到結果。
這里我hook的是ES文件瀏覽器,
代碼部分
if (!lppararm.packageName.equals("com.estrongs.android.pop")) return; //填入要hook,app的packagename,這個是Es文件瀏覽器的
logcat的結果,這個logcat就是代碼Log.d希望輸出的內容。
09-30 11:54:11.453 7978-7978/? D/cxa: hook
09-30 11:54:12.533 7996-7996/? D/cxa: hook
09-30 11:54:45.963 8061-8061/com.estrongs.android.pop D/cxa: hook
09-30 11:54:45.963 8061-8061/com.estrongs.android.pop D/cxa: hookend
09-30 11:54:46.633 8146-8146/? D/cxa: hook
09-30 11:54:46.633 8146-8146/? D/cxa: hookend
到這里基本上結束了。