一、支付宝2016年账单。
最近几天微信朋友圈充斥着各式的支付宝2016账单,对于程序员屌丝来说打开发现年度消费9W+,和他们动辄十几万的消费没得比,细看更有80%的消费还都是还信用卡,顿时万念俱灰啊!!! 有木有!!! 突然看到有人发出了负数的账单,也是醉了。。。看来在支付宝存了好几千万啊,才能赚支付宝钱。。。但是作为程序员还是要跟着时代潮流的,也想秀一把,怎么办呢??? 那就改数据吧,但是支付宝的网络请求和内部数据校验实在是赞,而且从打开来看应该是个网页。。。 既然此路不通我们换个思路,他们都秀消费,那我就秀存款吧!!!看图。。。
首先声明一下上图纯属个人好玩,修改支付宝页面数据而来的。。。完全不是真实信息。
换个思路不修改数据,那怎么办呢改显示内容,就需要祭出我们今天的重要工具Xposed框架,
二、Xposed框架了解。
Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。
思路:hook系统函数,来替换文字。 一般android界面展示都会用TextView,所以我们就先hook系统的setText()方法来监听并且输出log来看是否能hook到我们需要
更改的内容。 有了思路就开始动手了。。。。。。
三、hook支付宝。
一、安装Xposed框架,前提需要root过的手机。在各大应用市场都是可以搜到Xposed框架的下载安装就ok了,需要注意上面是否有提示框架是否激活。
二、编写Xposed模块的代码。
1、Xposed模块其实就是一个新建一个android app,官网下载 XposedBridgeApi-版本号.jar。 然后项目依赖这个jar包,这里需要注意是依赖而不是将jar包编译打包生成到
apk,因为运行的时候Xposed框架是提供此jar包的,此jar包只是参与编译不参与执行的。
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
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的文字。。。。。。
替换成需要装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框架中勾选此模块。
三、重启,打开支付宝看效果。
看最开始的图。。。。
注意:以上分享纯属个人娱乐,如有用作他处概不负责!!!
源码下载地址:http://download.csdn.net/detail/dsklafkaskl/9730775