首页
论坛
专栏
课程

[原创]android qq明文解析

2019-1-31 11:50 9012

[原创]android qq明文解析

2019-1-31 11:50
9012

之前是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对应不上的话,会报错:

 import _frida
ImportError: DLL load failed: 找不到指定的模块。

我这里是python3.6.5的

还下载了:frida-tools==1.0.0

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


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

chmod 777 frida-server-12.2.30-android-arm64

./frida-server-12.2.30-android-arm64


我们先看一下连上了没:

C:\Users\liuti>frida-ps -U
  PID  Name
-----  ---------------------------------------------------
 3896  ATFWD-daemon
 5934  adbd
 3907  android.hardware.biometrics.fingerprint@2.1-service
  411  android.hardware.configstore@1.0-service
  412  android.hardware.graphics.allocator@2.0-service
  413  android.hardware.usb@1.0-service
  414  android.hardware.wifi@1.0-service
  410  android.hidl.allocator@1.0-service
10561  android.process.acore
 6127  android.process.media
 3814  audioserver
 3815  cameraserver
 3888  cnd
 6018  com.android.nfc
 5703  com.android.phone
 5552  com.android.systemui
 7852  com.android.vending
10616  com.google.android.apps.gcs
 8209  com.google.android.apps.messaging:rcs
 8250  com.google.android.apps.photos
 8284  com.google.android.apps.turbo:aab
10744  com.google.android.apps.walletnfcrel
11150  com.google.android.contacts
 6527  com.google.android.gms
 5952  com.google.android.gms.persistent
11190  com.google.android.gms.ui
 8724  com.google.android.gms.unstable
 6104  com.google.android.googlequicksearchbox
 5989  com.google.android.googlequicksearchbox:interactor
 6216  com.google.android.googlequicksearchbox:search
 8681  com.google.android.ims
11067  com.google.android.videos
10876  com.google.android.youtube
 6066  com.google.process.gapps
10540  com.google.process.gapps
 9343  com.huawei.sarcontrolservice
 9379  com.qualcomm.qcrilmsgtunnel
 9363  com.qualcomm.telephony
 6005  com.quicinc.cne.CNEService
 6243  com.sohu.inputmethod.sogou
 9755  com.tencent.mm
 6570  com.tencent.mm:push
 9834  com.tencent.mobileqq
 6628  com.tencent.mobileqq:MSF
 6841  com.wandoujia.phoenix2
 6917  com.wandoujia.phoenix2:aid
 7247  com.wandoujia.phoenix2:channel
 9980  com.whatsapp
 8226  daemonsu:0
 8232  daemonsu:0:8223
 9314  daemonsu:0:8668

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

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

angler:/ # cat proc/6628/maps |grep libcodec
cd646000-cd68d000 r-xp 00000000 fd:00 1721364                            /data/app/com.tencent.mobileqq-1f7mpIqT9_JQi9fNMEP5fQ==/lib/arm/libcodecwrapperV2.so
cd68d000-cd68e000 r--p 00046000 fd:00 1721364                            /data/app/com.tencent.mobileqq-1f7mpIqT9_JQi9fNMEP5fQ==/lib/arm/libcodecwrapperV2.so
cd68e000-cd690000 rw-p 00047000 fd:00 1721364                            /data/app/com.tencent.mobileqq-1f7mpIqT9_JQi9fNMEP5fQ==/lib/arm/libcodecwrapperV2.so
angler:/ #

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


 ​  ​​​

偏移为0x00038E30

参数如下:

 ​​​ 

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

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

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

而后编写js的hook代码:

var codecwraperAddr = Process.findModuleByName("libcodecwrapperV2.so").base.add(0x38e31);
var nativePointer = new NativePointer(codecwraperAddr);
send("net native pointers:" + nativePointer);
var result_pointer;
Interceptor.attach(nativePointer,{
	onEnter:function(args){
		result_pointer = args[2].toInt32();
		send("Teacrypt so args: " + Memory.readByteArray(args[0]) + " arg2 = " + Memory.readByteArray(args[1]);
	},
	onLeave:function(retval){
		var resultPointer = new NativePointer(result_pointer);
		var arybuffer = Memory.readByteArray(resultPointer);
		var intary = new Uint32Array(arybuffer);
		var resultstr = "";
		for(var i = 0;i<intary.length;i++){
			send("hex: " + intary[i].toString());
			resultstr = resultstr + revertHex(intary[i].toString());
		}
		send("Teacrypt so result: " + resultPointer + ", result: " + resultstr);
		
	}
}

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

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


 ​​​

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

。。。。。。。

直接IDA分析入手:


 ​​​


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


 ​​​

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


 ​​​

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


 ​​​

发送消息,此时断下来后,看到r1寄存器指向了一个16字节的可见字符串,猜测这里就是密钥了。


 ​​​

而后通过网上很多的qq解密工具,输入抓到的密文,IDA跟到的字符串进行解密,即可得到加密前的明文数据:

比如这里:(和上次不是同一次调试了,上述的那次没有抓包。。每次连接上之后密钥是不会变得)

我们得到的报文是:


 ​​​

这里开头部分是报文长度,报文组包格式,qq号,然后才是加密内容,即从85 fc开始,才是加密后的数据,从这里开始解密。

从IDA中得到的密钥是:


 ​​​

这里可以解密,得到明文数据是:


 ​​​

这里有一个知识点就是,明文和密文的长度关系,开始以为是明文直接补齐到8的长度,比如2个字节,直接补6个字节变成8个字节,后来发现怎么都对不上号,后来发现TEA算法的这个补齐还是比较奇异的,参考了https://blog.csdn.net/mingzznet/article/details/46906933,也看了qq的代码:

 ​​​ 

了解到他是先加10位在补到8的倍数的,而且补齐的时候用到了一个随机数,这就导致了同样的明文和密钥,可以加密成不一样的密文。还有长度也是比如2个字节,

(2 + 10 + 4 )%8 = 0;所以最终会加密成16个字节的长度。

具体的填充方法:第一个字节为:(random()&0xf8)|n,随后填充(n+2)个字节random()&0xff ,后面接原始数据,最后填充7 个字节0x00 。n就是上面那个4,待填充长度。

比如待加密数据是:0x22,0x33,随机数就取0xad吧:

第一位:(0xad&0xf8)|0x04 = 0xac

随后填充4 + 2 个随机数:0xad

加上原来的明文:0x22,0x33

最后补7个0x00

最终得到明文:ac ad ad ad ad ad ad 22 33 00 00 00 00 00 00 00

解密的时候,得到最终的明文,通过运算可以得到哪些位是填充的,直接过滤掉即可得到真正的原始数据。

这个填充方式解除了我对分析明文和密文长度的困惑。之前理解的直接补齐到8的倍数是有问题的,直接补齐的话,解密的时候怎么知道到底是多少位源数据呢,所以腾讯采用了上述补齐的方式。

后面这个jcestruct的序列化内容就得年后再来看了,

也留个白,会解出来的,猜测java的话就是调用的下图中的序列化类吧,基类就是jcestruct,然后继承之后通过子类实现各自的功能。



后面几天先看看之前的hook怎么让他跑起来吧

同理可得整个链路中所有消息的明文,这里留一下大概看的几个报文吧:

秘钥:
[stack:12207]:CC173F91 DCB 0x70 ; p
[stack:12207]:CC173F91 DCB 0x4D ; M
[stack:12207]:CC173F92 DCB 0x28 ; (
[stack:12207]:CC173F93 DCB 0x7D ; }
[stack:12207]:CC173F94 DCB 0x36 ; 6
[stack:12207]:CC173F95 DCB 0x47 ; G
[stack:12207]:CC173F96 DCB 0x2D ; -
[stack:12207]:CC173F97 DCB 0x7E ; ~
[stack:12207]:CC173F98 DCB 0x3D ; =
[stack:12207]:CC173F99 DCB 0x60 ; `
[stack:12207]:CC173F9A DCB 0x68 ; h
[stack:12207]:CC173F9B DCB 0x2E ; .
[stack:12207]:CC173F9C DCB 0x64 ; d
[stack:12207]:CC173F9D DCB 0x59 ; Y
[stack:12207]:CC173F9E DCB 0x64 ; d
[stack:12207]:CC173F9F DCB 0x51 ; Q

发送密文:
85 fc 34 cc 5f da 38 f4 65 0b 92 a6 5c 48 90 07 
30 cf 00 87 5f c5 35 e4 89 86 ec 92 2f b5 72 a0 
5e 0d 56 5e 7c dd 9f 41 b5 b8 33 5c 2e b8 48 9d 
db 55 cd 6b 05 ee d1 14 8d d0 9f 95 c1 e7 d2 f3 
1f b8 e1 39 d1 90 6d 55 f2 b0 10 68 17 01 51 91 
ee 90 b2 d5 93 1d 21 4c c1 c0 ea 1d a2 aa 84 e3 
7a fe 21 ef 5e f0 29 7d 4d 0f 34 f1 2c d9 72 c8 
18 0a a0 3f aa 81 49 38 72 3f 2b bf aa 04 b9 3d 
90 71 fa ed ee c0 79 98 8d 09 4f 46 ff bf 69 72 
27 5c ee e7 a8 c2 c7 7b ca f5 aa fc c6 02 a9 b9

明文:
00 00 00 28 00 00 00 18 4D 65 73 73 61 67 65 53 
76 63 2E 50 62 53 65 6E 64 4D 73 67 00 00 00 08 
47 AA 6A 0A 00 00 00 04 00 00 00 6A 0A 08 0A 06 
08 8C C4 CD F5 01 12 06 08 01 10 00 18 00 1A 1E 
0A 1C 12 07 0A 05 0A 03 31 31 31 12 11 AA 02 0E 
88 01 00 9A 01 08 78 00 F8 01 00 C8 02 00 20 B1 
FF 03 28 A0 EB E0 F4 04 32 26 08 CB EA BE E2 05 
10 CB EA BE E2 05 28 89 AA E5 FC 03 48 82 94 9A 
AA 08 58 A3 B8 84 E2 08 68 CB EA BE E2 05 70 00 
40 01





00 00 00 28   //包头长度
00 00 00 18   //serviceCmd 长度 +4 包含自身 
4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 // MessageSvc.PbSendMsg
00 00 00 08     //msgcookies长度 + 4
47 AA 6A 0A     //msgcookies
00 00 00 04     //包体长度的长度
00 00 00 6A     //包体长度
一下需要反序列化处理了
0A 08 0A 06 08 8C C4 CD F5 01 12 06 08 01 10 00 
18 00 1A 1E 0A 1C 12 07 0A 05 0A 
03 //发送消息长度
31 31 31 //消息明文内容
12 11 AA 02 0E 88 01 00 9A 01 08 78 00 F8 01 00 C8 
02 00 20 B1 FF 03 28 A0 EB E0 F4 04 32 26 08 CB 
EA BE E2 05 10 CB EA BE E2 05 28 89 AA E5 FC 03 
48 82 94 9A AA 08 58 A3 B8 84 E2 08 68 CB EA BE 
E2 05 70 00 40 01


发送密文2:
AF 8C 23 31 A1 89 A4 D0 D6 B6 BD CC 83 7C D3 62 
B4 C0 8E 22 A8 6D 67 52 10 FF 40 ED BB E2 BC 94 
CD 39 45 49 95 B4 BA 35 15 3C 21 F0 4F 36 B9 B1 
B7 BB 20 F5 22 24 4A 78 B5 7F 69 73 E2 98 A3 FB 
8E 4D 02 D1 FC CA FC C4 56 43 04 5F 81 48 D6 2D 
A6 9C C3 A3 EE 95 18 39 F5 B3 3D 6A C7 E3 12 74 
F4 28 73 7D 75 C0 B2 3E CA 29 62 1D 89 F3 E5 F8 
A5 13 6C DA 09 53 E9 9C B2 A3 2F 85 7E A1 C7 60 
04 FD 47 1D F2 E6 E5 BB F6 F7 38 3A 44 26 52 81 
A9 0D A6 E4 DC 46 E1 E2 42 A2 A0 B3 3F 9B DE 18 

af8c2331a189a4d0d6b6bdcc837cd362b4c08e22a86d675210ff40edbbe2bc94cd39454995b4ba35153c21f04f36b9b1b7bb20f522244a78b57f6973e298a3fb8e4d02d1fccafcc45643045f8148d62da69cc3a3ee951839f5b33d6ac7e31274f428737d75c0b23eca29621d89f3e5f8a5136cda0953e99cb2a32f857ea1c76004fd471df2e6e5bbf6f7383a44265281a90da6e4dc46e1e242a2a0b33f9bde18
发送明文2:

00 00 00 28   //包头长度
00 00 00 18   //serviceCmd 长度 +4 包含自身 
4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 // MessageSvc.PbSendMsg
00 00 00 08     //msgcookies长度 + 4
47 AA 6A 0A     //msgcookies
00 00 00 04     //包体长度的长度
00 00 00 6E     //包体长度
0A 08 0A 06 08 8C C4 CD F5 01 12 06 08 01 10 00 
18 00 1A 22 0A 20 12 0B 0A 09 0A 
07 //消息长度
32 33 32 32 32 32 32 //消息内容
12 11 AA 02 0E 88 01 00 9A 01 08 78 00 
F8 01 00 C8 02 00 20 BE FF 03 28 D3 8E BD D4 05 
32 26 08 CB EA BE E2 05 10 CB EA BE E2 05 28 89 
AA E5 FC 03 48 82 94 9A AA 08 58 A3 B8 84 E2 08 
68 CB EA BE E2 05 70 00 40 01

响应明文:
00 00 00 34 
00 01 40 5B 
00 00 00 00 00 00 00 04 
00 00 00 18 
4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 
00 00 00 08 
47 AA 6A 0A 
00 00 00 00 00 00 00 0C 08 00 18 82 EB BE E2 05






响应密文:
1
ea d6 81 10 6c 7c 6a 6e 3c 3a 04 12 a2 e8 90 88 
f0 20 b9 67 54 9b b2 4e d4 d6 e5 ee 0e b4 a3 5a 
0f e6 9e b8 46 ba 1b 0c c2 d3 ee b3 38 3b 1e 50 
17 94 9f 91 a6 4f 23 c1 df 7d 0e 4b ca fe b6 b0 
63 13 91 39 88 37 cc 25 c7 7b e5 35 80 a6 ab 75
2
F2 66 CE 56 A5 B2 FA D0 20 5B DC C5 75 A8 47 F6 
A4 00 59 91 13 25 DA 0A 81 F4 D4 D6 6F 8A 50 2A 
25 21 95 C4 A8 94 F5 7F EF 4B 34 B2 CB 84 6F 13 
F7 55 56 3B 7E 37 C2 D6 EB C1 5E DD 64 6D 74 7E 
47 1D A7 9E 41 04 F7 3C 54 0F B0 E9 E1 B2 EE BB



53 1B 38 99 2D 7E 72 5E 40 3E E5 E5 A0 8E AF 23 
BF A9 E8 98 24 97 AC C8 CA 2C 7F CF 2F 38 2E 35 
82 37 8D 27 E4 91 1E EF 42 06 A1 FF 64 1F FA 85 
9D 2A F8 0B A7 A2 5B D1 93 C4 60 89 39 A7 45 45 
58 AF 26 79 EF F0 A6 D4 55 9F 3B B6 FF 75 FD D5 
59 EF FB 08 57 A1 95 4C




响应明文:
1
00 00 00 34 00 01 40 26 00 00 00 00 00 00 00 04 
00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 
62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 
00 00 00 00 00 00 00 0C 08 00 18 F2 EA BE E2 05

D3 82 35 CE 27 8E E1 8D 4C 80 78 73 5E DA C0 F9 
E5 49 51 21 97 0A A5 22 B1 12 08 26 B8 3E 38 64 
2E E2 DC A1 12 46 95 F5 34 01 05 A6 6A BF AE 31 
37 8F BB E6 01 83 46 D0 78 2F 3B B4 4B 61 7B B9 
14 39 4E 16 16 1A 35 B6

00 00 00 34   //包头长度
00 01 40 26   //序列号,每次加4
00 00 00 00 00 00 00 04 //下面一个长度的长度
00 00 00 18    //接下来字符串长度,包含自己本身
4D 65 73 73 61 67 65 53 76 63 2E 50 62 53 65 6E 64 4D 73 67 //MessageSvc.PbSendMsg
00 00 00 08 47 AA 6A 0A //00000008表示长度,47 AA 6A 0A 表示msgcookies,和发送的对应。
00 00 00 00 00 00 00 0C 08 00 18 F2 EA BE E2 05

2~4,连续的3个响应报文
00 00 00 34 00 01 40 5B 00 00 00 00 00 00 00 04 
00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 
62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 
00 00 00 00 00 00 00 0C 08 00 18 82 EB BE E2 05

00 00 00 34 00 01 40 60 00 00 00 00 00 00 00 04 
00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 
62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 
00 00 00 00 00 00 00 0C 08 00 18 84 EB BE E2 05

00 00 00 34 00 01 40 64 00 00 00 00 00 00 00 04 
00 00 00 18 4D 65 73 73 61 67 65 53 76 63 2E 50 
62 53 65 6E 64 4D 73 67 00 00 00 08 47 AA 6A 0A 
00 00 00 00 00 00 00 0C 08 00 18 86 EB BE E2 05





接收密文:
B1 9D 4E 67 82 29 7D D0 E2 17 BA 7D 26 40 2E 2F 
57 FB CA DF CA 98 3E 34 D7 6C 2E 56 B6 4D 72 8C 
59 88 75 28 16 60 C0 D3 6B 58 B2 BB 62 13 79 47 
E9 8B C1 BD FE AB A0 F7 E3 39 69 9A 16 02 A9 68 
4C 60 AC 3A F0 EB 00 F7 52 73 D8 78 00 46 41 E2 
DD 9F B5 12 36 3A BC E9 F6 69 C7 FC 72 07 95 73 
A4 A7 26 CA 43 DA 80 47 EF 83 72 BB A6 65 35 C2 
2B 8A E1 8D BD F1 38 49 1F D7 73 01 36 CB 2B 5A 
FF AF 0E 2E D6 AA 48 40 E8 B7 D6 14 73 FC 3A 68 
8A B7 33 B9 BC 70 D9 B3 11 65 0D 1B 6A 3C A1 25 
C1 65 6B 88 D3 1D 98 80 72 51 15 05 D8 FF CB 7A 
25 4D 99 7C 52 87 82 40 05 37 DC 9D 58 D0 7A 01 
76 CA 27 AD 58 B4 E7 D9 5C 07 4F 87 EE 39 94 87 
DF B3 6C 12 3F 31 9B 96 A1 C8 D1 E3 18 21 1A 84 
8C E6 BA E7 52 DC AA 37 6F F5 71 FA 75 AE 3E 9A 
88 61 F4 9B EE 0E 26 67 01 64 3B B2 3F 69 78 2B 
B0 DD B9 8D 06 23 1D 6D E4 B5 B9 C8 23 23 5D 22 
33 10 7E 06 61 CA 17 53 

接收明文:
00 00 00 40 D0 2F A9 2A 00 00 00 00 00 00 00 04 
00 00 00 19 4D 65 73 73 61 67 65 53 76 63 2E 50 
75 73 68 4E 6F 74 69 66 79 00 00 00 08 47 AA 6A 
0A 00 00 00 00 00 00 00 0B 30 BE BE CE BC 89 2D 
00 00 00 CC 00 00 00 C8 10 02 2C 3C 4C 56 0A 4D 
65 73 73 61 67 65 53 76 63 66 0A 50 75 73 68 4E 
6F 74 69 66 79 7D 00 01 00 9D 08 00 01 06 0E 72 
65 71 5F 50 75 73 68 4E 6F 74 69 66 79 18 00 01 
06 20 50 75 73 68 4E 6F 74 69 66 79 50 61 63 6B 
2E 52 65 71 75 65 73 74 50 75 73 68 4E 6F 74 69 
66 79 1D 00 00 61 0A 02 7D 30 72 6E 10 01 26 0A 
4D 65 73 73 61 67 65 53 76 63 36 0A 50 75 73 68 
4E 6F 74 69 66 79 4D 00 0C 51 00 A6 6C 7C 8C 9A 
0C 1C 2C 3C 46 00 5C 6D 00 0C 7C 8D 00 0C 9D 00 
0C AC B0 01 C9 0C DA 06 00 16 00 26 00 36 00 0B 
EC FD 0F 00 0C F6 10 00 F6 11 00 F9 12 0C 0B A6 
00 BD 00 0C CC DC 0B 8C 98 0C A8 0C


接收响应密文:

b0 b7 47 ca 18 ce de 22 40 e6 ac 2e a1 7c 12 00 
1d ea 11 51 a9 e2 d5 51 42 56 19 4a be e1 cd 15 
d1 64 e2 4a fc 19 3d 7b c2 0b e3 2c 2f 42 59 4d 
86 98 19 e5 8d 8f ea 21 90 d5 27 d6 be 9f f9 cf 
f4 5d dc fc 3e c0 6e b4 36 1a e3 ae 20 5b cf 54 
38 f1 90 18 3b ff 12 dc 3a 7c 2a 03 ee 2c 5f 3a 
fd 3e da da a4 45 eb 7c fb ae f9 86 a0 84 25 93 
eb f5 3c 0e fc 8e 59 3f 54 62 cf 3e d5 13 4f 0f 
30 7d 24 31 e5 dd 30 8b 97 be 7b d3 99 5c 9e e1 
6f 30 e2 1a 30 46 b1 18 e9 ed 6c ca 33 90 a7 09 
99 09 5a 0e 52 08 22 3d 7f 7e ef de 6e a5 75 02 
0d 9e c8 83 ed f8 3f 0d 7e 5b 2d a4 59 df 39 12 
76 12 1e 1c 8e dd 67 21 74 f0 dd f9 d6 fe ae 56

00 00 00 83 
00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 
00 00 00 08 47 AA 6A 0A 
00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 
3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 
76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 
61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 
36 32 33 2E 30 31 31 18 A3 9D CE BC 89 2D 20 A7 
9D CE BC 89 2D 28 A1 9D CE BC 89 2D 30 BE BE CE 
BC 89 2D 00 00 00 3C 08 00 12 26 08 CB EA BE E2 
05 10 CB EA BE E2 05 28 89 AA E5 FC 03 48 82 94 
9A AA 08 58 A3 B8 84 E2 08 68 CB EA BE E2 05 70 
00 18 00 20 14 28 03 30 01 38 01 48 00 62 00


接收响应明文:
00 00 00 83 
00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 //MessageSvc.PbGetMsg
00 00 00 08 47 AA 6A 0A 
00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 
3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 
76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 
61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 
36 32 33 2E 30 31 31 18 A3 9D CE BC 89 2D 20 A7 
9D CE BC 89 2D 28 A1 9D CE BC 89 2D 30 BE BE CE 
BC 89 2D 00 00 00 3C 08 00 12 26 08 CB EA BE E2 
05 10 CB EA BE E2 05 28 89 AA E5 FC 03 48 82 94 
9A AA 08 58 A3 B8 84 E2 08 68 CB EA BE E2 05 70 
00 18 00 20 14 28 03 30 01 38 01 48 00 62 00

00 00 00 83 
00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 
00 00 00 08 47 AA 6A 0A 
00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 
3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 
76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 
61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 
36 32 33 2E 30 31 31 18 AF B5 CE BC 89 2D 20 B4 
B5 CE BC 89 2D 28 AA B5 CE BC 89 2D 30 DB D6 CE 
BC 89 2D 00 00 00 3B 08 00 12 25 08 FF 86 BF E2 
05 10 FF 86 BF E2 05 28 8A D4 97 94 0E 48 A7 A1 
C5 37 58 FB D7 DB BE 26 68 FF 86 BF E2 05 70 00 
18 00 20 14 28 03 30 01 38 01 48 00 62 00

00 00 00 83 00 00 00 17 
4D 65 73 73 61 67 65 53 
76 63 2E 50 62 47 65 74 
4D 73 67 00 00 00 08 47 
AA 6A 0A 00 00 00 60 08 
00 12 3C 6D 6F 64 65 6C 
3A 4E 65 78 75 73 20 36 
50 3B 6F 73 3A 32 36 3B 
76 65 72 73 69 6F 6E 3A 
76 32 6D 61 6E 3A 48 75 
61 77 65 69 73 79 73 3A 
4F 50 52 35 2E 31 37 30 
36 32 33 2E 30 31 31 18 
AF B5 CE BC 89 2D 20 B4 
B5 CE BC 89 2D 28 AA B5 
CE BC 89 2D 30 DB D6 CE 
BC 89 2D 00 00 00 3B 08 
00 12 25 08 FF 86 BF E2 
05 10 FF 86 BF E2 05 28 
8A D4 97 94 0E 48 A7 A1 
C5 37 58 FB D7 DB BE 26 
68 FF 86 BF E2 05 70 00 
18 00 20 14 28 03 30 01 
38 01 48 00 62 00




接收响应密文:
00 00 00 83 00 00 00 17 4D 65 73 73 61 67 65 53 76 63 2E 50 62 47 65 74 4D 73 67 00 00 00 08 47 AA 6A 0A 00 00 00 60 08 00 12 3C 6D 6F 64 65 6C 3A 4E 65 78 75 73 20 36 50 3B 6F 73 3A 32 36 3B 76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 48 75 61 77 65 69 73 79 73 3A 4F 50 52 35 2E 31 37 30 36 32 33 2E 30 31 31 18 AF B5 CE BC 89 2D 20 B4 B5 CE BC 89 2D 28 AA B5 CE BC 89 2D 30 DB D6 CE BC 89 2D 00 00 00 3B 08 00 12 25 08 FF 86 BF E2 05 10 FF 86 BF E2 05 28 8A D4 97 94 0E 48 A7 A1 C5 37 58 FB D7 DB BE 26 68 FF 86 BF E2 05 70 00 18 00 20 14 28 03 30 01 38 01 48 00 62 00


用上面这个很快就能看出来了。

再贴个解密qq用到的工具吧:

链接:https://pan.baidu.com/s/1HruT2x3YMnc3SEy_clONkA 

提取码:f88u 

csdn地址:

https://blog.csdn.net/liutianheng654/article/details/86641410



这次图片应该传上来了吧。。
附件是抓到的报文和解密工具


[招聘]欢迎市场人员加入看雪学院团队!

最后于 2019-1-31 14:50 被hackdaliu编辑 ,原因: 图片重传
上传的附件:
最新回复 (17)
kanxue 8 2019-1-31 13:06
2
0
图片不见了,建议直接贴下图到论坛本地。

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

引用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编辑 ,原因:
LowRebSwrd 2 2019-1-31 14:21
3
0
图片看不到,贴好图片,直接加精华
xiaokangpwn 2019-1-31 15:01
4
0
获取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:48
5
0
.666
Editor 2019-1-31 15:48
6
0
感谢分享!
joker陈 2019-1-31 16:11
7
0
不怕收到律师函
Vn小帆 2019-1-31 16:57
8
0
没有删帖子  之前   先截图一波
飞飞fei 2019-1-31 17:16
9
0
666
Editor 2019-1-31 18:12
10
0
精彩
最后于 2019-2-1 10:13 被Editor编辑 ,原因:
五天 2019-2-1 09:02
11
0
贴好图片,+精华
Editor 2019-2-1 10:13
12
0
熊大 2019-2-2 17:09
13
0
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 被熊大编辑 ,原因:
paullcm 2019-3-6 11:15
14
0
最近正在研究手机端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
paullcm 2019-3-6 14:49
15
0
这个工具的确有用
我刚才试用了一下,qq2013版本的登陆消息,用的是初始密码,抓到的包的确可以被解密,非常感谢.
Wolfxyb 2019-3-19 14:51
16
0
我之前正好做过一个Hook QQ数据包的工具,针对Android的,MobileQ750Hook   IOS的,IOSMobileQQHook
麻烦 2019-4-25 04:20
17
0
加密后的密文在哪里获取? 得不到,密钥倒是从[r0]处能得到,   [r1]处能得到加密后密文吗?  
菜鸟也想飞 2019-7-4 14:45
18
0
感谢分享!
游客
登录 | 注册 方可回帖
返回