吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6355|回复: 3
收起左侧

[会员申请] 申请会员ID:hjw45611【申请通过】

[复制链接]
吾爱游客  发表于 2019-1-9 15:02
1.申请ID:hjw45611
2.个人邮箱:hjw45611@126.com
3.原创技术文章:我的微信数据监控研究发展过程

近两年来一直在做Android端 微信的消息备份功能,一开始是调研自己实现,现在是公司业务需要,现已实现好友备份,监控消息、领取红包、监控发布朋友圈数据、监控朋友圈点赞回复等功能。

以下内容适用范围:已经获取root权限的手机
1.静态监控
是我一开始实现监控的方法,参考网上文章后使用的是定时读取数据库的方法,聊天消息表、联系人表、联系人标签表、红包转账信息表等都存在EnMicroMsg.db数据库中
定时复制微信的数据库文件到我的文件夹下,EnMicroMsg.db是加密过的,需要密码才能查看,得到密码后,使用sqlcipher连接并传入密码来读取数据,然后发送到服务器。
该数据库地址是/data/data/com.tencent.mm/MicroMsg/32位字符串/EnMicroMsg.db,32位字符串是通过MD5加密("mm"+uin码)得出的
如果有多个32位字符串的文件夹,说明登录过多个微信号,微信号不同,uin码不同。
数据库密码  md5(imei码 + uin码).substring(0, 7).toLowerCase()得到,imei码是通过获取手机IMEI码得到,uin码是微信SharedPerferences中存储的,文件位置\data\data\com.tencent.mm\shared_prefs\auth_info_key_prefs.xml,通过解析xml文件来得到"_auth_uin"字段的值。
使用sqlcipher就可以打开数据库进行读取数据了
2.动态监控
可以看到静态监控的方法并不完善,并不能做到实时监控,在我接触到Xposed后开始使用hook 拦截的方式来监控微信数据
可以说微信是我反编译大厂app后发现的少数不做加固的app之一,让我省去了脱壳的步骤

这里涉及到公司代码,只做引导和部分说明,后续会详细做教程。
这里主要对监控发布朋友圈数据进行详细教程,它可以包含xposed的大多数使用。

-1使用 当前Activity 这个app来查看发布朋友圈页面的包名和Activity。
发布朋友圈编辑页.jpg
-2使用jadx打开微信apk,本案例使用的是6.6.7版本,搜索SnsUploadUI
屏幕快照 2019-01-09 13.39.51.png
可以看到有一个SnsEditText的变量,很大把握可以确定这个变量就是发朋友圈的文本输入框,
-3找到发表按钮
看到发表按钮,可以确定它要么是一个MenuItem,要么是一个普通view,但总会有点击事件
直接在这个类中搜索nRk.getText(),很容易找到调用位置
屏幕快照 2019-01-09 13.56.58.png
-4进行hook
[Java] 纯文本查看 复制代码
try {
            final Class<?> SnsUploadUIClass = cl.loadClass("com.tencent.mm.plugin.sns.ui.SnsUploadUI");
            XposedHelpers.findAndHookMethod(SnsUploadUIClass, "onCreate", Bundle.class,
                    new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            super.beforeHookedMethod(param);
                            Object oSnsUploadUI = param.thisObject;
                            XposedHelpers.findAndHookMethod("com.tencent.mm.plugin.sns.ui.SnsUploadUI$5$1",
                                    mlpparam.classLoader, "pO", String.class,
                                    new XC_MethodHook() {
                                        @Override
                                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                                            super.beforeHookedMethod(param);
//获取SnsUploadUIClass中的nRk变量,并强转
                                            EditText editText = ((EditText) XposedHelpers.findField(SnsUploadUIClass, "nRk").get(oSnsUploadUI));
                                            //得到发表朋友圈的文本
                                            String text=editText.getText().toString();
                                            //todo上传数据
                                        }
                                    });
                        }
                    });
        } catch (Exception e) {
            e.printStackTrace();
        }


因为源码上有SnsUploadUI.this.nRk.setText("");这段,所以要在beforeHookedMethod中拦截,并且虽然SnsEditText是自定义的,但它是继承自EditText的,所以通过findField直接强转成EditText,然后再获取字符串。
需要说明的是beforeHookedMethod主要是截取方法参数,afterHookedMethod主要截取方法返回值,如果一个变量在方法中值被改变了,那就看你是要改变前的还是改变后的了。
如果不知道SnsEditText是怎样的类的话,但我们知道nRk通过nRk.getText().toString()得到了文本信息,可以通过下面方法得到
[Java] 纯文本查看 复制代码
//获取SnsUploadUIClass中的nRk变量
                                            Object nRk=XposedHelpers.findField(SnsUploadUIClass, "nRk").get(oSnsUploadUI);
                                            //执行getText().toString()得到发表朋友圈的文本
                                            String text=  XposedHelpers.callMethod(nRk,"getText").toString();


至此拦截成功,并Toast显示。

拦截并显示

拦截并显示


以上代码使用了xposed 的findAndHookMethod,findField,callMethod等方法,相对全面系统。

使用xposed,最难的可能就是找到hook点,一般对于微信这种大量依赖数据库的,要么找到数据解析方法来拦截,要么找到数据入库或者查询操作自己解析判断来拦截
如果一开始无处下手,可以先找到它的数据库相关insert、update、delete、query操作,这样就可以通过打印的sql查询方法知道它每个页面查的是哪个数据表,然后分析数据表的结构和字段含义,再找到执行页面进行代码分析。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2019-1-9 16:53
I D:hjw45611
邮箱:hjw45611@126.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:登录后把文章整理一下发到移动安全区。
hjw45611 发表于 2019-1-10 09:13
匿-名者 发表于 2019-1-11 16:08
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-20 10:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表