2
0

libcodecwrapperV2.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #include <jni.h>
  2. #include <string>
  3. #include <vector>
  4. // Java 端入口在 com.tencent.qphone.base.util.CodecWarpper 中定义
  5. class CCodecWarpper
  6. {
  7. public:
  8. CCodecWarpper(JavaVM* vm);
  9. virtual ~CCodecWarpper();
  10. std::uint32_t CreatePhSigLcIdCheckPacket(std::string&, int, std::vector<std::string>&,
  11. const char*);
  12. int FixAppid();
  13. void ParseOtherResp(_JNIEnv*, int, CSSOData const&, int);
  14. void ParsePhSigCheck(_JNIEnv*, CSSOData const&);
  15. void ParseRecvData(_JNIEnv*);
  16. void encodeRequest(_JNIEnv*, int, _jstring*, _jstring*, _jstring*, _jstring*, _jstring*,
  17. _jbyteArray*, int, int, _jstring*, signed char, signed char, _jbyteArray*,
  18. uchar);
  19. jbyteArray getFileStoreKey(_JNIEnv*);
  20. std::int32_t getMaxPackageSize()
  21. {
  22. return m_MaxPackageSize;
  23. }
  24. private:
  25. std::uint32_t m_SsoSeq = 0x0000C350; // 0x04
  26. std::string m_UnknownStr; // 0x08
  27. std::uint32_t m_SignState = 0; // 0x20
  28. JavaVM* m_Vm; // 0x24
  29. jclass m_CodecWarpper; // 0x28,指向 com.tencent.qphone.base.util.CodecWarpper
  30. jobject m_Context; // 0x2C,指向 android.content.Context 的实例,当前的 context
  31. jclass m_FromServiceMsg; // 0x30,指向 com.tencent.qphone.base.remote.FromServiceMsg
  32. std::vector<int> m_SsoSeqVec; // 0x34
  33. std::int32_t m_MaxPackageSize = 0x00100000; // 0x40
  34. std::uint32_t m_UnknownInt2 = 0x21; // 0x44
  35. std::string m_Ksid; // 0x48
  36. };
  37. // sizeof(CCodecWarpper) == 0x60
  38. class CSSOHead
  39. {
  40. public:
  41. virtual ~CSSOHead();
  42. private:
  43. std::uint8_t m_UnknownByte = 2; // 0x04
  44. std::uint32_t m_KSSOVersion = 8; // 0x08
  45. std::string m_D2 = ""; // 0x0C
  46. std::uint8_t m_UnknownByte2 = 0; // 0x24
  47. std::string m_Uin = ""; // 0x28
  48. // Uin 即用户的 qq 号
  49. };
  50. // sizeof(CSSOHead) == 0x40
  51. class CSSOReqHead
  52. {
  53. public:
  54. CSSOReqHead();
  55. virtual ~CSSOReqHead();
  56. std::uint32_t Length();
  57. std::uint32_t Length_ver9();
  58. bool deSerialize();
  59. private:
  60. std::int32_t m_SsoSeq; // 0x04
  61. std::int32_t m_AppId = -1; // 0x08
  62. std::int32_t m_MsfAppId = -1; // 0x0C
  63. std::uint8_t m_B2Value = 2; // 0x10
  64. std::uint8_t m_UnknownArray[0x0B]{}; // 0x11
  65. std::string m_A2 = ""; // 0x1C
  66. std::string m_ServiceCmd = ""; // 0x34
  67. std::string m_Cookie = ""; // 0x4C
  68. std::string m_ImeiValue = ""; // 0x64
  69. std::string m_ClientVerInfo = ""; // 0x7C, imsi + "|A" + revision
  70. std::string m_TimeStat = ""; // 0x94
  71. std::string m_Ksid = ""; // 0xAC
  72. std::int32_t m_UnknownInt4 = 0; // 0xC4
  73. std::string m_UnknownStr8 = ""; // 0xC8
  74. std::int32_t m_UnknownInt = 0; // 0xE0
  75. };
  76. // sizeof(CSSOReqHead) == 0xE4
  77. class CSSOData
  78. {
  79. public:
  80. virtual ~CSSOData();
  81. private:
  82. CSSOHead m_Head; // 0x0004
  83. CSSOReqHead m_ReqHead; // 0x0044
  84. std::string m_WupBuffer = ""; // 0x0128
  85. std::uint32_t m_UnknownInt = 0; // 0x0144
  86. };
  87. // sizeof(CSSOData) == 0x0148
  88. class CAuthData
  89. {
  90. public:
  91. virtual ~CAuthData();
  92. private:
  93. std::string m_A1; // 0x04
  94. std::string m_A2; // 0x1C
  95. std::string m_A3; // 0x34
  96. std::string m_D1; // 0x4C
  97. std::string m_D2; // 0x64
  98. std::string m_S2; // 0x7C
  99. std::string m_Key; // 0x94
  100. std::string m_UnknownData; // 0xAC
  101. std::string m_Sid; // 0xC4
  102. std::string m_UnknownData2; // 0xDC
  103. };
  104. // sizeof(CAuthData) == 0xF4
  105. namespace KQQConfig
  106. {
  107. class SignatureReq : public taf::JceStructBase
  108. {
  109. public:
  110. private:
  111. std::vector<std::string> m_Signatures; // 0x00
  112. std::uint32_t m_AppId; // 0x0C
  113. std::vector<std::string> m_Uins; // 0x10
  114. std::uint8_t m_UnknownByte; // 0x1C
  115. };
  116. } // namespace KQQConfig
  117. // sizeof(KQQConfig::SignatureReq) == 0x1D?
  118. // src/main/java/com/tencent/msf/service/protocol/e/e.java
  119. class SDKConfReq : public taf::JceStructBase
  120. {
  121. public:
  122. private:
  123. std::int32_t m_UnknownInt;
  124. std::int32_t iGetSdkLastTime;
  125. std::vector<std::string> Uins;
  126. std::int32_t iGetEspLastTime;
  127. std::int32_t iGetAppidTime;
  128. };