首页
社区
课程
招聘
[原创]android qq明文解析
发表于: 2019-1-31 11:50 18117

[原创]android qq明文解析

2019-1-31 11:50
18117

之前是hook的java层的encoderequest函数,但是这里面入参太多,不知道最终组包是如何进行的也,这篇先看一下腾讯的tea算法加解密前后数据是什么样子的。

通过peid的插件krypto analyzer分析qq的so文件,找到libcoderwrapperV2。里面使用了tea算法,


 ​​​

故我们只要hook这个函数里面的函数就好,放到IDA中,连函数名都没有隐藏:


​ ​​​

猜测这里的TeaEncryptECB就是加密,另一个就是解密了,参数感觉第一个和第二个一个是明文,一个是密钥,第三个应该就是最终输出的密文了。后面就开始写frida代码了:

frida直接用pip install frida==12.0.3即可安装,这里注意frida是针对特定python版本的,如果你的版本号和frida对应不上的话,会报错:

我这里是python3.6.5的

还下载了:frida-tools==1.0.0

然后上https://github.com/frida/frida/releases下载对应的android版本的frida-server类似IDA,我这里使用的nexus 6p,下载的就是


然后push到安卓测试机里,修改权限后跑起来。


我们先看一下连上了没:

左边是进程号,右边是进程名,-U是usb的意思。因为这里我是用的调试真机。然后这里qq的聊天消息时6628进程,com.tencent.mobileqq:MSF。后面我们hook这个进程即可。

这里虽然TeaEncryptECB是导出函数应该,但是不知道腾讯用了什么方式,hook不到,我用IDA跟进去,这段代码也没有被认为是函数,只能通过基址加偏移的方式来Hook了,先进去看看so库的基址:

这里cd646000就是so的基址,然后再找偏移:


 ​  ​​​

偏移为0x00038E30

参数如下:

 ​​​ 

所以最终我们要hook的地址就是:0xcd646000 + 0x00038E30 = CD67EE30。看四哥的博客说这里最后因为thumb和arm指令的区别,最后还得加1,变为CD67EE31。

这里地址也可以直接通过代码获取:

var codecwraperAddr = Process.findModuleByName("libcodecwrapperV2.so").base.add(0x38e31);

而后编写js的hook代码:

一顿操作写完,程序跑起来,qq崩了。。崩了。。。

应该是使用了反hook吧,不知如何解决,到知识星球提问,有前辈给了建议:


 ​​​

那就都研究一下吧。不过领导要求年前要有明文数据,来不及看这个了。。留个白

。。。。。。。

直接IDA分析入手:


 ​​​


这里IDA分析不出这个TEA算法的加密函数,需要通过上述手动计算函数地址:


 ​​​

libcodecwrapper基址加上0x38E30的偏移获得,这里我没有+1反正。然后跳转到函数开头,发现并没有被认为是函数:


 ​​​

按 C将当前段理解为代码段。然后在函数开始下断点:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-1-31 14:50 被hackdaliu编辑 ,原因: 图片重传
上传的附件:
收藏
免费 6
支持
分享
最新回复 (17)
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
图片不见了,建议直接贴下图到论坛本地。

现在文章图片都是外链,例如类似:

引用https://img-blog.csdnimg.cn/20190125113155814.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdXRpYW5oZW5nNjU0,size_16,color_FFFFFF,t_70

