首先,这个不是写个新手看的,内容比较粗略,把几个关键点自己列一下,以做记录
首先,我对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里
至次,三个问题解决了,就写这么多吧!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现