首先,这个不是写个新手看的,内容比较粗略,把几个关键点自己列一下,以做记录

首先,我对andriod不懂,对java本身也不是非常熟,也从来没写过andriod或java的程序,但本着曾经对编程的理解,想动动手。

一、准备工作,装环境,java jdk, AS(andriod studio),apk反编译工具 jadx

这个步骤有几点提醒一下,一是网上关于AS的版本较旧,安装后要配置很多环境,我用的3.2,安装即可用

apk反编译工具,网上推荐的步骤也较为繁琐,但把apk的打包过程讲了一下,也可以学一下,中间我用了apktool,但最后发现只要jadx即可

二、学习了一下AS,但由于重点在看WX,并没有去动手做什么,但按规矩还是写了一个helloword,这里唯一注意一下如何创建虚拟手机模拟器调试

AS本身直接带有,创建一个就行了。但为了速度,还是选择了夜神模拟器,这个还是挺好用的,如何连接调试论坛上都有

三、在模拟器上如何安装Xposed,网上资料很多,因为用的夜神,已经root过了,于是也在它论坛上下了个,直接装一下即可,

四、写了第一个hook,感觉挺好用的,开始按网上的资料开始折腾,以下为折腾的记录

a、网上说要Android Device Monitor  这玩意AS上没有,但在SDK目录 里有,找一下就可以了,这个东西,我感觉能有一点用处,能监控到执行了哪些方法,不过貌似跟AS不能同时连上模拟器,另外在用这个之前,还得装个插件BuildProp Enhancer,这样才能调试到WX的内容

b、jadx如果想用好,请找个cpu和内存都非常棒的机器,我被卡了一晚上,都没有反编译完,用了一台32G内存的机器,大概15分钟完事

c、模拟器上带的是WX6.7.3,网上资料都是比较老的WX版本,没法跑起来,只能靠静态的去看

d、网上我只看了收消息和回复消息的部分,其它的感觉不想去弄,所以没怎么看,对于收消息有些人用的拦截insertWithOnConflict 来通知收到消息,也可以,但我还是折腾的

com.tencent.mm.booter.notification.b,这个比较即时一些

e、回复消息部分,网上都只做了简单回复,个人和群都可以,但没有处理@的相关代码,在检测是否有人@我时,可以在监控的类上,检测第一个参数,即
com.tencent.mm.booter.notification.b上的czp这个值,
if (czp.contains("notify@all") || czp.contains("<![CDATA[wxid_3e3gejxxxxk22]]>"))
另外,在有人@我时,内容里也包含了@我了WX的ID,还得要拆分消息的内容,这个挺坑的! 消息的内容大概是这样wxid_3e3gejxxxxk22:@隐客 你好啊
这样就知道是谁@我了
x=field_content.indexOf(":");
String id=field_content.substring(0,x);
String co=field_content.substring(x+1);
 
同时回复的时候,发送时的最后一个参数注意,也组成这样的格式即可,
HashMap hm= new HashMap<String, String>();
hm.put("atuserlist","<![CDATA["+id+"]]>"); f、最难的一处是如何获取好友列表,网上有一处资料,是从加载好友列表到ListView着手的,虽然可以实现,但有个不足,就是要人工点一下WX上的通讯录才会执行
setAdapter这里的代码,另外一个方法,就是自己去读WX的数据库,想想不太想弄,于是监控了一下发现在WX启动的时候,本身有读联系人的动作,于是拦截了一下读数据库的动作
rawQueryWithFactory,就OK了,是从FROM rcontact这个表里读的
g、个人信息就不想读了,比较简单,在SharedPreferences里 至次,三个问题解决了,就写这么多吧!

