android hook技術-Xposed框架 幫你輕鬆應對支付寶2016晒賬單
阿新 • • 發佈:2019-01-31
一、支付寶2016年賬單。
最近幾天微信朋友圈充斥著各式的支付寶2016賬單,對於程式設計師屌絲來說打開發現年度消費9W+,和他們動輒十幾萬的消費沒得比,細看更有80%的消費還都是還信用卡,頓時萬念俱灰啊!!! 有木有!!! 突然看到有人發出了負數的賬單,也是醉了。。。看來在支付寶存了好幾千萬啊,才能賺支付寶錢。。。但是作為程式設計師還是要跟著時代潮流的,也想秀一把,怎麼辦呢??? 那就改資料吧,但是支付寶的網路請求和內部資料校驗實在是贊,而且從開啟來看應該是個網頁。。。 既然此路不通我們換個思路,他們都秀消費,那我就秀存款吧!!!看圖。。。首先宣告一下上圖純屬個人好玩,修改支付寶頁面資料而來的。。。完全不是真實資訊。 換個思路不修改資料,那怎麼辦呢改顯示內容,就需要祭出我們今天的重要工具Xposed框架,
二、Xposed框架了解。
思路:hook系統函式,來替換文字。 一般android介面展示都會用TextView,所以我們就先hook系統的setText()方法來監聽並且輸出log來看是否能hook到我們需要
更改的內容。 有了思路就開始動手了。。。。。。
三、hook支付寶。
一、安裝Xposed框架,前提需要root過的手機。在各大應用市場都是可以搜到Xposed框架的下載安裝就ok了,需要注意上面是否有提示框架是否啟用。
二、編寫Xposed模組的程式碼。
apk,因為執行的時候Xposed框架是提供此jar包的,此jar包只是參與編譯不參與執行的。
gradle中配置的話就是:provided files('lib/XposedBridgeApi-82.jar'),再次注意下是provided而不是compile
eclipse的話就放在lib包下而不是libs。
2、在工程目錄assets下新建檔案 xposed_init(注意是檔案)
3、專案中新建一個類實現IXposedHookLoadPackage介面,這樣當框架hook到程序的時候就會通知此介面。而我們修改支付寶資訊的也就是這裡
並且將新建類的路徑寫到上面assets目錄下新建的xposed_init檔案中。比如 --> com.sqlite.greendao.Main
public class Main implements IXposedHookLoadPackage { @Override public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable { Log.d("開始hook","包名: " + lpparam.packageName); if(lpparam.packageName.equals("com.eg.android.AlipayGphone")){ Log.d("開始hook", "1、找到支付寶開始掛鉤子!"); new HookText().hook(lpparam); } } }
4、在清單檔案AndroidManifest.xml中新增三個資料項,第一個是支援xposed模組,第二是模組的描述展示在xposed框架中的。第三個是支援的xposed框架最低版本號。
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="自由設定支付寶餘額" />
<meta-data
android:name="xposedminversion"
android:value="30" />
5、真正的開始修改文字了,看程式碼。
替換成需要裝X的文字。。。。。。
public class HookText {
public void hook(){
findAndHookMethod(TextView.class, "setText",CharSequence.class, TextView.BufferType.class, boolean.class, int.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) {
Log.d("開始hook", "2、獲得資料" + param.args[0]);
}
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
String text = (String) param.args[0];
if("0.00".equals(text)){
param.args[0] = "10000000.00";
}if("可用餘額 0.00元".equals(text)){
param.args[0] = "可用餘額 10000000.00元";
}
Log.d("開始hook", "3、獲得資料!" + param.args[0]);
}
});
}
}
6、執行程式到手機中,在Xposed框架中勾選此模組。