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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18683|回复: 70
收起左侧

[Android 原创] 微信Log日志分析 --初步探索

  [复制链接]
younghare 发表于 2017-10-24 17:42
前言

好久没有来来论坛了,再不发表点东西,以后各位大神会不搭理我,正好今天在今日头条写了篇文章,在次一并贴上,希望大伙会喜欢
Android 系统及其程序日志(Log)通常通过LogCat输出,小app一般采用Android 自带的工具类Log,一旦有点规模的APP都会封装自己的Log工具类,那么作为开放平台的微信会如何输出自己的log信息。大胆猜想应该是封装一个自己的日志类,用于控制发布时关闭日志输入。
今天的工作计划是把微信的日志打印输出,水平有限不敢去想攻克微信的通信日志,smali的方式来回编译也很麻烦,我打算直接通过hook的方式改变微信的日志输出

材料装备:
  • jadx:直接看看apk、dex、jar代码
  • Android studio:Android 开发ide
  • 微信6.5.16-apk:
  • 微信6.5.16:"Wechat6.5.16smali第1版本"(我已分析在csdn)
  • apkDB改之理:
  • androidKiller
  • xposed框架:


大胆猜想
像微信这么大的app一定会封装自己的log工具类。
先用解压软件打开微信6.5.16-apk,并解压,大致浏览一下发现Lib目录下的可疑的so文件libwechatxlog.so

clipboard.png
用jadx直接搜索包含“Log”的类,进入可疑的类查看分析。发现XLogSetup应该是负责Log工具类初始化。


searchLog.png


进入XLogSetup发现可以关键字“isLogcatOpen”应该是打开Logcat的开关,通过Xlog.setConsoleLogOpen(isLogcatOpen.booleanValue())进行打开或关闭

xLogsetup.png



hook keep_setupXLog 修改 bool2 =true
由于Xlog.setConsoleLogOpen是native方法,所以我们修改在keep_setupXLog入口位置修改isLogcatOpend的参数值=true。
代码如下:
static  String TAG = "HookXLog";
static public void keep_setupXLog(XC_LoadPackage.LoadPackageParam lpparam) {
    //public static void keep_setupXLog(boolean z, String str, String str2, Integer num, Boolean bool, Boolean bool2, String str3)
    XposedHelpers.findAndHookMethod("com.tencent.mm.xlog.app.XLogSetup", lpparam.classLoader, "keep_setupXLog",
            boolean.class, String.class, String.class, Integer.class, Boolean.class,
            Boolean.class, //isLogcatOpen
            String.class,
            new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    param.args[5] = true;
                    //param.setResult(null);
                }

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    param.args[5] = true;
                    super.afterHookedMethod(param);
                    Log.i(TAG,"keep_setupXLog参数isLogcatOpen: " +param.args[5]);
                }
            });
}


进一步分析XLog类
  • logDecryptor 应该是解码类
  • XLoggerInfo 应该是日志信息
  • LEVEL_*(应该是Log的级别LEVEL_DEBUG、LEVEL_ERROR、LEVEL_FATAL等等)
  • logWrite、logWrite2:应该是写日志的方法

XLog2.png


logWrite2应该是写日志的操作,对应的参数内容正好是XLoggerInfo的相关属性

logWrite2.png

Xlog实现接口在com.tencent.mm.sdk.platformtools.w中我们看到了各个级别的Log打印
我们也进去看看,
XLogImp.png

从调用传递进入的参数可以看到与XLoggerInfo极其类似
uMm.logF(str, "", "", Process.myTid(), Process.myPid(), Thread.currentThread().getId(), Looper.getMainLooper().getThread().getId(), objArr == null ? str2 : String.format(str2, objArr));


Hook Log工具类对应的各个级别的调用位置。
代码如下:
==========

