首页
社区
课程
招聘
Xposed系列-修改微信零钱余额
发表于: 2022-10-20 14:15 3211

Xposed系列-修改微信零钱余额

2022-10-20 14:15
3211

背景

前面文章中,我们入门了如何hook安卓的App,修改数据。现在我们开始实战。我们的目标选择了wx。

 

在不久之前,我使用过一个插件,可以修改wx的钱包余额,那么我们今天就亲自操刀,来试试我们之前学习的成果。

 

我个人博客地址

修改微信钱包的余额!

 

image

我们的目标apk

首先,我明确自己的wx的版本。并且把apk分享给大家。
获取目标apk位置,我之前的文章有写,如何获得已经安装的app的安装包。

1
2
//通过包名,查询地址
adb shell pm path com.tencent.mm

image

 

image

 

链接:https://pan.baidu.com/s/1D0c0xCeX3iBxQ496PMa3Hw
提取码:9527

 

这个是我们的包,如果想一起学习的可以下载这个包,这样和我的代码可以对得上。
wx:8.02好像是这个版本。

寻找目标

先打开我们wx,进入钱包页面。

 

image

 

image

 

哎呦,不要在意这些细姐啦。这个时候看看我们的调试工具,发现了这个页面的activity名字

1
com.tencent.mm.plugin.mall.ui.MallIndexUiv2

先记录下来,可能以后要用得上呢。

 

把刚刚导出来的apk,丢进去反编译工具jadx中,打开完成之后。

 

image

 

反编译开始,点击搜索按钮,全局搜索下钱包这个关键词看看。

 

image

 

image

 

搜索框中输入钱包,选择类,方法,变量,代码。

 

image

 

再次尴尬。搜索不到嘛,不过难不到我,我换个姿势和你交流。
打开Android SDK的ddms工具,具体位置可以参考我的目录

1
2
D:\Program\Android\sdk\tools\monitor.bat
双击它,就可以打开ddms了

打开之后看到我们的手机,然后点击灰绿色的手机图标,把整个页面的UI,dump出来。在右边可以看到预览图,把鼠标移动到钱包是余额哪里点击一下。右边可以看到view的层级,下边可以看到view的id。这个id就是我们需要找的目标了。通过文字我们无法找到,那么通过这个id应该可以找到。

 

image

 

image

 

我们找这2个控件的id名字。

 

image

 

这不就是我们最熟悉的findViewById??

 

进去看看情况。

 

image

 

发现了这个控件的名字,既然是这样,我们就看看他如何setText,和我们平时写的代码一样的。继续看看其他可疑的地方吧。

 

image

 

发现了方法,设置零钱。
是不是很开心?根据方法的名字,我们知道,这是设置显示零钱的,入参是一个string,好像是我们找的地方了。还有一个动画。当我们首次进入页面,会显示一个零钱在增加的动画。emmmm就是你了。

 

这个时候,长得帅的网友可能就要问了,嘶~~代码我看不懂啊,哦多茄

 

image

 

这个时候你就需要学习Android入门的知识了。

 

点击这里按F进入

 

image

验证想法

...

 

One year later

 

....

 

假如你已经学习过Android相关的知识,现在就是你大展身手的时刻。

 

验证下是不是我们找到的这个地方。

 

我们开始hook这个方法。

 

进行hook三部曲

 

类地址

1
class:com.tencent.mm.plugin.wallet_core.ui.view.WcPayMoneyLoadingView

方法名字

1
method:setNewMoney(String str)

编写我们的hook代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if ("com.tencent.mm".equals(app.packageName)) {
            Log.d(TAG, "hook: 微信");
            Class c = XposedHelpers.findClass("com.tencent.mm.plugin.wallet_core.ui.view.WcPayMoneyLoadingView", app.classLoader);
            if (c != null) {
                XposedHelpers.findAndHookMethod(c, "setNewMoney", String.class, new XC_MethodHook() {
 
                    //方法执行前,修改参数值
                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        super.beforeHookedMethod(param);
                        param.args[0] = "4298920.10";
                    }
                });
}

编译,安装插件,激活,重启手机。打开微信我的钱包。

 

image

 

有趣~

 

image

总结

通过这个例子,我们经历了很多波折,最终写下几行代码,完成了我们开始的需求。从这个过程中我们通过多个工具,相互配合,达到了修改零钱余额的效果。

 

看看我们都做了什么。

  1. xposed环境
  2. jadx反编译找关键文字
  3. ddms找关键控件的id
  4. 从反编译代码中找id
  5. 定位id可能正确的位置
  6. 需要看得懂java代码
  7. 需要分析出在那个位置设置了我们的余额
  8. 通过编写xposed插件,hook方法

 

上面需要的知识比较零散,都是我自己慢慢实践积累的。如果我需要整其他App,我也是可以的,前提是给一点点时间。
如果大伙们对这个有兴趣的话可以一起探讨。


 

现在xposed插件开发工程师在市面上也有不少岗位,而且薪资不错,比app应用层开发高,大家如果对这个感兴趣,可以考虑这个方向。


 

下一篇文章,就是hook长按选择文本了

 

image

 

image

不提供成品,请勿做非法用途


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 2
支持
分享
最新回复 (4)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
用的什么软件 在页面上即时看到 activity和click信息的呀
2023-7-6 16:06
0
雪    币: 218
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
同问  就是显示activity  pid click listener 这些的  是啥工具啊
2023-7-6 18:32
0
雪    币: 2334
活跃值: (10386)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mb_zpfwznow 用的什么软件 在页面上即时看到 activity和click信息的呀
太久没用了,应该是一个lsp的插件,具体名字不记得了。不过可以试试算法助手,易拉钩等工具。
2023-7-10 09:08
0
雪    币: 3004
活跃值: (30866)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享
2023-7-10 09:29
1
游客
登录 | 注册 方可回帖
返回
//