
来自看雪坛友的折腾结果
最终成果演示:

所需工具:
(1)apktool
(2)adb
(3)FileLocator
(4)Notepad++
(5)dexfix
步骤:
1. 从网上下载微信apk文件


由于我的电脑上安装了MoMo模拟器(打第五人格用的),所以图标会比较奇怪,不过这个无所谓
2. 使用apktool反编译apk文件
apktool d weixin_1320.apk -o weixin_1320


3. 打开weixin_1320/res/values中的public.xml和strings.xml

4. 观察一下“我的零钱”页面,可以看到上面显示字符串”我的零钱”,“充值”,“提现”,“常见问题”
这个数字是我修改后的(我只是个poor guy)

在strings.xml中查找”我的零钱”,“充值”,“提现”,“常见问题”并收集相关信息

可以看到,字符串的名称分别为duu,dut,duq,dus
5. 使用FileLocator Pro搜索同时包含duu dut duq dus的xml文件

可以看到共7个xml文件同时包含duu dut duq dus,由于只有an8.xml和an9.xml在res/layout文件夹中,所以只有an8.xml或an9.xml有可能是我的零钱activity的布局文件

之后会发现an8.xml中的duu是一个控件id,不是字符串id,所以排除an8.xml

在an9.xml中可以找到和我的零钱activity非常吻合的布局
4

所以可以肯定,an9.xml就是我的零钱activity的布局文件
6. 我们要修改的是零钱的显示数字,而根据an9.xml的内容显示数字的控件则是

类型为com.tencent.mm.wallet_core.ui.WalletTextView,控件id为dv3
7. 现在在public.xml找控件id为dv3的那一行

<public type="id" name="dv3" id="0x7f101894" />
然后用FileLocator Pro搜索0x7f101894

在a$f.smali文件中找到0x7f101894的变量名为wallet_balance_total

再用FileLocator Pro搜索wallet_balance_total

打开WalletBalanceManagerUI.smali,找到wallet_balance_total

顺着smali代码向下看,会发现wallet_balance_total被赋值给了类成员pan,类型为Landroid/widget/TextView;

可以肯定,pan就是控制着余额显示的TextView类型控件,每次对pan调用setText就会更新一次余额显示
8. 似乎只要修改代码后重新编译就可以了,但一般不能这样做的,这样做可能会编译失败或者签名失败。
(1)首先要看一下WalletBalanceManagerUI.smali文件的位置
D:\__projects__\__androidanalysis__\weixin_1320\smali_classes4\com\tencent\mm\plugin\wallet\balance\ui\WalletBalanceManagerUI.smali
会发现WalletBalanceManagerUI.smali在classes4解析出的代码下
(2)回到源目录,将weixin_1320.apk的后缀apk改为zip

(3)直接打开weixin_1320.zip(注意不要解压该文件),将里面的classes4.dex提取出来

(4)反编译classes4.dex到classes4文件夹
d2j-dex2smali classes4.dex -o classes4


(5)进入classes4文件夹,并打开classes4文件夹内的WalletBalanceManagerUI.smali

(6)搜索每一个pan,然后在对成员变量pan进行setText之前的位置添加指定字符串的代码




总共四处地方需要修改
(7)保存修改,然后编译classes4为classes4.dex,覆盖原classes4.dex文件
d2j-smali2dex classes4 -o classes4.dex

(8)使用dexfix工具修复classes4.dex

(9)复制classes4.dex,然后直接打开weixin_1320.zip文件,粘贴覆盖里面的classes4.dex文件

(10)再修改weixin_1320.zip的后缀为apk

(11)使用signapk工具对weixin_1320.apk签名为weixinSigned.apk
signapk weixin_1320.apk weixinSigned.apk


(12)adb安装该apk文件
注意:安装之前需要将手机上的微信手动删除,否则即使用adb install -r进行覆盖安装也会失败
adb install -r weixinSigned.apk

9. 打开微信,重新登录,就会发现

10. 然而我的钱包页面依然显示真实的零钱余额,按照上述方法类推,也可以修改该显示

当然这仅仅是装逼的开始,想要修改服务器数据?你还是等顺丰快递吧。。。


相关文章本文地址:https://blog.sxx1314.com/sdk-android/565.html
版权声明:若无注明,本文皆为“unix 软硬件 技术宅 ”原创,转载请保留文章出处。百度已收录