static private void platformtools_w_Log_f(XC_LoadPackage.LoadPackageParam lpparam) {
    //platformtools_w
    //public static void f(String str, String str2, Object... objArr)
    XposedHelpers.findAndHookMethod("com.tencent.mm.sdk.platformtools.w", lpparam.classLoader, "f",
            String.class, String.class, Object[].class,
            new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    String str  = (String) param.args[0];
                    String str2  = (String) param.args[1];
                    Object[] objArr= (Object[]) param.args[2];
                    String format = objArr == null ? str2 : String.format(str2, objArr);
                    Log.e(TAG+"f"+str,format);
                    super.beforeHookedMethod(param);
                }
            });

}
static private void platformtools_w_Log_e(XC_LoadPackage.LoadPackageParam lpparam) {
    XposedHelpers.findAndHookMethod("com.tencent.mm.sdk.platformtools.w", lpparam.classLoader, "e",
            String.class, String.class, Object[].class,
            new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    String str  = (String) param.args[0];
                    String str2  = (String) param.args[1];
                    Object[] objArr= (Object[]) param.args[2];
                    String format = objArr == null ? str2 : String.format(str2, objArr);
                    if (format == null) {
                        format = "";
                    }

                    Log.e(TAG+"e"+str,format);

                    super.beforeHookedMethod(param);
                }
            });

}
...
...
=================
查看打印日志的情况
LogInfo.png
发送与接收消息看看
sendMessage.png




发送消息在日志里面,不过多次毕竟后,发现不是通信的Log。看来通信的日志还得花不少事件慢慢折腾了。
LogInfo2.png

在发送一张图片看看日志
LogInfo3.png


LogInfo4.png


在朋友圈中任意打开一张照片看看,你会看看到日志中有朋友圈图片本地的存储位置
LogInfo5.png

在打开一张看看
LogInfo6.png

太累了,今天就先分析到这里。找个有空的时间进一步深入.
XLog.png
XLog3.png

免费评分

参与人数 23威望 +2 吾爱币 +37 热心值 +22 收起 理由
霸气侧漏m2 + 1 + 1 用心讨论,共获提升!
zhiyi1120 + 1 + 1 谢谢@Thanks!
javacafe + 1 + 1 热心回复!
坏灰灰 + 1 + 1 我很赞同!
阿呆哥 + 1 用心讨论,共获提升!
LHQ + 1 + 1 热心回复!
ayoma + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
xgameboy + 1 + 1 我很赞同!
Three_fish + 1 + 1 谢谢@Thanks!
onexiao + 1 + 1 热心回复!
sm378436625 + 1 + 1 热心回复!
moon1981911 + 1 + 1 我很赞同!
Alog + 1 + 1 热心回复!
imchen + 1 + 1 谢谢@Thanks!
a5606495 + 1 + 1 谢谢@Thanks!
Bad丶Boy + 1 + 1 最近再学JAVA 有时间再学
rox + 1 + 1 热心回复!
吾爱丶小灰 + 2 + 1 谢谢@Thanks!
oxxo119 + 1 + 1 我很赞同!
zsyhn + 1 + 1 谢谢@Thanks!
howsk + 2 + 1 用心讨论,共获提升!
liye1320 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qtfreet00 + 2 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

 楼主| younghare 发表于 2018-3-13 11:46
88996633 发表于 2017-12-25 21:37
有联系方式吗 给个可以吗

我在吾爱中没有权限留言,你可到我的今天头条私信我

https://www.toutiao.com/c/user/2754992843/#mid=1563033596209153
 楼主| younghare 发表于 2017-10-25 08:39
本帖最后由 younghare 于 2017-10-25 08:40 编辑
oоoоО○ 发表于 2017-10-25 03:37
不明觉厉,日志里看到了聊天内容。难道那些号称读取微信聊天记录的收费软件就是这个原理?

聊天记录是直接读取微信sqlite数据库
张寻欢 发表于 2017-10-24 17:48
NaZio 发表于 2017-10-24 18:22
不懂的人自然不懂,反正我是不懂。。。
星星当空照 发表于 2017-10-24 18:23
这个思路值的参考,从日志角度着手
丿颠覆灬虎哥 发表于 2017-10-24 18:36
看不懂 但是感觉很厉害
刘军boss 发表于 2017-10-24 19:14
感觉不错,技术大牛
吾爱丶小灰 发表于 2017-10-24 19:21
看起来很厉害的样子,评分是给楼楼最大的动力
sbtabtg123 发表于 2017-10-24 19:50 来自手机
虽然看不懂,但是楼主辛苦了
gang103 发表于 2017-10-24 20:06
支持下楼主,继续加油啊!!!!!
麋鹿啊 发表于 2017-10-24 20:38
本帖最后由 hacker完美 于 2017-10-24 20:47 编辑

不错 虽然看不懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

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

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

GMT+8, 2024-5-24 05:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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