首页
社区
课程
招聘
[原创]微信逆向之 ---给微信添加控件--笔记
2017-11-28 16:27 14494

[原创]微信逆向之 ---给微信添加控件--笔记

2017-11-28 16:27
14494

工具准备

  • Android studio
  • Android模拟器(安装微信6.5.16版本)
  • ddms
  • 微信smali工程(6.5.16 )-- 牵手生活 csdn博客 上可以下载微信smali6.5.16工程:http://download.csdn.net/download/caizhigui/10031986
  • jadx工具
  • 微信xposed工程

先看看实现的效果图



首先用ddms获取界面布局情况


可以看到:

点赞 id:com.tencent.mm:id/cvj

评论id:com.tencent.mm:id/cvm

用jadx搜索cvj和cvm









用ddms录制轨迹--弹出点赞与评论的选择窗口

在trace文件中全文搜索show

0x74609b50com.tencent.mm.ui.base.MMPullDownViewonShowPress(Landroid/view/MotionEvent;)VSourceFile

0x7467b828com.tencent.mm.plugin.sns.ui.SnsCommentShowAbLayout<init>(Landroid/content/Context;)VSourceFile

0x7467b8d0com.tencent.mm.plugin.sns.ui.SnsCommentShowAbLayoutbuildDrawingCache(Z)VSourceFile




trace中查找onClick

0x746947e8com.tencent.mm.plugin.sns.ui.av$4onClick(Landroid/view/View;)VSourceFile



发现在av$4的OnClick

在smali工程中搜索av$4,查找特征码



发现特征码:showCommentBtn

在jadx工具中搜索showCommentBtn

在com.tencent.mm.plugin.sns.ui.av中找到onClick和showCommentBtn




在smali工程中设置断点,并跟踪分析到底走的是哪个分支



看看com.tencent.mm.plugin.sns.lucky.ui.a.e(this.qPw.fsU, cVar.qUe.uS(0));到底做了什么

第一次猜想





继续smali调试确认是否正确

samli单步调试发现不是嗲用那个而是调用 ((u) this.qPw.fsU).cB(view);





com.tencent.mm.plugin.sns.ui.En_424b8e16中找cB接口的实现




com.tencent.mm.plugin.sns.ui.En_424b8e16中找cB最后是post一个runnable







分支2--看看this.qSL.c(this.za, this.qSK);到底做了什么




其中:设置点赞与评论的事件绑定是(两个参数都是View)

this.qHp = (LinearLayout) view2.findViewById(f.pIx);

this.qHp.setOnClickListener(this.qhj.qgD.qVi);====接口实现qhj就是传递进来的第一个参数

this.qHp.setOnTouchListener(this.qhj.qBi);

this.qHq = (LinearLayout) view2.findViewById(f.pIP);

this.qHq.setOnClickListener(this.qhj.qgD.qVj);

this.qHq.setOnTouchListener(this.qhj.qBi);


分支2-samli调试进去果然是









xposed工程中添加实现

好了现在知道在哪里了,我对runnable中的run关键代码进行hook

/**

* 添加朋友圈点赞按钮

* @param lpparam

*/

public static void hook_sns_like(final XC_LoadPackage.LoadPackageParam lpparam) {

String WECHAT_UI_SNS_ITEM_LIKE_CLASSE ="com.tencent.mm.plugin.sns.ui.bh";

String WECHAT_UI_SNS_ITEM_LIKE_METHOD ="c";

Log.i(TAG,"点赞的Runnalbe外包类:"+ WECHAT_UI_SNS_ITEM_LIKE_CLASSE+"方法:"+WECHAT_UI_SNS_ITEM_LIKE_METHOD);


XposedHelpers.findAndHookMethod(WECHAT_UI_SNS_ITEM_LIKE_CLASSE, lpparam.classLoader,

WECHAT_UI_SNS_ITEM_LIKE_METHOD, View.class, View.class, new XC_MethodHook() {

@Override

protected void afterHookedMethod(MethodHookParam param) throws Throwable {

super.afterHookedMethod(param);

View view = (View) param.args[0];

final LinearLayout ll = (LinearLayout) param.args[1];

if (ll!=null){

TextView tv=new TextView(ll.getContext());

tv.setText("点赞 ");

tv.setTextColor(Color.rgb(255, 255, 255));

tv.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(ll.getContext(),"选择了我的功能",Toast.LENGTH_SHORT).show();

}

});

ll.addView(tv);



}


}


});



}


