Hack 微信


Hack微信 鲶鱼团队 夕子 目录 • 功能演示 • 功能介绍 • 原理简介 • 小结 功能演示 Demo 功能介绍 做什么 • 在不修改微信自身apk的前提下,为微信增 加额外的功能,比如实现“密友”功能 – 私密会话的添加与删除 – 私密会话的隐藏与显示 原理简介 怎么做 ListView Adapter DataSource Cursor ContentResolver SQLiteDatabase ContentProvider Adapter ListView Adapter DataSource Cursor ContentResolver SQLiteDatabase ContentProvider Cursor Cursor 怎么做——方法二 SQLiteDatabase ContentProvider ContentResolver ListView Adapter DataSource Cursor ContentResolver SQLiteDatabase ContentProvider query() 怎么做——方法三 挑选方案 • : 没有ContentResolver和ContentProvider • : 微信的Adapter中正好有一个方法用来设置过滤列表 Activity ListView Adapter Cursor query() findViewById() getAdapter() changeCursor() setCursor() SELECTION where clause AndroidManifest monitor/ hierarchyviewer Fragment 梳理流程 将Activity对象记入静态变量中 寻找ListView 刷新UI Hook Activity.onPostResume() 由ListView获得Adapter 触发更新Cursor 触发更新Adapter 由Adapter获得过滤名单List 重新设置新的过滤名单 技术细节——隐藏/显示密友 技术细节——进入密友模式 • 分别添加和删除加速度SensorEventListener,监视手机“摇一摇”。 • 当摇一摇触发时,从静态变量中取出Activity,寻找到ListView后刷新 修改ConversationList中某个item的 LongClick事件 为Menu添加选项 为选项添加响应事件 OnItemLongClickListenerWrapper OnCreateContextMenuListenerWrapper OnItemClickListenerWrapper 技术细节——设置密友 挑战 有哪些挑战? • 混淆带来的麻烦 • 微信ListView异步加载 • 实时注入 混淆带来的麻烦 • 同样的类/方法,不同编译版本,混淆名不一样 解决方案: • 尽量使用未混淆的类名/函数名/变量名 • 通过特征找到混淆的类名/函数名/变量名 微信ListView异步加载 • 聊天的ListView的加载是一个异步的过程 • 解决方案: • 将寻找ListView的逻辑写成一个Runnable,发现找 不到ListView就再次post自己,直至找到。 实时注入 • 问题: • 微信进程挂了,如何重新注入? • 鲶鱼进程挂了,重启后如何保证不重复注入? • 鲶鱼被卸载了,如何实时去除密友功能? 鲶鱼进程 微信进程 dex 注入 双向Binder,linkToDeath 微信PID命名的Socket 实时注入 • 微信进程挂了,如何重新注入? 鲶鱼端通过linkToDeath监听到微信挂了之后,重复Post 1秒间隔的 message去注入微信,直到成功为止 • 鲶鱼进程挂了,重启后如何保证不重复注入? 重复加载dex,导致功能异常,通过socket,以鲶鱼进程能不能连接上 去,来作为一个flag,说明有没有注入过 • 鲶鱼被卸载了,如何实时去除密友功能? 微信端通过监听到卸载广播,主动退出,当用户重启后,密友功能消 除 总结 • 从根出发 • 顺藤摸瓜 • 踩点按钩 • 精确勿差 谢谢大家 QQ群: 321150823 新浪博客:鲶鱼团队 微信公众号:鲶鱼
还剩23页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

tianzhidao

贡献于2014-08-31

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf