首页
论坛
专栏
课程

[原创]android qq明文解析

2019-1-31 11:50 3909

[原创]android qq明文解析

2019-1-31 11:50
3909

之前是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



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


[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

最后于 2019-1-31 14:50 被hackdaliu编辑 ,原因: 图片重传
上传的附件:
上一主题 下一主题
最新回复 (12)
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 1 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
没有删帖子  之前   先截图一波
飞飞_852133 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 被熊大编辑 ,原因:
游客
登录 | 注册 方可回帖
返回