运行效果图




到现在为止我们已经成功添加上我们的控件,至于你控件打算做什么你可以慢慢实现,比如批量点赞、一键点赞、甚至是一键评论等等。。

分享是一种美德,牵手是一种生活方式。

本篇笔记我也在今日头条上做了分享





[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞1
打赏
分享
最新回复 (22)
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zylyy 2017-11-28 18:08
2
0
我就想问一下,楼主调试smali用的是何种工具
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zylyy 2017-11-28 18:17
3
0
很少用android  studio调试smaili,一般都是log的方法
雪    币: 709
活跃值: (2230)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
sudami 25 2017-11-29 00:24
4
0
调试过程很详细,很好
雪    币: 1553
活跃值: (477)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
longpoxin 2017-12-13 12:11
5
0
雪    币: 2955
活跃值: (1373)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MsScotch 2017-12-14 16:20
6
0
工程文件  放个外链?
雪    币: 451
活跃值: (1603)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
younghare 1 2017-12-14 17:12
7
0
MsScotch 工程文件 放个外链?
http://download.csdn.net/download/caizhigui/10031986
雪    币: 451
活跃值: (1603)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
younghare 1 2017-12-14 17:18
8
0
在csdn上存放的工程我设置了一些关键smali debug调试断点,主要涉及的是有微信自动化:比如自动发送图片、自动发送语音、自动发送连接、名片等等。网页登录、红包。。。
雪    币: 2955
活跃值: (1373)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MsScotch 2017-12-15 13:25
9
0
younghare http://download.csdn.net/download/caizhigui/10031986
注册账号,绑定手机号。。。
期待云盘外链~
雪    币: 451
活跃值: (1603)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
younghare 1 2017-12-26 16:03
10
0
很遗憾的告诉各位,由于这篇文章发表出来后,微信6.6.0对次功能做了特殊处理,如果需要实现该功能,需要变通。等有时间我再分享
雪    币: 709
活跃值: (2230)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
sudami 25 2017-12-30 09:57
11
0
younghare 很遗憾的告诉各位,由于这篇文章发表出来后,微信6.6.0对次功能做了特殊处理,如果需要实现该功能,需要变通。等有时间我再分享
咋个特殊处理啊?把关键搜索的字符串和DEBUG信息抹掉了吗?
再怎么特殊处理,总归是能找到弹框函数的。。
雪    币: 451
活跃值: (1603)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
younghare 1 2017-12-31 17:16
12
0
sudami 咋个特殊处理啊?把关键搜索的字符串和DEBUG信息抹掉了吗? 再怎么特殊处理,总归是能找到弹框函数的。。
微信的热更新技术
雪    币: 709
活跃值: (2230)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
sudami 25 2018-1-4 07:38
13
0
younghare 微信的热更新技术[em_15]
这个没事,你可以参考“微信巫师”Github上的源码,有一套通用的查找算法,可以大部分时候避开微信版本号的迭代。
雪    币: 207
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wujitao 2018-1-5 23:59
14
0
你好啊,现在6.6.1版本的微信,用你的方法查找已经不适用了  ?现在应该怎么做?
雪    币: 1553
活跃值: (477)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
longpoxin 2018-1-6 16:44
16
0
雪    币: 723
活跃值: (1241)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
skyun 3 2018-2-2 13:25
17
0
我想问一下,轨迹录制是哪里?
雪    币: 2359
活跃值: (278)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolsnake 2018-2-3 17:25
18
0
学习学习先。
雪    币: 472
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
山村小子 4 2018-4-10 22:46
19
0
轨迹怎么录制?
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dialox 2018-6-3 19:27
20
0
zylyy 很少用android studio调试smaili,一般都是log的方法
smalidea插件
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dialox 2018-6-3 19:27
21
0
skyun 我想问一下,轨迹录制是哪里?
在ddms里面录制
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakasasa 2018-6-3 20:11
22
0
mark
游客
登录 | 注册 方可回帖
返回