spoof1.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. const mcc = '{{mcc}}'
  2. const mnc = '{{mnc}}'
  3. const simOperator = '{{simOperator}}'
  4. const networkOperator = '{{networkOperator}}'
  5. const simSerialNumber = '{{simSerialNumber}}'
  6. const iccId = '{{iccId}}'
  7. const number = '{{number}}'
  8. const imei = '{{imei}}'
  9. const imsi = '{{imsi}}'
  10. const countryIso = '{{countryIso}}'
  11. const subId = '{{subId}}'
  12. class Log {
  13. static TAG = '[SMS]'
  14. static Debug = true
  15. static format(...msg) {
  16. let m = []
  17. for (let i = 0; i < msg.length; i++) {
  18. if (typeof msg[i] === 'object') {
  19. m.push(JSON.stringify(msg[i]))
  20. } else {
  21. m.push(msg[i])
  22. }
  23. }
  24. m = m.join(' ')
  25. return m
  26. }
  27. static i(...msg) {
  28. if (!this.Debug) return
  29. console.log(`\x1b[30m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  30. }
  31. static w(...msg) {
  32. console.log(`\x1b[33m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  33. }
  34. static e(...msg) {
  35. console.log(`\x1b[31m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  36. }
  37. static s(...msg) {
  38. console.log(`\x1b[32m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  39. }
  40. }
  41. function trace(tag) {
  42. Log.e((tag || '') + Java.use('android.util.Log').getStackTraceString(Java.use('java.lang.Throwable').$new()))
  43. }
  44. setImmediate(() => {
  45. Java.perform(function () {
  46. const SmsManager = Java.use('android.telephony.SmsManager')
  47. SmsManager.getSmsManagerForSubscriptionId.overload('int').implementation = function (i) {
  48. const _smsManager = this.getSmsManagerForSubscriptionId(i)
  49. Log.i(`SmsManager.getSmsManagerForSubscriptionId: ${i}`)
  50. return _smsManager
  51. }
  52. SmsManager.getDefault.overload().implementation = function () {
  53. const _smsManager = this.getDefault(i)
  54. Log.i(`SmsManager.getDefault`)
  55. return _smsManager
  56. }
  57. // SmsManager.getDefaultSmsSubscriptionId.overload().implementation =
  58. // function () {
  59. // const _subId = this.getDefaultSmsSubscriptionId()
  60. // Log.i(
  61. // `spoof SmsManager.getDefaultSmsSubscriptionId: ${_subId} -> ${subId}`
  62. // )
  63. // return parseInt(subId)
  64. // }
  65. // SmsManager.getSubscriptionId.overload().implementation = function () {
  66. // const _subId = this.getSubscriptionId()
  67. // Log.i(`SmsManager.getSubscriptionId: ${_subId} -> ${subId}`)
  68. // return parseInt(subId)
  69. // }
  70. SmsManager.getCarrierConfigValues.overload().implementation = function () {
  71. const _config = this.getCarrierConfigValues()
  72. Log.i(`SmsManager.getCarrierConfigValues: ${_config}`)
  73. return _config
  74. }
  75. const CarrierConfigManager = Java.use('android.telephony.CarrierConfigManager')
  76. CarrierConfigManager.getConfigForSubId.overload('int').implementation = function (i) {
  77. const _config = this.getConfigForSubId(i)
  78. Log.i(`CarrierConfigManager.getConfigForSubId: ${i}`)
  79. return _config
  80. }
  81. const SubscriptionManager = Java.use('android.telephony.SubscriptionManager')
  82. SubscriptionManager.getActiveSubscriptionInfoCount.overload().implementation = function () {
  83. const _count = this.getActiveSubscriptionInfoCount()
  84. Log.i(`SubscriptionManager.getActiveSubscriptionInfoCount: ${_count}`)
  85. return _count
  86. }
  87. // SubscriptionManager.getDefaultSubscriptionId.overload().implementation =
  88. // function () {
  89. // const _subId = this.getDefaultSubscriptionId()
  90. // Log.i(
  91. // `spoof SubscriptionManager.getDefaultSubscriptionId: ${_subId} -> ${subId}`
  92. // )
  93. // return parseInt(subId)
  94. // }
  95. // SubscriptionManager.getDefaultSmsSubscriptionId.overload().implementation =
  96. // function () {
  97. // const _subId = this.getDefaultSmsSubscriptionId()
  98. // Log.i(
  99. // `spoof SubscriptionManager.getDefaultSmsSubscriptionId: ${_subId} -> ${subId}`
  100. // )
  101. // return parseInt(subId)
  102. // }
  103. // SubscriptionManager.getDefaultVoiceSubscriptionId.overload().implementation =
  104. // function () {
  105. // const _subId = this.getDefaultVoiceSubscriptionId()
  106. // Log.i(
  107. // `spoof SubscriptionManager.getDefaultVoiceSubscriptionId: ${_subId} -> ${subId}`
  108. // )
  109. // return parseInt(subId)
  110. // }
  111. // SubscriptionManager.getActiveDataSubscriptionId.overload().implementation =
  112. // function () {
  113. // const _subId = this.getActiveDataSubscriptionId()
  114. // Log.i(
  115. // `spoof SubscriptionManager.getActiveDataSubscriptionId: ${_subId} -> ${subId}`
  116. // )
  117. // return parseInt(subId)
  118. // }
  119. // SubscriptionManager.getSlotIndex.overload("int").implementation =
  120. // function (i) {
  121. // const _slotIndex = this.getSlotIndex(i)
  122. // Log.i(
  123. // `spoof SubscriptionManager.getSlotIndex: ${_slotIndex} -> 0`
  124. // )
  125. // return 0
  126. // }
  127. // SubscriptionManager.isUsableSubscriptionId.overload(
  128. // "int"
  129. // ).implementation = function (i) {
  130. // const _isUsable = this.isUsableSubscriptionId(i)
  131. // Log.i(`SubscriptionManager.isUsableSubscriptionId: ${_isUsable}`)
  132. // return _isUsable
  133. // }
  134. // SubscriptionManager.isValidSubscriptionId.overload(
  135. // "int"
  136. // ).implementation = function (i) {
  137. // const _isValid = this.isValidSubscriptionId(i)
  138. // Log.i(
  139. // `spoof SubscriptionManager.isValidSubscriptionId(${i}): ${_isValid} -> true`
  140. // )
  141. // return true
  142. // }
  143. SubscriptionManager.getPhoneNumber.overload('int').implementation = function (i) {
  144. Log.i(`spoof SubscriptionManager.getPhoneNumber(${i}): -> ${number}`)
  145. return number
  146. }
  147. SubscriptionManager.getPhoneNumber.overload('int', 'int').implementation = function (i, i2) {
  148. Log.i(`spoof SubscriptionManager.getPhoneNumber(${i},${i2}): -> ${number}`)
  149. return number
  150. }
  151. // SubscriptionManager.getActiveSubscriptionInfoList.overload().implementation =
  152. // function () {
  153. // const _list = this.getActiveSubscriptionInfoList()
  154. // Log.i(
  155. // `SubscriptionManager.getActiveSubscriptionInfoList ${_list.size()}`
  156. // )
  157. // return _list
  158. // }
  159. // SubscriptionManager.getActiveSubscriptionIdList.overload().implementation =
  160. // function () {
  161. // const _list = this.getActiveSubscriptionIdList()
  162. // Log.i(
  163. // `spoof SubscriptionManager.getActiveSubscriptionIdList ${_list} -> ${subId}`
  164. // )
  165. // return [parseInt(subId)]
  166. // }
  167. // SubscriptionManager.getActiveSubscriptionInfo.overload(
  168. // "int"
  169. // ).implementation = function (i) {
  170. // const _info = this.getActiveSubscriptionInfo(i)
  171. // const simCount = this.getActiveSubscriptionInfoCountMax()
  172. // let subInfo = null
  173. // try {
  174. // for (let i = 0; i < simCount; i++) {
  175. // subInfo = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  176. // if (subInfo) {
  177. // break
  178. // }
  179. // }
  180. // Log.i(
  181. // `spoof SubscriptionManager.getActiveSubscriptionInfo(${i})`
  182. // )
  183. // } catch (error) {
  184. // console.error(
  185. // `spoof error SubscriptionManager.getActiveSubscriptionInfo(${i})`
  186. // )
  187. // error.printStackTrace()
  188. // }
  189. // return subInfo
  190. // }
  191. // SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex.overload(
  192. // "int"
  193. // ).implementation = function (i) {
  194. // const _info = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  195. // Log.i(
  196. // `SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(${i}): ${
  197. // _info ? "ok" : "null"
  198. // }`
  199. // )
  200. // return _info
  201. // }
  202. // SubscriptionManager.isActiveSubscriptionId.overload(
  203. // "int"
  204. // ).implementation = function (i) {
  205. // const _isActive = this.isActiveSubscriptionId(i)
  206. // Log.i(
  207. // `spoof SubscriptionManager.isActiveSubscriptionId(${i}): ${_isActive} -> true`
  208. // )
  209. // return true
  210. // }
  211. const SubscriptionInfo = Java.use('android.telephony.SubscriptionInfo')
  212. SubscriptionInfo.getMcc.overload().implementation = function () {
  213. const _mcc = this.getMcc()
  214. Log.i(`spoof SubscriptionInfo.getMcc: ${_mcc} -> ${mcc}`)
  215. return parseInt(mcc)
  216. }
  217. SubscriptionInfo.getMnc.overload().implementation = function () {
  218. const _mnc = this.getMnc()
  219. Log.i(`spoof SubscriptionInfo.getMnc: ${_mnc} -> ${mnc}`)
  220. return parseInt(mnc)
  221. }
  222. SubscriptionInfo.getMccString.overload().implementation = function () {
  223. const _mccString = this.getMccString()
  224. Log.i(`spoof SubscriptionInfo.getMccString: ${_mccString} -> ${mcc}`)
  225. return mcc
  226. }
  227. SubscriptionInfo.getMncString.overload().implementation = function () {
  228. const _mncString = this.getMncString()
  229. Log.i(`spoof SubscriptionInfo.getMncString: ${_mncString} -> ${mnc}`)
  230. return mnc
  231. }
  232. SubscriptionInfo.getNumber.overload().implementation = function () {
  233. const _number = this.getNumber()
  234. Log.i(`spoof SubscriptionInfo.getNumber: ${_number} -> ${number}`)
  235. return number
  236. }
  237. SubscriptionInfo.getIccId.overload().implementation = function () {
  238. const _iccId = this.getIccId()
  239. Log.i(`spoof SubscriptionInfo.getIccId: ${_iccId} -> ${iccId}`)
  240. return iccId
  241. }
  242. SubscriptionInfo.getCountryIso.overload().implementation = function () {
  243. const _countryIso = this.getCountryIso()
  244. Log.i(`spoof SubscriptionInfo.getCountryIso: ${_countryIso} -> ${countryIso}`)
  245. return countryIso
  246. }
  247. // SubscriptionInfo.getSubscriptionId.overload().implementation =
  248. // function () {
  249. // const _subId = this.getSubscriptionId()
  250. // if (!subId) {
  251. // Log.i(_subId)
  252. // return _subId
  253. // }
  254. // Log.i(
  255. // `spoof SubscriptionInfo.getSubscriptionId: ${_subId} -> ${subId}`
  256. // )
  257. // return parseInt(subId)
  258. // }
  259. const TelephonyManager = Java.use('android.telephony.TelephonyManager')
  260. // TelephonyManager.createForSubscriptionId.overload(
  261. // "int"
  262. // ).implementation = function (i) {
  263. // Log.i(`spoof TelephonyManager.createForSubscriptionId: ${i}`)
  264. // return this
  265. // }
  266. TelephonyManager.getLine1Number.overload().implementation = function () {
  267. const _number = this.getLine1Number()
  268. Log.i(`spoof TelephonyManager.getLine1Number: ${_number} -> ${number}`)
  269. return number
  270. }
  271. TelephonyManager.getSimOperator.overload().implementation = function () {
  272. const _simOperator = this.getSimOperator()
  273. Log.i(`spoof TelephonyManager.getSimOperator: ${_simOperator} -> ${simOperator}`)
  274. return simOperator
  275. }
  276. TelephonyManager.getNetworkOperator.overload().implementation = function () {
  277. const _networkOperator = this.getNetworkOperator()
  278. Log.i(`spoof TelephonyManager.getNetworkOperator: ${_networkOperator} -> ${networkOperator}`)
  279. return networkOperator
  280. }
  281. TelephonyManager.getSimSerialNumber.overload().implementation = function () {
  282. const _simSerialNumber = this.getSimSerialNumber()
  283. Log.i(`spoof TelephonyManager.getSimSerialNumber: ${_simSerialNumber} -> ${simSerialNumber}`)
  284. return simSerialNumber
  285. }
  286. TelephonyManager.getSubscriberId.overload().implementation = function () {
  287. const _imsi = this.getSubscriberId()
  288. Log.i(`spoof TelephonyManager.getSubscriberId: ${_imsi} -> ${imsi}`)
  289. return imsi
  290. }
  291. TelephonyManager.getImei.overload().implementation = function () {
  292. const _imei = this.getImei()
  293. Log.i(`spoof TelephonyManager.getImei: ${_imei} -> ${imei}`)
  294. return imei
  295. }
  296. TelephonyManager.getNetworkCountryIso.overload().implementation = function () {
  297. const _countryIso = this.getNetworkCountryIso()
  298. Log.i(`spoof TelephonyManager.getNetworkCountryIso: ${_countryIso} -> ${countryIso}`)
  299. return countryIso
  300. }
  301. TelephonyManager.getSimCountryIso.overload().implementation = function () {
  302. const _countryIso = this.getSimCountryIso()
  303. Log.i(`spoof TelephonyManager.getSimCountryIso: ${_countryIso} -> ${countryIso}`)
  304. return countryIso
  305. }
  306. // TelephonyManager.getSubscriptionId.overload().implementation =
  307. // function () {
  308. // const _subId = this.getSubscriptionId()
  309. // if (!subId) {
  310. // Log.i(_subId)
  311. // return _subId
  312. // }
  313. // Log.i(
  314. // `spoof TelephonyManager.getSubscriptionId: ${_subId} -> ${subId}`
  315. // )
  316. // return parseInt(subId)
  317. // }
  318. TelephonyManager.getSimState.overload().implementation = function () {
  319. const _simState = this.getSimState()
  320. Log.i(`spoof TelephonyManager.getSimState: ${_simState} -> 5`)
  321. return 5
  322. }
  323. // const PhoneNumberVerification = Java.use(
  324. // "com.google.android.gms.constellation.PhoneNumberVerification"
  325. // )
  326. // PhoneNumberVerification.$init.overload(
  327. // "java.lang.String",
  328. // "long",
  329. // "int",
  330. // "int",
  331. // "java.lang.String",
  332. // "android.os.Bundle",
  333. // "int",
  334. // "long"
  335. // ).implementation = function (str, l, i, i2, str2, bundle, i3, l2) {
  336. // Log.i("PhoneNumberVerification.$init")
  337. // Log.i(
  338. // `str: ${str}, l: ${l}, i: ${i}, i2: ${i2}, str2: ${str2}, i3: ${i3}, l2: ${l2}`
  339. // )
  340. // // print bundle
  341. // if (bundle) {
  342. // const keySet = bundle.keySet().toArray()
  343. // for (let i = 0; i < keySet.length; i++) {
  344. // const key = keySet[i]
  345. // Log.i(`key: ${key}, value: ${bundle.get(key)}`)
  346. // }
  347. // }
  348. // return this.$init(str, l, i, i2, str2, bundle, i3, l2)
  349. // }
  350. // // const aays = Java.use("aays")
  351. // // aays.d.overload("int", "boolean").implementation = function (i, z) {
  352. // // Log.i("aays.d", i, z, Object.keys(this.f.value))
  353. // // return number
  354. // // }
  355. // const SetAsterismConsentRequest = Java.use(
  356. // "com.google.android.gms.asterism.SetAsterismConsentRequest"
  357. // )
  358. // SetAsterismConsentRequest.$init.overload(
  359. // "int",
  360. // "int",
  361. // "int",
  362. // "[I",
  363. // "java.lang.Long",
  364. // "int",
  365. // "android.os.Bundle",
  366. // "int",
  367. // "java.lang.String",
  368. // "java.lang.String",
  369. // "java.lang.String",
  370. // "java.lang.String",
  371. // "java.lang.String",
  372. // "java.lang.String",
  373. // "java.lang.String",
  374. // "java.lang.String"
  375. // ).implementation = function (
  376. // i,
  377. // i2,
  378. // i3,
  379. // iArr,
  380. // l,
  381. // i4,
  382. // bundle,
  383. // i5,
  384. // str,
  385. // str2,
  386. // str3,
  387. // str4,
  388. // str5,
  389. // str6,
  390. // str7,
  391. // str8
  392. // ) {
  393. // Log.i(
  394. // Java.use("android.util.Log").getStackTraceString(
  395. // Java.use("java.lang.Throwable").$new()
  396. // )
  397. // )
  398. // Log.i("SetAsterismConsentRequest.$init")
  399. // Log.i(
  400. // `i: ${i}, i2: ${i2}, i3: ${i3}, iArr: ${iArr}, l: ${l}, i4: ${i4}, i5: ${i5}, str: ${str}, str2: ${str2}, str3: ${str3}, str4: ${str4}, str5: ${str5}, str6: ${str6}, str7: ${str7}, str8: ${str8}`
  401. // )
  402. // // print bundle
  403. // const keySet = bundle.keySet().toArray()
  404. // for (let i = 0; i < keySet.length; i++) {
  405. // const key = keySet[i]
  406. // Log.i(`key: ${key}, value: ${bundle.get(key)}`)
  407. // }
  408. // return this.$init(
  409. // i,
  410. // i2,
  411. // i3,
  412. // iArr,
  413. // l,
  414. // i4,
  415. // bundle,
  416. // i5,
  417. // str,
  418. // str2,
  419. // str3,
  420. // str4,
  421. // str5,
  422. // str6,
  423. // str7,
  424. // str8
  425. // )
  426. // }
  427. // const SetAsterismConsentResponse = Java.use(
  428. // "com.google.android.gms.asterism.SetAsterismConsentResponse"
  429. // )
  430. // SetAsterismConsentResponse.$init.overload(
  431. // "int",
  432. // "java.lang.String",
  433. // "java.lang.String"
  434. // ).implementation = function (i, str, str2) {
  435. // Log.i(
  436. // Java.use("android.util.Log").getStackTraceString(
  437. // Java.use("java.lang.Throwable").$new()
  438. // )
  439. // )
  440. // Log.i("SetAsterismConsentResponse.$init")
  441. // Log.i(`i: ${i}, str: ${str}, str2: ${str2}`)
  442. // // return this.$init(
  443. // // 1,
  444. // // "c4q5zP5Ft4A:APA91bEASr50HwwOY789LSZrcHPT8aG_fT19xlelS35qgIJeC3UBYypAHmmL9IygzlphzTKKz0wCdiQwuoPZMJKvgKPmGi3_imdr1CY0s7fs8qa_LMgNDFfvWEnpTCReAYc7IjThhFQq",
  445. // // "c4q5zP5Ft4A"
  446. // // )
  447. // return this.$init(i, str, str2)
  448. // }
  449. // // spoof sim to exist
  450. // const bjsf = Java.use("bjsf")
  451. // bjsf.s.overload("android.content.Context").implementation = function (
  452. // c
  453. // ) {
  454. // Log.i("bjsf.s spoof sim to exist")
  455. // return true
  456. // }
  457. function printConfiguration(config) {
  458. JSON.stringify({
  459. mDeviceId: config.mDeviceId.value,
  460. mTachyonAuthToken: config.mTachyonAuthToken.value,
  461. mVerifiedSmsToken: config.mVerifiedSmsToken.value,
  462. tachygramEnabled: config.tachygramEnabled.value,
  463. tachyonUrl: config.tachyonUrl.value,
  464. mConfigState: config.mConfigState.value,
  465. mToken: {
  466. mValue: config.mToken.value.mValue.value,
  467. mExpirationTime: config.mToken.value.mExpirationTime.value
  468. },
  469. mType: config.mType.value,
  470. mImsConfiguration: {
  471. mAuthDigestPassword: config.mImsConfiguration.value.mAuthDigestPassword.value,
  472. mAuthDigestRealm: config.mImsConfiguration.value.mAuthDigestRealm.value,
  473. mAuthDigestUsername: config.mImsConfiguration.value.mAuthDigestUsername.value,
  474. mAuthenticationScheme: config.mImsConfiguration.value.mAuthenticationScheme.value,
  475. mDomain: config.mImsConfiguration.value.mDomain.value,
  476. mPcscfAddress: config.mImsConfiguration.value.mPcscfAddress.value,
  477. mPcsfPort: config.mImsConfiguration.value.mPcsfPort.value,
  478. mPrivateIdentity: config.mImsConfiguration.value.mPrivateIdentity.value,
  479. mPsMediaTransport: config.mImsConfiguration.value.mPsMediaTransport.value,
  480. mPsRtpTransport: config.mImsConfiguration.value.mPsRtpTransport.value,
  481. mPsSipTransport: config.mImsConfiguration.value.mPsSipTransport.value,
  482. mPublicIdentity: config.mImsConfiguration.value.mPublicIdentity.value,
  483. mUserName: config.mImsConfiguration.value.mUserName.value,
  484. mWifiMediaTransport: config.mImsConfiguration.value.mWifiMediaTransport.value,
  485. mWifiRtpTransport: config.mImsConfiguration.value.mWifiRtpTransport.value,
  486. mWifiSipTransport: config.mImsConfiguration.value.mWifiSipTransport.value,
  487. mT1: config.mImsConfiguration.value.mT1.value,
  488. mT2: config.mImsConfiguration.value.mT2.value,
  489. mT4: config.mImsConfiguration.value.mT4.value,
  490. mLocalSipPort: config.mImsConfiguration.value.mLocalSipPort.value,
  491. mQ: config.mImsConfiguration.value.mQ.value,
  492. mKeepAlive: config.mImsConfiguration.value.mKeepAlive.value,
  493. mPhoneContext: config.mImsConfiguration.value.mPhoneContext.value,
  494. mRegRetryBaseTime: config.mImsConfiguration.value.mRegRetryBaseTime.value,
  495. mRegRetryMaxTime: config.mImsConfiguration.value.mRegRetryMaxTime.value,
  496. mNatUrlFmt: config.mImsConfiguration.value.mNatUrlFmt.value,
  497. mIntUrlFmt: config.mImsConfiguration.value.mIntUrlFmt.value,
  498. rcsVolteSingleRegistration: config.mImsConfiguration.value.rcsVolteSingleRegistration.value
  499. },
  500. mInstantMessageConfiguration: {
  501. mAutoAccept: config.mInstantMessageConfiguration.value.mAutoAccept.value,
  502. mAutoAcceptGroupChat: config.mInstantMessageConfiguration.value.mAutoAcceptGroupChat.value,
  503. mChatAuth: config.mInstantMessageConfiguration.value.mChatAuth.value,
  504. mChatRevokeTimer: config.mInstantMessageConfiguration.value.mChatRevokeTimer.value,
  505. mConferenceFactoryUri: config.mInstantMessageConfiguration.value.mConferenceFactoryUri.value,
  506. mDeferredMessageFunctionUri:
  507. config.mInstantMessageConfiguration.value.mDeferredMessageFunctionUri.value,
  508. mExploderUri: config.mInstantMessageConfiguration.value.mExploderUri.value,
  509. mFileTransferAutoAcceptSupported:
  510. config.mInstantMessageConfiguration.value.mFileTransferAutoAcceptSupported.value,
  511. mFtCapAlwaysOn: config.mInstantMessageConfiguration.value.mFtCapAlwaysOn.value,
  512. mFtHttpCapAlwaysOn: config.mInstantMessageConfiguration.value.mFtHttpCapAlwaysOn.value,
  513. mFtHttpContentServerPassword:
  514. config.mInstantMessageConfiguration.value.mFtHttpContentServerPassword.value,
  515. mFtHttpContentServerUri: config.mInstantMessageConfiguration.value.mFtHttpContentServerUri.value,
  516. mFtHttpContentServerUser: config.mInstantMessageConfiguration.value.mFtHttpContentServerUser.value,
  517. mFtStoreAndForwardEnabled:
  518. config.mInstantMessageConfiguration.value.mFtStoreAndForwardEnabled.value,
  519. mFullGroupSandFSupported: config.mInstantMessageConfiguration.value.mFullGroupSandFSupported.value,
  520. mImCapAlwaysOn: config.mInstantMessageConfiguration.value.mImCapAlwaysOn.value,
  521. mImSessionStart: config.mInstantMessageConfiguration.value.mImSessionStart.value,
  522. mImWarnSF: config.mInstantMessageConfiguration.value.mImWarnSF.value,
  523. mMaxAdhocGroupSize: config.mInstantMessageConfiguration.value.mMaxAdhocGroupSize.value,
  524. mPublishPresenceCap: config.mInstantMessageConfiguration.value.mPublishPresenceCap.value,
  525. mReconnectGuardTimer: config.mInstantMessageConfiguration.value.mReconnectGuardTimer.value,
  526. mSmsFallBackAuth: config.mInstantMessageConfiguration.value.mSmsFallBackAuth.value,
  527. mMaxSize1to1: config.mInstantMessageConfiguration.value.mMaxSize1to1.value,
  528. mMaxSize1toM: config.mInstantMessageConfiguration.value.mMaxSize1toM.value,
  529. mMaxSizeFileTransfer: config.mInstantMessageConfiguration.value.mMaxSizeFileTransfer.value,
  530. mWarnSizeFileTransfer: config.mInstantMessageConfiguration.value.mWarnSizeFileTransfer.value,
  531. mFtThumbnailSupported: config.mInstantMessageConfiguration.value.mFtThumbnailSupported.value,
  532. mFtDefaultMechanism: config.mInstantMessageConfiguration.value.mFtDefaultMechanism.value,
  533. mMessageTech: config.mInstantMessageConfiguration.value.mMessageTech.value,
  534. mDefaultSharingMethod: config.mInstantMessageConfiguration.value.mDefaultSharingMethod.value,
  535. mTimerIdleSecs: config.mInstantMessageConfiguration.value.mTimerIdleSecs.value,
  536. mDeliveryReportTimeout: config.mInstantMessageConfiguration.value.mDeliveryReportTimeout.value,
  537. mAnonymousChat: config.mInstantMessageConfiguration.value.mAnonymousChat.value,
  538. mMaxConcurrentSession: config.mInstantMessageConfiguration.value.mMaxConcurrentSession.value,
  539. mSwitchoverSize: config.mInstantMessageConfiguration.value.mSwitchoverSize.value
  540. },
  541. mReconfigRequested: config.mReconfigRequested.value,
  542. mMessageTech: config.mMessageTech.value,
  543. rcsState: config.rcsState.value,
  544. iccids: config.iccids.value,
  545. mValiditySecs: config.mValiditySecs.value,
  546. mLastUpdateSecs: config.mLastUpdateSecs.value,
  547. mVersion: config.mVersion.value
  548. })
  549. }
  550. // const Configuration = Java.use('com.google.android.ims.provisioning.config.Configuration')
  551. // Configuration.k.overload().implementation = function () {
  552. // Log.e(`Configuration.k()`)
  553. // printConfiguration(this)
  554. // return this.k()
  555. // }
  556. function dumpList(list) {
  557. if (list) {
  558. let res = []
  559. for (let i = 0; i < list.size(); i++) {
  560. res.push('' + list.get(i))
  561. }
  562. return res
  563. }
  564. return []
  565. }
  566. const bjaq = Java.use('bjaq')
  567. bjaq.f.overload('java.io.InputStream').implementation = function (inputStream) {
  568. const res = this.f(inputStream)
  569. Log.e(
  570. `bjaq.f() => ${JSON.stringify({
  571. a: dumpList(res._a.value),
  572. b: dumpList(res._b.value),
  573. c: res._c.value
  574. })}`
  575. )
  576. return res
  577. }
  578. bjaq.a.overload(
  579. 'java.io.InputStream',
  580. 'com.google.android.ims.provisioning.config.Configuration',
  581. 'boolean'
  582. ).implementation = function (inputStream, configuration, z) {
  583. trace('bjaq.a')
  584. printConfiguration(configuration)
  585. return this.a(inputStream, configuration, z)
  586. }
  587. })
  588. })