时间长了,图片很容易失效,建议大家尽可能本地化上传到论坛一份。
论坛编辑器,直接支持 图片粘贴,类似word编辑器,很方便。
最后于 2019-1-31 14:27 被kanxue编辑 ,原因:
2019-1-31 13:06
0
雪    币: 6573
活跃值: (3893)
能力值: (RANK:200 )
在线值:
发帖
回帖
粉丝
3
图片看不到,贴好图片,直接加精华
2019-1-31 14:21
0
雪    币: 4831
活跃值: (479)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
获取so函数地址,在已知so和函数名的情况下,可以直接使用Module.findExportByName(module|null, exp),然后Interceptor.attach(target, callbacks)即可,顺便给补上关于Frida target:Frida target
最后于 2019-1-31 15:03 被xiaokangpwn编辑 ,原因:
2019-1-31 15:01
0
雪    币: 1535
活跃值: (695)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
.666
2019-1-31 15:48
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
6
感谢分享!
2019-1-31 15:48
0
雪    币: 10962
活跃值: (2925)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
7
不怕收到律师函
2019-1-31 16:11
0
雪    币: 2719
活跃值: (1595)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
没有删帖子  之前   先截图一波
2019-1-31 16:57
0
雪    币: 3897
活跃值: (157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
666
2019-1-31 17:16
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
10
精彩
最后于 2019-2-1 10:13 被Editor编辑 ,原因:
2019-1-31 18:12
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
贴好图片,+精华
2019-2-1 09:02
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
12
2019-2-1 10:13
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
00 00 00 bc 包大小  00 00 00 0b 是采用登录后的加密方式 01 是复杂包头 00 01 40 26 为请求码 00 00 00 00 是一个空的int值 0e qq 号码长度  qq号后边以后都是加密的body
最后于 2019-2-2 17:11 被熊大编辑 ,原因:
2019-2-2 17:09
0
雪    币: 218
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
最近正在研究手机端QQ的协议.
通过ida修改2013版本的QQ 加密库 libcoderwrapperV2 里面的gIsDebug参数,可以输出系统日志.如下:
可以看出0-4字节是长度,4-8字节为版本



登陆用户1222132 
密码12345678



03-05 09:45:38.342: D/dalvikvm(768): GC_CONCURRENT freed 558K, 5% free 12438K/13063K, paused 25ms+68ms, total 424ms
03-05 09:45:38.342: D/dalvikvm(768): WAIT_FOR_CONCURRENT_GC blocked 400ms
03-05 09:45:38.682: D/dalvikvm(768): GC_FOR_ALLOC freed 355K, 5% free 12428K/13063K, paused 218ms, total 218ms
03-05 09:45:38.802: D/dalvikvm(768): GC_FOR_ALLOC freed 308K, 5% free 12428K/13063K, paused 119ms, total 119ms
03-05 09:45:38.932: D/dalvikvm(768): GC_FOR_ALLOC freed 295K, 5% free 12429K/13063K, paused 108ms, total 109ms
03-05 09:45:38.953: I/libboot(768): Java_com_tencent_qphone_base_util_CodecWarpper_encodeRequest called
03-05 09:45:38.953: I/libboot(768): #####encodeRequest begin#####
03-05 09:45:38.953: I/libboot(768): Sign State = 1
03-05 09:45:38.953: I/libboot(768): szServiceCmd = wtlogin.login
03-05 09:45:38.953: I/libboot(768): Fix Appid=537037304
03-05 09:45:38.963: I/libboot(768): m_ClientVerInfo = 310260000000000|A4.6.0.73172
03-05 09:45:38.963: I/libboot(768): CSSOData::init called m_ReqHead.m_TimeStat = 
03-05 09:45:38.963: I/libboot(768): ssodata init 1222132 
03-05 09:45:38.963: I/libboot(768): ssodata set Simple false
03-05 09:45:38.963: I/libboot(768): A2 Simple false
03-05 09:45:38.963: I/libboot(768): CSSOReqHead::serialize CookieLen=8
03-05 09:45:38.972: I/libboot(768): m_Cookie : 6d8ae137
03-05 09:45:38.972: I/libboot(768): IMEI Simple false
03-05 09:45:38.972: I/libboot(768): Ksid Simple false
03-05 09:45:38.972: I/libboot(768): IMSI + Revision Simple false
03-05 09:45:38.972: I/libboot(768): uin = 1222132, servicecmd = wtlogin.login lower = wtlogin.login
03-05 09:45:38.972: I/libboot(768): Account size = 0
03-05 09:45:38.982: I/libboot(768): encyped by Zero
03-05 09:45:38.982: I/libboot(768): version = 8
03-05 09:45:38.982: I/libboot(768): #####encode end#######
03-05 09:45:39.072: I/libboot(768): ParseRecvData begin
03-05 09:45:39.072: I/libboot(768): totalsize = 2165
03-05 09:45:39.083: E/libboot(768): totalsize 2165 > buffer size 2048
03-05 09:45:39.083: I/libboot(768): ParseRecvData end
03-05 09:45:39.083: I/libboot(768): ParseRecvData begin
03-05 09:45:39.083: I/libboot(768): totalsize = 2165
03-05 09:45:39.083: I/libboot(768): m_Version = 8
03-05 09:45:39.092: I/libboot(768): m_RetCode: 0
03-05 09:45:39.092: I/libboot(768): rspHeadLen = 45, aOffset = 41
03-05 09:45:39.092: I/libboot(768): m_Flag: 0
03-05 09:45:39.092: I/libboot(768): ssoData deserialize done
03-05 09:45:39.092: I/libboot(768): uin = 1222132, cmd = wtlogin.login, recvSize = 2165
03-05 09:45:39.092: I/libboot(768): Parse Other Resp
03-05 09:45:39.102: D/MSF.C.WTLoginCenter.MsfProvider(768): [E]onRecvData find wtloginMsfListener for 153139
03-05 09:45:39.152: I/libboot(768): onResponse done
03-05 09:45:39.152: I/libboot(768): buffer size is 0, end!
03-05 09:45:39.152: I/libboot(768): ParseRecvData end
03-05 09:45:39.322: I/ActivityManager(160): START {act=mqq.intent.action.VERIFYCODE flg=0x10000000 cmp=com.tencent.mobileqq/.activity.VerifyCodeActivity (has extras) u=0} from pid 750
03-05 09:45:39.322: W/WindowManager(160): Failure taking screenshot for (328x546) to layer 21015
03-05 09:45:39.882: I/Choreographer(750): Skipped 49 frames!  The application may be doing too much work on its main thread.
03-05 09:45:39.942: V/PhoneStatusBar(215): setLightsOn(true)
03-05 09:45:40.193: I/ActivityManager(160): Displayed com.tencent.mobileqq/.activity.VerifyCodeActivity: +843ms


0000   00 00 08 75 00 00 00 08 02 00 00 00 00 0b 31 32  ...u..........12
0010   32 32 31 33 32 5d 2a 61 23 31 ed 14 b3 a0 87 1b  22132]*a#1......
0020   87 0f e6 7a fb 5c c1 e1 a6 ba 25 cf 5a 0b ec 39  ...z.\....%.Z..9
0030   d5 4c 4f f5 14 79 37 79 e5 d6 0b a3 50 d7 0b ba  .LO..y7y....P...
0040   89 80 8f 21 8e 11 59 d3 e6 11 37 58 93 da 92 75  ...!..Y...7X...u
0050   ff 0b eb 84 86 a0 5d 19 07 ff db 8e f2 ca b0 2b  ......]........+
0060   9f d7 b4 00 1e d0 68 52 c2 39 09 02 b2 49 b9 f4  ......hR.9...I..
0070   a1 fa 12 93 aa 82 f3 00 e9 16 dd 96 c7 54 80 90  .............T..
0080   02 f2 cb 5a aa 6e b7 f5 f6 f6 69 9c 3d 9e 34 c8  ...Z.n....i.=.4.
0090   e7 24 1b 18 6d 20 95 29 2e d0 db e9 e6 6b 20 a2  .$..m .).....k .
00a0   66 7c 5b 08 d8 03 e6 a1 ad 01 ba 56 e2 17 16 91  f|[........V....
00b0   55 06 7e ec e4 f6 27 0e 6e 6b fe 23 63 29 16 9f  U.~...'.nk.#c)..
00c0   6b fa fa a4 69 a9 29 d8 d7 fa 1b 83 39 2d e1 29  k...i.).....9-.)
00d0   df e2 b4 dc 3f ba b4 49 49 2b 62 61 68 7a 84 ba  ....?..II+bahz..
00e0   cf 6a ae 8d 06 a0 18 6c f1 64 1e 6d 78 0f 7a 36  .j.....l.d.mx.z6
00f0   00 63 54 92 34 c3 bb c1 9b 38 0a fa 1c 94 66 b1  .cT.4....8....f.
0100   3d 74 4e 4b 35 82 68 8c cf 9b a9 f9 e4 05 a8 db  =tNK5.h.........
0110   99 52 b6 3e 2b 7b b3 bb a7 02 e5 7c d5 48 69 a5  .R.>+{.....|.Hi.
0120   b5 9f bd ba f8 10 2e e3 62 45 be 18 dc 1a 5e 3a  ........bE....^:
0130   82 af d1 16 54 79 8b b9 f2 65 ac 5a af 93 e3 b7  ....Ty...e.Z....
0140   a2 25 ec bd 99 5b 76 6d 05 d0 b9 3b 0a 57 bf a5  .%...[vm...;.W..
0150   ce af 23 18 72 04 05 d6 1c 59 ef 46 b6 86 d0 f6  ..#.r....Y.F....
0160   53 2b d8 0b df f9 24 c7 b3 87 15 0e 8b c1 d5 6a  S+....$........j
0170   17 64 27 4d 02 4e 9e 97 f0 1f a3 7e 18 f3 e4 17  .d'M.N.....~....
0180   a3 24 17 60 72 6d a4 6a ec 71 4d d5 21 db 77 b2  .$.`rm.j.qM.!.w.
0190   16 2b 29 d2 d8 e9 8d 65 0d a9 c8 aa 9d 1f db 86  .+)....e........
01a0   b1 fa cb 79 2a 41 f0 17 5c 33 89 59 04 07 50 bf  ...y*A..\3.Y..P.
01b0   fc e7 08 91 83 e0 8f 15 54 f3 f8 b4 6f d1 bc 73  ........T...o..s
01c0   32 90 ce d1 f6 b1 2c e9 fb 7b 1a 52 45 5a 91 60  2.....,..{.REZ.`
01d0   5f a2 94 71 56 c0 1c a0 b8 77 bb ec 67 09 f5 5e  _..qV....w..g..^
01e0   c7 33 da e3 73 d6 83 ba c0 ff ff dc ae 12 68 7d  .3..s.........h}
01f0   3a 88 f6 83 6b c8 4a 79 41 1a 86 a2 e1 d5 b7 07  :...k.JyA.......
0200   cf 80 bd 45 3f 95 b2 b4 b0 2f d8 f6 67 b8 6d 56  ...E?..../..g.mV
0210   ef a7 28 2f d4 3f 70 49 31 f1 8e c8 41 e8 cf 24  ..(/.?pI1...A..$
0220   72 5d 9f 94 a0 88 61 5c 83 e8 3e 73 eb 70 fa f8  r]....a\..>s.p..
0230   ce 9c d2 eb a0 d2 bb eb 1d af 63 46 2c 27 d4 07  ..........cF,'..
0240   9d aa 4c 95 a0 c3 8b 25 f3 e5 56 cb b1 fb 11 b9  ..L....%..V.....
0250   ee 43 5e 54 b1 eb ef 4a 57 04 2f a0 62 f5 42 5b  .C^T...JW./.b.B[
0260   ac 5a 69 e0 a5 5b f7 84 4a e3 f3 99 aa 75 ce 54  .Zi..[..J....u.T
0270   85 6c 2c 3f ff 51 b9 e4 bf a4 50 a9 99 67 19 9a  .l,?.Q....P..g..
0280   c8 4d 27 5e ab 8a de 43 2b 01 1a 2a 8a ba dc 2b  .M'^...C+..*...+
0290   67 14 a3 18 b8 09 e3 47 80 c2 64 0a 87 3c 52 a8  g......G..d..<R.
02a0   4d 7d 17 98 71 df b1 cf d7 b5 8a c1 50 1b 7e 44  M}..q.......P.~D
02b0   62 43 d9 65 d9 8e 33 7a 6a 11 ba 83 1b 13 0f 42  bC.e..3zj......B
02c0   00 3e 2c 80 98 d5 29 75 e1 0e d8 47 18 61 10 e2  .>,...)u...G.a..
02d0   f9 87 ac 0c c5 f5 d2 6b 49 b3 02 93 db 04 93 23  .......kI......#
02e0   a7 e2 bd 6b b9 0d c9 fe 99 9c 7f 27 5a 88 58 45  ...k.......'Z.XE
02f0   d6 77 c6 c1 ab 7b e0 dd 1f 31 65 30 6d 58 d5 b9  .w...{...1e0mX..
0300   9d 64 dd 4e 7e 27 9a 6f 31 a8 d7 de 73 e0 09 87  .d.N~'.o1...s...
0310   c0 29 f5 8d 18 12 a3 6f 34 92 f0 18 c3 06 d6 03  .).....o4.......
0320   7c b1 a2 11 a3 0b 70 47 3b da 4c 0d be 5c c7 0a  |.....pG;.L..\..
0330   43 69 d5 c3 56 76 0a 10 84 36 aa a9 59 b9 01 04  Ci..Vv...6..Y...
0340   ea 8a 75 67 ef 6b dc 25 b4 10 5d 8c f5 09 f3 0e  ..ug.k.%..].....
0350   15 d9 40 4a 1d 66 ad 97 63 a9 04 d8 29 fd f6 db  ..@J.f..c...)...
0360   95 1e 89 7a 51 30 bc ea 9f e0 34 bf 6d 3d 0a f9  ...zQ0....4.m=..
0370   1f e4 8d 54 22 25 c0 49 9c 6c c5 10 f8 35 d0 f2  ...T"%.I.l...5..
0380   9a b3 96 34 7e 53 ae 68 43 2a 03 7c f6 6d ef 51  ...4~S.hC*.|.m.Q
0390   4c 10 d4 f4 86 1c 09 e3 06 15 d5 5a e7 e7 80 33  L..........Z...3
03a0   a4 41 5a 45 83 c7 e0 a3 49 c6 da 1f 3f e0 93 a3  .AZE....I...?...
03b0   f7 df 4a 07 7c 8d 4e 4a ea 78 6f c9 5b d1 f8 f8  ..J.|.NJ.xo.[...
03c0   d8 9e f0 a4 a7 8a 22 86 2c aa 47 0a 61 b9 bf d9  ......".,.G.a...
03d0   be b2 69 cd 29 c8 fe 88 a7 87 d9 c2 f7 0a e9 74  ..i.)..........t
03e0   1f 5a 72 ea 65 9e 15 14 1e 0f de db 82 fc 88 7c  .Zr.e..........|
03f0   12 e6 7b a0 c4 f9 23 3f d9 93 74 da 8b 38 cc 70  ..{...#?..t..8.p
0400   78 00 67 90 f0 f4 b7 71 d0 b3 ba fa 90 1d bc e3  x.g....q........
0410   ba 7f cd f9 31 f6 50 6f 86 02 3a 17 df 49 4b 35  ....1.Po..:..IK5
0420   eb 30 8e c2 c0 8a e2 e3 94 2f 7e 5d 02 5c 10 bc  .0......./~].\..
0430   72 56 6f 3a 0f f9 ff 60 82 7c 17 d9 27 e2 34 86  rVo:...`.|..'.4.
0440   47 73 9d 7e c8 fb eb 9e d9 cd fa 5f f5 ff 1c b6  Gs.~......._....
0450   9c fc 76 29 4d 31 6e 6d 3c c5 67 7c 8d 0b 6c da  ..v)M1nm<.g|..l.
0460   fd 29 62 bc cb 9a 7b 94 9e f5 03 b3 8c 73 3b e5  .)b...{......s;.
0470   eb b6 d0 76 09 ce e7 50 68 68 12 67 0b 32 09 58  ...v...Phh.g.2.X
0480   7d f6 c3 ee 30 aa af 7f 82 d6 cd 35 0e c9 da 8f  }...0......5....
0490   36 0c 62 ca 4b c2 a5 78 37 1c 1a af b3 fc 7b 07  6.b.K..x7.....{.
04a0   d1 2b a9 71 4c db 12 b1 42 e2 6f 35 c2 b1 9f f6  .+.qL...B.o5....
04b0   29 f6 2a e6 57 a4 af c6 eb 81 8f f6 95 2b 41 a3  ).*.W........+A.
04c0   ba 63 49 2a b6 49 e1 f4 5d b0 fa 91 52 75 4d 45  .cI*.I..]...RuME
04d0   95 fe b7 20 0f 21 26 96 21 ea 56 93 62 c3 b4 6b  ... .!&.!.V.b..k
04e0   54 6f 5a 85 8b e8 40 e5 fa 72 5f de f7 96 87 ed  ToZ...@..r_.....
04f0   fc 0b fd 76 09 63 cd b3 20 9d d2 21 39 8b 45 31  ...v.c.. ..!9.E1
0500   de 40 99 fc aa ed f5 34 b3 2c d6 21 bb cf 7b 80  .@.....4.,.!..{.
0510   c4 29 c0 40 b3 ab e9 d0 da c7 78 48 f2 bb 44 88  .).@......xH..D.
0520   a7 fa 39 9f 8b d8 75 3e 55 2d 50 e2 c3 4b 44 3f  ..9...u>U-P..KD?
0530   f2 fb ce b5 67 cc 6a 20 c1 1b b1 cb 9d 34 4f 92  ....g.j .....4O.
0540   2f 14 fc 1a e4 4b                                /....K
2019-3-6 11:15
0
雪    币: 218
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
这个工具的确有用
我刚才试用了一下,qq2013版本的登陆消息,用的是初始密码,抓到的包的确可以被解密,非常感谢.
2019-3-6 14:49
0
雪    币: 17
活跃值: (217)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我之前正好做过一个Hook QQ数据包的工具,针对Android的,MobileQ750Hook   IOS的,IOSMobileQQHook
2019-3-19 14:51
0
雪    币: 189
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
加密后的密文在哪里获取? 得不到,密钥倒是从[r0]处能得到,   [r1]处能得到加密后密文吗?  
2019-4-25 04:20
0
雪    币: 178
活跃值: (1306)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
感谢分享!
2019-7-4 14:45
0
游客
登录 | 注册 方可回帖
返回
//