[原创]android qq明文解析
之前是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
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
