spoof_gms.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  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. function trace(tag) {
  13. Log.e(
  14. (tag || "") +
  15. Java.use("android.util.Log").getStackTraceString(
  16. Java.use("java.lang.Throwable").$new()
  17. )
  18. )
  19. }
  20. class Log {
  21. static TAG = "[GMS]"
  22. static format(...msg) {
  23. let m = []
  24. for (let i = 0; i < msg.length; i++) {
  25. if (typeof msg[i] === "object") {
  26. m.push(msg[i] + "")
  27. } else {
  28. m.push(msg[i])
  29. }
  30. }
  31. m = m.join(" ")
  32. return m
  33. }
  34. static i(...msg) {
  35. console.log(`\x1b[30m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  36. }
  37. static w(...msg) {
  38. console.log(`\x1b[33m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  39. }
  40. static e(...msg) {
  41. console.log(`\x1b[31m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  42. }
  43. static s(...msg) {
  44. console.log(`\x1b[32m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  45. }
  46. }
  47. Java.perform(function () {
  48. const GsonClass = Java.openClassFile(
  49. "/data/data/com.google.android.gms/gson.dex"
  50. )
  51. GsonClass.load()
  52. Log.s("gson class loaded")
  53. const SmsManager = Java.use("android.telephony.SmsManager")
  54. SmsManager.getSmsManagerForSubscriptionId.overload("int").implementation =
  55. function (i) {
  56. const _smsManager = this.getSmsManagerForSubscriptionId(i)
  57. Log.i(`SmsManager.getSmsManagerForSubscriptionId: ${i}`)
  58. return _smsManager
  59. }
  60. SmsManager.getDefault.overload().implementation = function () {
  61. const _smsManager = this.getDefault(i)
  62. Log.i(`SmsManager.getDefault`)
  63. return _smsManager
  64. }
  65. SmsManager.getDefaultSmsSubscriptionId.overload().implementation =
  66. function () {
  67. const _subId = this.getDefaultSmsSubscriptionId()
  68. Log.i(
  69. `spoof SmsManager.getDefaultSmsSubscriptionId: ${_subId} -> ${subId}`
  70. )
  71. return parseInt(subId)
  72. }
  73. SmsManager.getSubscriptionId.overload().implementation = function () {
  74. const _subId = this.getSubscriptionId()
  75. Log.i(`SmsManager.getSubscriptionId: ${_subId} -> ${subId}`)
  76. return parseInt(subId)
  77. }
  78. SmsManager.getCarrierConfigValues.overload().implementation = function () {
  79. const _config = this.getCarrierConfigValues()
  80. Log.i(`SmsManager.getCarrierConfigValues: ${_config}`)
  81. return _config
  82. }
  83. const CarrierConfigManager = Java.use(
  84. "android.telephony.CarrierConfigManager"
  85. )
  86. CarrierConfigManager.getConfigForSubId.overload("int").implementation =
  87. function (i) {
  88. const _config = this.getConfigForSubId(i)
  89. Log.i(`CarrierConfigManager.getConfigForSubId: ${i}`)
  90. return _config
  91. }
  92. const SubscriptionManager = Java.use(
  93. "android.telephony.SubscriptionManager"
  94. )
  95. SubscriptionManager.getActiveSubscriptionInfoCount.overload().implementation =
  96. function () {
  97. const _count = this.getActiveSubscriptionInfoCount()
  98. Log.i(
  99. `SubscriptionManager.getActiveSubscriptionInfoCount: ${_count}`
  100. )
  101. return _count
  102. }
  103. SubscriptionManager.getDefaultSubscriptionId.overload().implementation =
  104. function () {
  105. const _subId = this.getDefaultSubscriptionId()
  106. Log.i(
  107. `spoof SubscriptionManager.getDefaultSubscriptionId: ${_subId} -> ${subId}`
  108. )
  109. return parseInt(subId)
  110. }
  111. SubscriptionManager.getDefaultSmsSubscriptionId.overload().implementation =
  112. function () {
  113. const _subId = this.getDefaultSmsSubscriptionId()
  114. Log.i(
  115. `spoof SubscriptionManager.getDefaultSmsSubscriptionId: ${_subId} -> ${subId}`
  116. )
  117. return parseInt(subId)
  118. }
  119. SubscriptionManager.getDefaultVoiceSubscriptionId.overload().implementation =
  120. function () {
  121. const _subId = this.getDefaultVoiceSubscriptionId()
  122. Log.i(
  123. `spoof SubscriptionManager.getDefaultVoiceSubscriptionId: ${_subId} -> ${subId}`
  124. )
  125. return parseInt(subId)
  126. }
  127. SubscriptionManager.getActiveDataSubscriptionId.overload().implementation =
  128. function () {
  129. const _subId = this.getActiveDataSubscriptionId()
  130. Log.i(
  131. `spoof SubscriptionManager.getActiveDataSubscriptionId: ${_subId} -> ${subId}`
  132. )
  133. return parseInt(subId)
  134. }
  135. SubscriptionManager.getSlotIndex.overload("int").implementation = function (
  136. i
  137. ) {
  138. const _slotIndex = this.getSlotIndex(i)
  139. Log.i(`spoof SubscriptionManager.getSlotIndex: ${_slotIndex} -> 0`)
  140. return 0
  141. }
  142. SubscriptionManager.isUsableSubscriptionId.overload("int").implementation =
  143. function (i) {
  144. const _isUsable = this.isUsableSubscriptionId(i)
  145. Log.i(`SubscriptionManager.isUsableSubscriptionId: ${_isUsable}`)
  146. return _isUsable
  147. }
  148. SubscriptionManager.isValidSubscriptionId.overload("int").implementation =
  149. function (i) {
  150. const _isValid = this.isValidSubscriptionId(i)
  151. Log.i(
  152. `spoof SubscriptionManager.isValidSubscriptionId(${i}): ${_isValid} -> true`
  153. )
  154. return true
  155. }
  156. SubscriptionManager.getPhoneNumber.overload("int").implementation =
  157. function (i) {
  158. Log.i(
  159. `spoof SubscriptionManager.getPhoneNumber(${i}): -> ${number}`
  160. )
  161. return number
  162. }
  163. SubscriptionManager.getPhoneNumber.overload("int", "int").implementation =
  164. function (i, i2) {
  165. Log.i(
  166. `spoof SubscriptionManager.getPhoneNumber(${i},${i2}): -> ${number}`
  167. )
  168. return number
  169. }
  170. SubscriptionManager.getActiveSubscriptionInfoList.overload().implementation =
  171. function () {
  172. const _list = this.getActiveSubscriptionInfoList()
  173. Log.i(
  174. `SubscriptionManager.getActiveSubscriptionInfoList ${_list.size()}`
  175. )
  176. return _list
  177. }
  178. SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex.overload(
  179. "int"
  180. ).implementation = function (i) {
  181. const _info = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  182. Log.i(
  183. `SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(${i}): ${
  184. _info ? "ok" : "null"
  185. }`
  186. )
  187. return _info
  188. }
  189. SubscriptionManager.getActiveSubscriptionIdList.overload().implementation =
  190. function () {
  191. const _list = this.getActiveSubscriptionIdList()
  192. Log.i(
  193. `spoof SubscriptionManager.getActiveSubscriptionIdList ${_list} -> ${subId}`
  194. )
  195. return [parseInt(subId)]
  196. }
  197. SubscriptionManager.getActiveSubscriptionInfo.overload(
  198. "int"
  199. ).implementation = function (i) {
  200. const _info = this.getActiveSubscriptionInfo(i)
  201. const simCount = this.getActiveSubscriptionInfoCountMax()
  202. let subInfo = null
  203. try {
  204. for (let i = 0; i < simCount; i++) {
  205. subInfo = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  206. if (subInfo) {
  207. break
  208. }
  209. }
  210. Log.i(`spoof SubscriptionManager.getActiveSubscriptionInfo(${i})`)
  211. } catch (error) {
  212. console.error(
  213. `spoof error SubscriptionManager.getActiveSubscriptionInfo(${i})`
  214. )
  215. error.printStackTrace()
  216. }
  217. return subInfo
  218. }
  219. SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex.overload(
  220. "int"
  221. ).implementation = function (s) {
  222. const _info = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  223. Log.i(
  224. `SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex: ${_info}`
  225. )
  226. return _info
  227. }
  228. SubscriptionManager.isActiveSubscriptionId.overload("int").implementation =
  229. function (i) {
  230. const _isActive = this.isActiveSubscriptionId(i)
  231. Log.i(
  232. `spoof SubscriptionManager.isActiveSubscriptionId(${i}): ${_isActive} -> true`
  233. )
  234. return true
  235. }
  236. const SubscriptionInfo = Java.use("android.telephony.SubscriptionInfo")
  237. SubscriptionInfo.getMcc.overload().implementation = function () {
  238. const _mcc = this.getMcc()
  239. Log.i(`spoof SubscriptionInfo.getMcc: ${_mcc} -> ${mcc}`)
  240. return parseInt(mcc)
  241. }
  242. SubscriptionInfo.getMnc.overload().implementation = function () {
  243. const _mnc = this.getMnc()
  244. Log.i(`spoof SubscriptionInfo.getMnc: ${_mnc} -> ${mnc}`)
  245. return parseInt(mnc)
  246. }
  247. SubscriptionInfo.getMccString.overload().implementation = function () {
  248. const _mccString = this.getMccString()
  249. Log.i(`spoof SubscriptionInfo.getMccString: ${_mccString} -> ${mcc}`)
  250. return mcc
  251. }
  252. SubscriptionInfo.getMncString.overload().implementation = function () {
  253. const _mncString = this.getMncString()
  254. Log.i(`spoof SubscriptionInfo.getMncString: ${_mncString} -> ${mnc}`)
  255. return mnc
  256. }
  257. SubscriptionInfo.getNumber.overload().implementation = function () {
  258. const _number = this.getNumber()
  259. Log.i(`spoof SubscriptionInfo.getNumber: ${_number} -> ${number}`)
  260. return number
  261. }
  262. SubscriptionInfo.getIccId.overload().implementation = function () {
  263. const _iccId = this.getIccId()
  264. Log.i(`spoof SubscriptionInfo.getIccId: ${_iccId} -> ${iccId}`)
  265. return iccId
  266. }
  267. SubscriptionInfo.getCountryIso.overload().implementation = function () {
  268. const _countryIso = this.getCountryIso()
  269. Log.i(
  270. `spoof SubscriptionInfo.getCountryIso: ${_countryIso} -> ${countryIso}`
  271. )
  272. return countryIso
  273. }
  274. SubscriptionInfo.getSubscriptionId.overload().implementation = function () {
  275. const _subId = this.getSubscriptionId()
  276. if (!subId) {
  277. Log.i(_subId)
  278. return _subId
  279. }
  280. Log.i(`spoof SubscriptionInfo.getSubscriptionId: ${_subId} -> ${subId}`)
  281. return parseInt(subId)
  282. }
  283. const TelephonyManager = Java.use("android.telephony.TelephonyManager")
  284. TelephonyManager.createForSubscriptionId.overload("int").implementation =
  285. function (i) {
  286. Log.i(`spoof TelephonyManager.createForSubscriptionId: ${i}`)
  287. return this
  288. }
  289. TelephonyManager.getLine1Number.overload().implementation = function () {
  290. const _number = this.getLine1Number()
  291. Log.i(`spoof TelephonyManager.getLine1Number: ${_number} -> ${number}`)
  292. return number
  293. }
  294. TelephonyManager.getSimOperator.overload().implementation = function () {
  295. const _simOperator = this.getSimOperator()
  296. Log.i(
  297. `spoof TelephonyManager.getSimOperator: ${_simOperator} -> ${simOperator}`
  298. )
  299. return simOperator
  300. }
  301. TelephonyManager.getNetworkOperator.overload().implementation =
  302. function () {
  303. const _networkOperator = this.getNetworkOperator()
  304. Log.i(
  305. `spoof TelephonyManager.getNetworkOperator: ${_networkOperator} -> ${networkOperator}`
  306. )
  307. return networkOperator
  308. }
  309. TelephonyManager.getSimSerialNumber.overload().implementation =
  310. function () {
  311. const _simSerialNumber = this.getSimSerialNumber()
  312. Log.i(
  313. `spoof TelephonyManager.getSimSerialNumber: ${_simSerialNumber} -> ${simSerialNumber}`
  314. )
  315. return simSerialNumber
  316. }
  317. TelephonyManager.getSubscriberId.overload().implementation = function () {
  318. const _imsi = this.getSubscriberId()
  319. Log.i(`spoof TelephonyManager.getSubscriberId: ${_imsi} -> ${imsi}`)
  320. return imsi
  321. }
  322. TelephonyManager.getImei.overload().implementation = function () {
  323. const _imei = this.getImei()
  324. Log.i(`spoof TelephonyManager.getImei: ${_imei} -> ${imei}`)
  325. return imei
  326. }
  327. TelephonyManager.getNetworkCountryIso.overload().implementation =
  328. function () {
  329. const _countryIso = this.getNetworkCountryIso()
  330. Log.i(
  331. `spoof TelephonyManager.getNetworkCountryIso: ${_countryIso} -> ${countryIso}`
  332. )
  333. return countryIso
  334. }
  335. TelephonyManager.getSimCountryIso.overload().implementation = function () {
  336. const _countryIso = this.getSimCountryIso()
  337. Log.i(
  338. `spoof TelephonyManager.getSimCountryIso: ${_countryIso} -> ${countryIso}`
  339. )
  340. return countryIso
  341. }
  342. TelephonyManager.getSubscriptionId.overload().implementation = function () {
  343. const _subId = this.getSubscriptionId()
  344. if (!subId) {
  345. Log.i(_subId)
  346. return _subId
  347. }
  348. Log.i(`spoof TelephonyManager.getSubscriptionId: ${_subId} -> ${subId}`)
  349. return parseInt(subId)
  350. }
  351. TelephonyManager.getSimState.overload().implementation = function () {
  352. const _simState = this.getSimState()
  353. Log.i(`spoof TelephonyManager.getSimState: ${_simState} -> 5`)
  354. return 5
  355. }
  356. const PhoneNumberVerification = Java.use(
  357. "com.google.android.gms.constellation.PhoneNumberVerification"
  358. )
  359. PhoneNumberVerification.$init.overload(
  360. "java.lang.String",
  361. "long",
  362. "int",
  363. "int",
  364. "java.lang.String",
  365. "android.os.Bundle",
  366. "int",
  367. "long"
  368. ).implementation = function (str, j, i, i2, str2, bundle, i3, l) {
  369. Log.e("PhoneNumberVerification.$init")
  370. Log.e(
  371. `str: ${str}, j: ${j}, i: ${i}, i2: ${i2}, str2: ${str2}, i3: ${i3}, l: ${l}`
  372. )
  373. // print bundle
  374. const keySet = bundle.keySet().toArray()
  375. for (let i = 0; i < keySet.length; i++) {
  376. const key = keySet[i]
  377. Log.i(`key: ${key}, value: ${bundle.get(key)}`)
  378. }
  379. return this.$init(str, j, i, i2, str2, bundle, i3, l)
  380. }
  381. const SetAsterismConsentRequest = Java.use(
  382. "com.google.android.gms.asterism.SetAsterismConsentRequest"
  383. )
  384. SetAsterismConsentRequest.$init.overload(
  385. "int",
  386. "int",
  387. "int",
  388. "[I",
  389. "java.lang.Long",
  390. "int",
  391. "android.os.Bundle",
  392. "int",
  393. "java.lang.String",
  394. "java.lang.String",
  395. "java.lang.String",
  396. "java.lang.String",
  397. "java.lang.String",
  398. "java.lang.String",
  399. "java.lang.String",
  400. "java.lang.String",
  401. "int"
  402. ).implementation = function (
  403. i,
  404. i2,
  405. i3,
  406. iArr,
  407. l,
  408. i4,
  409. bundle,
  410. i5,
  411. str,
  412. str2,
  413. str3,
  414. str4,
  415. str5,
  416. str6,
  417. str7,
  418. str8,
  419. i6
  420. ) {
  421. Log.i("SetAsterismConsentRequest.$init")
  422. Log.i(
  423. `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}, i6: ${i6}`
  424. )
  425. // print bundle
  426. const keySet = bundle.keySet().toArray()
  427. for (let i = 0; i < keySet.length; i++) {
  428. const key = keySet[i]
  429. Log.i(`key: ${key}, value: ${bundle.get(key)}`)
  430. }
  431. return this.$init(
  432. i,
  433. i2,
  434. i3,
  435. iArr,
  436. l,
  437. i4,
  438. bundle,
  439. i5,
  440. str,
  441. str2,
  442. str3,
  443. str4,
  444. str5,
  445. str6,
  446. str7,
  447. str8,
  448. i6
  449. )
  450. }
  451. const SetAsterismConsentResponse = Java.use(
  452. "com.google.android.gms.asterism.SetAsterismConsentResponse"
  453. )
  454. SetAsterismConsentResponse.$init.overload(
  455. "int",
  456. "java.lang.String",
  457. "java.lang.String"
  458. ).implementation = function (i, str, str2) {
  459. Log.i("SetAsterismConsentResponse.$init")
  460. Log.i(`i: ${i}, str: ${str}, str2: ${str2}`)
  461. return this.$init(i, str, str2)
  462. }
  463. const amac = Java.use("amac")
  464. const amlo = Java.use("amlo")
  465. const emiy = Java.use("emiy")
  466. const emiz = Java.use("emiz")
  467. const emis = Java.use("emis")
  468. const fiwu = Java.use("fiwu")
  469. const ambs = Java.use("ambs")
  470. const emkm = Java.use("emkm")
  471. const fivh = Java.use("fivh")
  472. const fivk = Java.use("fivk")
  473. const fivn = Java.use("fivn")
  474. const emjr = Java.use("emjr")
  475. const amag = Java.use("amag")
  476. const ftha = Java.use("ftha")
  477. const ftgy = Java.use("ftgy")
  478. const fuem = Java.use("fuem")
  479. const fiwt = Java.use("fiwt")
  480. const TimeUnit = Java.use("java.util.concurrent.TimeUnit")
  481. const ambi = Java.use("ambi")
  482. const fivj = Java.use("fivj")
  483. amac.o.overload("amlu", "boolean", "boolean", "fiwt").implementation =
  484. function (amluVar, z, z2, fiwtVar) {
  485. Log.i("amac.o", amluVar, z, z2, fiwtVar)
  486. try {
  487. var z3
  488. var z4
  489. const eq = fiwtVar.eQ()
  490. const arr0 = Java.array("java.lang.Object", [this.z(eq)])
  491. this._a.value.d("SetConsentRequest: %s", arr0)
  492. var amloVar = this._d.value
  493. var emiyVar = Java.cast(emiz.h.value.eV(), emiy)
  494. if (!emiyVar._b.value.fm()) {
  495. emiyVar.O()
  496. }
  497. var emizVar = Java.cast(emiyVar._b.value, emiz)
  498. emizVar.b = emkm.a(10)
  499. Log.i(emizVar, emizVar.b, emizVar.a)
  500. emizVar.a = emizVar.a | 1
  501. var eV = emis.d.value.eV()
  502. if ((fiwtVar.a.value & 2) != 0) {
  503. var fivnVar = fiwtVar.e.value
  504. if (fivnVar == null) {
  505. fivnVar = fivn.c.value
  506. }
  507. var b = fivh.b(fivnVar.a.value)
  508. if (b == 0) {
  509. z3 = false
  510. } else if (b == 3) {
  511. z3 = true
  512. } else {
  513. z3 = false
  514. }
  515. if (!eV._b.value.fm()) {
  516. eV.O()
  517. }
  518. var fbzbVar = eV._b.value
  519. var emisVar = Java.cast(fbzbVar, emis)
  520. emisVar.a |= 1
  521. emisVar.b = z3
  522. var fivnVar2 = fiwtVar.e.value
  523. if (fivnVar2 == null) {
  524. fivnVar2 = fivn.c.value
  525. }
  526. var a2 = fivk.a(fivnVar2.b.value)
  527. if (a2 == 0) {
  528. z4 = false
  529. } else if (a2 == 3) {
  530. z4 = true
  531. } else {
  532. z4 = false
  533. }
  534. if (!fbzbVar.fm()) {
  535. eV.O()
  536. }
  537. var emisVar2 = Java.cast(eV._b.value, emis)
  538. emisVar2.a |= 2
  539. emisVar2.c = z4
  540. }
  541. if (!emiyVar._b.value.fm()) {
  542. emiyVar.O()
  543. }
  544. var emizVar2 = Java.cast(emiyVar._b.value, emiz)
  545. var emisVar3 = Java.cast(eV.K(), emis)
  546. emisVar3.getClass()
  547. emizVar2.c = emisVar3
  548. emizVar2.a |= 2
  549. amloVar.A(amluVar, emjr.b(5), Java.cast(emiyVar.K(), emiz))
  550. var v = this.v()
  551. var akxiVar = this._c.value
  552. var j = this._e.value
  553. if (amag._a.value == null) {
  554. amag._a.value = ftha.b(
  555. ftgy._a.value,
  556. "google.internal.communications.phonedeviceverification.v1.PhoneDeviceVerification/SetConsent",
  557. fuem.a(fiwt.k.value),
  558. fuem.a(fiwu.a.value)
  559. )
  560. }
  561. // const vdg = v.d.value.g(
  562. // amag._a.value,
  563. // akxiVar,
  564. // fiwtVar,
  565. // Java.use('java.lang.Long').valueOf(j).longValue(),
  566. // TimeUnit.MILLISECONDS.value,
  567. // v.e.value
  568. // )
  569. // Log.i("aaaaa")
  570. // const eqres = Java.cast(vdg, fiwu).eQ()
  571. // Log.i("bbbbb")
  572. // const res = this.z(eqres)
  573. // Log.i("SetConsentResponse: ", res)
  574. // const arr = Java.array("java.lang.Object", [res])
  575. // this._a.value.d("SetConsentResponse: %s", arr)
  576. var amloVar2 = this._d.value
  577. var emiyVar2 = Java.cast(emiz.h.value.eV(), emiy)
  578. if (!emiyVar2._b.value.fm()) {
  579. emiyVar2.O()
  580. }
  581. var emizVar3 = Java.cast(emiyVar2._b.value, emiz)
  582. emizVar3.b = emkm.a(10)
  583. emizVar3.a |= 1
  584. amloVar2.A(amluVar, emjr.b(6), Java.cast(emiyVar2.K(), emiz))
  585. var a3 = ambi.b().a(this._b.value.getApplicationContext())
  586. a3.n(z)
  587. a3.m(Java.use("java.lang.Boolean").valueOf(z2))
  588. var b2 = fivj.b(fiwtVar.g.value)
  589. if (b2 == 0) {
  590. b2 = 1
  591. }
  592. var a4 = fivj.a(b2)
  593. var edit = Java.cast(a3, ambs)._c.value.edit()
  594. edit.putInt("device_consent_version", a4)
  595. edit.apply()
  596. Log.i("oooooooooo")
  597. } catch (e) {
  598. Log.i("2222222", e)
  599. trace()
  600. }
  601. // this.o(amluVar, z, z2, fiwtVar)
  602. }
  603. const ConscryptFileDescriptorSocket = Java.use(
  604. "com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket"
  605. )
  606. ConscryptFileDescriptorSocket.setSoWriteTimeout.overload(
  607. "int"
  608. ).implementation = function (i) {
  609. Log.i("ConscryptFileDescriptorSocket.setSoWriteTimeout: ", i)
  610. return this.setSoWriteTimeout(i)
  611. }
  612. // ConscryptFileDescriptorSocket.verifyCertificateChain.overload(
  613. // //byte[][] bArr, String str
  614. // "[[B",
  615. // "java.lang.String"
  616. // ).implementation = function (bArr, str) {
  617. // Log.i(
  618. // "ConscryptFileDescriptorSocket.verifyCertificateChain: ",
  619. // bArr,
  620. // str
  621. // )
  622. // }
  623. const alja = Java.use("alja")
  624. alja.u.overload("java.lang.Exception").implementation = function (e) {
  625. Log.i("alja.u", JSON.stringify(e))
  626. Log.i(Object.keys(e))
  627. const b = e.b.value
  628. Log.i("b", b.toString())
  629. return this.u(e)
  630. }
  631. const albf = Java.use("albf")
  632. albf.h.overload("java.lang.String", "[Ljava.lang.Object;").implementation =
  633. function (str, objArr) {
  634. Log.e("albf.h", str, objArr)
  635. if (str.includes("Verification failed")) {
  636. trace()
  637. }
  638. return this.h(str, objArr)
  639. }
  640. const alyx = Java.use("alyx")
  641. const fixf = Java.use("fixf")
  642. alyx.a.overload("fixf").implementation = function (fixf) {
  643. Log.i("alyx.a", fixf)
  644. const b = this.a(fixf)
  645. const keySet = b.keySet().toArray()
  646. for (let i = 0; i < keySet.length; i++) {
  647. const key = keySet[i]
  648. Log.w(`key: ${key}, value: ${b.get(key)}`)
  649. }
  650. return b
  651. }
  652. alyx.m.overload("amlu", "java.util.List").implementation = function (
  653. amlu,
  654. list
  655. ) {
  656. Log.e("alyx.m", amlu, list)
  657. for (let i = 0; i < list.size(); i++) {
  658. Log.e(`list[${i}]=${list.get(i)}`)
  659. }
  660. const a = amlu._a.value // string
  661. Log.e(`\ta=${a}`)
  662. const f = amlu.f.value // string
  663. Log.e(`\tf=${f}`)
  664. const g = amlu.g.value // list
  665. for (let i = 0; i < g.size(); i++) {
  666. Log.e(`\tg[${i}]=${g.get(i)}`)
  667. }
  668. const h = amlu.h.value // list
  669. if (h) {
  670. for (let i = 0; i < h.size(); i++) {
  671. Log.e(`\th[${i}]=${h.get(i)}`)
  672. }
  673. }
  674. const HashMap = Java.use("java.util.HashMap")
  675. const d = Java.cast(amlu.d.value, HashMap) // map
  676. const keySet = d.keySet().toArray()
  677. for (let key of keySet) {
  678. Log.e(`\td[${key}]=${d.get(key)}`)
  679. Log.e(Object.getOwnPropertyNames(d.get(key).__proto__).join("\n"))
  680. const gson = Java.use("com.google.gson.Gson").$new()
  681. const json = gson.toJson(d.get(key))
  682. Log.e(json)
  683. }
  684. const e = Java.cast(amlu.e.value, HashMap) // map
  685. const keySet2 = e.keySet().toArray()
  686. for (let key of keySet2) {
  687. Log.e(`\te[${key}]=${e.get(key)}`)
  688. }
  689. return this.m(amlu, list)
  690. }
  691. const Bundle = Java.use("android.os.Bundle")
  692. Bundle.getInt.overload("java.lang.String").implementation = function (str) {
  693. Log.e(`Bundle.getInt: ${str}`)
  694. if (str === "sim_slot_index") {
  695. trace()
  696. return 0
  697. }
  698. return this.getInt(str)
  699. }
  700. })