学习Xposed --记WX功能分析的过程的更多相关文章

  1. (转)Maven学习总结(二)——Maven项目构建过程练习

    孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(二)——Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项 ...

  2. ARM Linux驱动篇 学习温度传感器ds18b20的驱动编写过程

    ARM Linux驱动篇 学习温度传感器ds18b20的驱动编写过程 原文地址:http://www.cnblogs.com/NickQ/p/9026545.html 一.开发板与ds18b20的入门 ...

  3. 记录学习antd design pro dva的过程,主要记错, 多图预警,如有理解偏差,忘指出,多谢!

    首要问题: 如何增加菜单项 答案: 在router.config中添加路由,在locales语言国际化增加选项 问题1: 答案1: 问题2: 这个要修改state,正确写法 存在的疑惑:为什么不能直接 ...

  4. 一个Python爬虫工程师学习养成记

    大数据的时代,网络爬虫已经成为了获取数据的一个重要手段. 但要学习好爬虫并没有那么简单.首先知识点和方向实在是太多了,它关系到了计算机网络.编程基础.前端开发.后端开发.App 开发与逆向.网络安全. ...

  5. Deep Learning学习随记(二)Vectorized、PCA和Whitening

    接着上次的记,前面看了稀疏自编码.按照讲义,接下来是Vectorized, 翻译成向量化?暂且这么认为吧. Vectorized: 这节是老师教我们编程技巧了,这个向量化的意思说白了就是利用已经被优化 ...

  6. 转:增强学习(二)----- 马尔可夫决策过程MDP

    1. 马尔可夫模型的几类子模型 大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是 ...

  7. Spring Boot学习随记

    由于早年在管理领域耕耘了一段时间,完美错过了Spring的活跃期, 多少对这个经典的技术带有一种遗憾的心态在里面的, 从下面的我的生涯手绘图中大概可以看出来我的经历. 最近由于新介入到了工业数字化领域 ...

  8. Maven学习总结(二)——Maven项目构建过程练习

    上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...

  9. Maven学习总结(二)——Maven项目构建过程练习_转载

    上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立M ...

随机推荐

  1. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array (简单DP)

    题目:https://codeforces.com/contest/1155/problem/D 题意:给你n,x,一个n个数的序列,你可以选择一段区间,区间的数都乘以x,然后求出最大字段和 思路: ...

  2. vue-cli 项目里屏幕自适应

    很多同学可能在写h5的时候,也会遇到移动端如何控制屏幕自适应问题!在移动端网页开发中,我们可以用手机淘宝的flexible.那么在vue当中,也同样可以用!接下来就介绍下如何在vue-cli配置的项目 ...

  3. Shiro的认识

    #2019.2.2 Apache Shiro是基于java的一个安全框架.他帮助我们完成:认证.授权.加密.会话管理.web集成.缓存等问题. 在了Shiro之前,先要了解一下什么是权限管理? 权限管 ...

  4. linux下ftp权限控制

    需求背景: 1.创建2个账号给联调的系统使用读取我方服务器提供的文件信息.只允许看到限定的目录,对目录下的文件只有只读权限,禁止shell登录. 2.创建一个内部账号提供文件信息,只允许看到限定的目录 ...

  5. nginx——优化 Nginx 连接超时时间

    1. 什么是连接超时 (1) 举个例子,某饭店请了服务员招待顾客,但是现在饭店不景气,因此要解雇掉一些服务员,这里的服务员就相当于 Nginx 服务建立的连接 (2) 当服务器建立的连接没有接收处理请 ...

  6. JS 删除Array对象中的元素。

    var idTemp=new Array(); var nameTemp = new Array(); nameTemp.splice($.inArray(“1”, nameTemp),1); idT ...

  7. Java 实现ftp 文件上传、下载和删除

    本文利用apache ftp工具实现文件的上传下载和删除.具体如下: 1.下载相应的jar包 commons-net-1.4.1.jar 2.实现代码如下: public class FtpUtils ...

  8. 基于Openstack环境下开启SRIOV

    主题思想: 先在系统层面修改配置文件,再去openstack里面修改配置文件 compute node系统层面: 先确认下是否含有ixgbe moudle lsmod |grep ixgbe 修改/e ...

  9. java DOM

    使用DOM解析XML文档的步骤 1.创建解析器工厂对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 2 ...

  10. arch xfce快捷键

    <Alt>F1:xfce4-popup-applicationsmenu 打开右键菜单 <Alt>F2:xfrun4 打开应用程序运行窗口,同<Alt>F3差不多 ...