_spoof_gms.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. const mcc = "310"
  2. const mnc = "630"
  3. const simOperator = "310630"
  4. const networkOperator = "310630"
  5. const simSerialNumber = "89380062300689131123"
  6. const iccId = "89380062300689131123"
  7. const number = "6183592513"
  8. const imei = "864929043714851"
  9. const imsi = "3106306433246456"
  10. const countryIso = "us"
  11. const subId = ""
  12. function trace() {
  13. console.log(
  14. Java.use("android.util.Log").getStackTraceString(
  15. Java.use("java.lang.Throwable").$new()
  16. )
  17. )
  18. }
  19. Java.perform(function () {
  20. const SmsManager = Java.use("android.telephony.SmsManager")
  21. SmsManager.getSmsManagerForSubscriptionId.overload("int").implementation =
  22. function (i) {
  23. const _smsManager = this.getSmsManagerForSubscriptionId(i)
  24. console.log(`SmsManager.getSmsManagerForSubscriptionId: ${i}`)
  25. return _smsManager
  26. }
  27. SmsManager.getDefault.overload().implementation = function () {
  28. const _smsManager = this.getDefault(i)
  29. console.log(`SmsManager.getDefault`)
  30. return _smsManager
  31. }
  32. SmsManager.getDefaultSmsSubscriptionId.overload().implementation =
  33. function () {
  34. const _subId = this.getDefaultSmsSubscriptionId()
  35. console.log(`SmsManager.getDefaultSmsSubscriptionId: ${_subId}`)
  36. return _subId
  37. }
  38. SmsManager.getSubscriptionId.overload().implementation = function () {
  39. const _subId = this.getSubscriptionId()
  40. console.log(`SmsManager.getSubscriptionId: ${_subId}`)
  41. return _subId
  42. }
  43. const SubscriptionInfo = Java.use("android.telephony.SubscriptionInfo")
  44. SubscriptionInfo.getMcc.overload().implementation = function () {
  45. const _mcc = this.getMcc()
  46. console.log(`spoof SubscriptionInfo.getMcc: ${_mcc} -> ${mcc}`)
  47. return parseInt(mcc)
  48. }
  49. SubscriptionInfo.getMnc.overload().implementation = function () {
  50. const _mnc = this.getMnc()
  51. console.log(`spoof SubscriptionInfo.getMnc: ${_mnc} -> ${mnc}`)
  52. return parseInt(mnc)
  53. }
  54. SubscriptionInfo.getMccString.overload().implementation = function () {
  55. const _mccString = this.getMccString()
  56. console.log(
  57. `spoof SubscriptionInfo.getMccString: ${_mccString} -> ${mcc}`
  58. )
  59. return mcc
  60. }
  61. SubscriptionInfo.getMncString.overload().implementation = function () {
  62. const _mncString = this.getMncString()
  63. console.log(
  64. `spoof SubscriptionInfo.getMncString: ${_mncString} -> ${mnc}`
  65. )
  66. return mnc
  67. }
  68. SubscriptionInfo.getNumber.overload().implementation = function () {
  69. const _number = this.getNumber()
  70. console.log(`spoof SubscriptionInfo.getNumber: ${_number} -> ${number}`)
  71. return number
  72. }
  73. SubscriptionInfo.getIccId.overload().implementation = function () {
  74. const _iccId = this.getIccId()
  75. console.log(`spoof SubscriptionInfo.getIccId: ${_iccId} -> ${iccId}`)
  76. return iccId
  77. }
  78. SubscriptionInfo.getCountryIso.overload().implementation = function () {
  79. const _countryIso = this.getCountryIso()
  80. console.log(
  81. `spoof SubscriptionInfo.getCountryIso: ${_countryIso} -> ${countryIso}`
  82. )
  83. return countryIso
  84. }
  85. SubscriptionInfo.getSubscriptionId.overload().implementation = function () {
  86. const _subId = this.getSubscriptionId()
  87. if (!subId) {
  88. console.log(_subId)
  89. return _subId
  90. }
  91. console.log(
  92. `spoof SubscriptionInfo.getSubscriptionId: ${_subId} -> ${subId}`
  93. )
  94. return parseInt(subId)
  95. }
  96. const TelephonyManager = Java.use("android.telephony.TelephonyManager")
  97. TelephonyManager.getLine1Number.overload().implementation = function () {
  98. const _number = this.getLine1Number()
  99. console.log(
  100. `spoof TelephonyManager.getLine1Number: ${_number} -> ${number}`
  101. )
  102. return number
  103. }
  104. TelephonyManager.getSimOperator.overload().implementation = function () {
  105. const _simOperator = this.getSimOperator()
  106. console.log(
  107. `spoof TelephonyManager.getSimOperator: ${_simOperator} -> ${simOperator}`
  108. )
  109. return simOperator
  110. }
  111. TelephonyManager.getNetworkOperator.overload().implementation =
  112. function () {
  113. const _networkOperator = this.getNetworkOperator()
  114. console.log(
  115. `spoof TelephonyManager.getNetworkOperator: ${_networkOperator} -> ${networkOperator}`
  116. )
  117. return networkOperator
  118. }
  119. TelephonyManager.getSimSerialNumber.overload().implementation =
  120. function () {
  121. const _simSerialNumber = this.getSimSerialNumber()
  122. console.log(
  123. `spoof TelephonyManager.getSimSerialNumber: ${_simSerialNumber} -> ${simSerialNumber}`
  124. )
  125. return simSerialNumber
  126. }
  127. TelephonyManager.getSubscriberId.overload().implementation = function () {
  128. const _imsi = this.getSubscriberId()
  129. console.log(
  130. `spoof TelephonyManager.getSubscriberId: ${_imsi} -> ${imsi}`
  131. )
  132. return imsi
  133. }
  134. TelephonyManager.getImei.overload().implementation = function () {
  135. const _imei = this.getImei()
  136. console.log(`spoof TelephonyManager.getImei: ${_imei} -> ${imei}`)
  137. return imei
  138. }
  139. TelephonyManager.getNetworkCountryIso.overload().implementation =
  140. function () {
  141. const _countryIso = this.getNetworkCountryIso()
  142. console.log(
  143. `spoof TelephonyManager.getNetworkCountryIso: ${_countryIso} -> ${countryIso}`
  144. )
  145. return countryIso
  146. }
  147. TelephonyManager.getSimCountryIso.overload().implementation = function () {
  148. const _countryIso = this.getSimCountryIso()
  149. console.log(
  150. `spoof TelephonyManager.getSimCountryIso: ${_countryIso} -> ${countryIso}`
  151. )
  152. return countryIso
  153. }
  154. TelephonyManager.getSubscriptionId.overload().implementation = function () {
  155. const _subId = this.getSubscriptionId()
  156. if (!subId) {
  157. console.log(_subId)
  158. return _subId
  159. }
  160. console.log(
  161. `spoof TelephonyManager.getSubscriptionId: ${_subId} -> ${subId}`
  162. )
  163. return parseInt(subId)
  164. }
  165. const PhoneNumberVerification = Java.use(
  166. "com.google.android.gms.constellation.PhoneNumberVerification"
  167. )
  168. PhoneNumberVerification.$init.overload(
  169. "java.lang.String",
  170. "long",
  171. "int",
  172. "int",
  173. "java.lang.String",
  174. "android.os.Bundle",
  175. "int",
  176. "long"
  177. ).implementation = function (str, j, i, i2, str2, bundle, i3, l) {
  178. console.log("PhoneNumberVerification.$init")
  179. console.log(
  180. `str: ${str}, j: ${j}, i: ${i}, i2: ${i2}, str2: ${str2}, i3: ${i3}, l: ${l}`
  181. )
  182. // print bundle
  183. const keySet = bundle.keySet().toArray()
  184. for (let i = 0; i < keySet.length; i++) {
  185. const key = keySet[i]
  186. console.log(`key: ${key}, value: ${bundle.get(key)}`)
  187. }
  188. return this.$init(str, j, i, i2, str2, bundle)
  189. }
  190. const SetAsterismConsentRequest = Java.use(
  191. "com.google.android.gms.asterism.SetAsterismConsentRequest"
  192. )
  193. SetAsterismConsentRequest.$init.overload(
  194. "int",
  195. "int",
  196. "int",
  197. "[I",
  198. "java.lang.Long",
  199. "int",
  200. "android.os.Bundle",
  201. "int",
  202. "java.lang.String",
  203. "java.lang.String",
  204. "java.lang.String",
  205. "java.lang.String",
  206. "java.lang.String",
  207. "java.lang.String",
  208. "java.lang.String",
  209. "java.lang.String",
  210. "int"
  211. ).implementation = function (
  212. i,
  213. i2,
  214. i3,
  215. iArr,
  216. l,
  217. i4,
  218. bundle,
  219. i5,
  220. str,
  221. str2,
  222. str3,
  223. str4,
  224. str5,
  225. str6,
  226. str7,
  227. str8,
  228. i6
  229. ) {
  230. console.log("SetAsterismConsentRequest.$init")
  231. console.log(
  232. `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}`
  233. )
  234. // print bundle
  235. const keySet = bundle.keySet().toArray()
  236. for (let i = 0; i < keySet.length; i++) {
  237. const key = keySet[i]
  238. console.log(`key: ${key}, value: ${bundle.get(key)}`)
  239. }
  240. return this.$init(
  241. i,
  242. i2,
  243. i3,
  244. iArr,
  245. l,
  246. i4,
  247. bundle,
  248. i5,
  249. str,
  250. str2,
  251. str3,
  252. str4,
  253. str5,
  254. str6,
  255. str7,
  256. str8,
  257. i6
  258. )
  259. }
  260. const SetAsterismConsentResponse = Java.use(
  261. "com.google.android.gms.asterism.SetAsterismConsentResponse"
  262. )
  263. SetAsterismConsentResponse.$init.overload(
  264. "int",
  265. "java.lang.String",
  266. "java.lang.String"
  267. ).implementation = function (i, str, str2) {
  268. console.log("SetAsterismConsentResponse.$init")
  269. console.log(`i: ${i}, str: ${str}, str2: ${str2}`)
  270. return this.$init(i, str, str2)
  271. }
  272. const amac = Java.use("amac")
  273. const amlo = Java.use("amlo")
  274. const emiy = Java.use("emiy")
  275. const emiz = Java.use("emiz")
  276. const emis = Java.use("emis")
  277. const fiwu = Java.use("fiwu")
  278. const ambs = Java.use("ambs")
  279. const emkm = Java.use("emkm")
  280. const fivh = Java.use("fivh")
  281. const fivk = Java.use("fivk")
  282. const fivn = Java.use("fivn")
  283. const emjr = Java.use("emjr")
  284. const amag = Java.use("amag")
  285. const ftha = Java.use("ftha")
  286. const ftgy = Java.use("ftgy")
  287. const fuem = Java.use("fuem")
  288. const fiwt = Java.use("fiwt")
  289. const TimeUnit = Java.use("java.util.concurrent.TimeUnit")
  290. const ambi = Java.use("ambi")
  291. const fivj = Java.use("fivj")
  292. amac.o.overload("amlu", "boolean", "boolean", "fiwt").implementation =
  293. function (amluVar, z, z2, fiwtVar) {
  294. console.log("amac.o", amluVar, z, z2, fiwtVar)
  295. try {
  296. var z3
  297. var z4
  298. const eq = fiwtVar.eQ()
  299. const arr0 = Java.array("java.lang.Object", [this.z(eq)])
  300. this._a.value.d("SetConsentRequest: %s", arr0)
  301. var amloVar = this._d.value
  302. var emiyVar = Java.cast(emiz.h.value.eV(), emiy)
  303. if (!emiyVar._b.value.fm()) {
  304. emiyVar.O()
  305. }
  306. var emizVar = Java.cast(emiyVar._b.value, emiz)
  307. emizVar.b = emkm.a(10)
  308. console.log(emizVar, emizVar.b, emizVar.a)
  309. emizVar.a = emizVar.a | 1
  310. var eV = emis.d.value.eV()
  311. if ((fiwtVar.a.value & 2) != 0) {
  312. var fivnVar = fiwtVar.e.value
  313. if (fivnVar == null) {
  314. fivnVar = fivn.c.value
  315. }
  316. var b = fivh.b(fivnVar.a.value)
  317. if (b == 0) {
  318. z3 = false
  319. } else if (b == 3) {
  320. z3 = true
  321. } else {
  322. z3 = false
  323. }
  324. if (!eV._b.value.fm()) {
  325. eV.O()
  326. }
  327. var fbzbVar = eV._b.value
  328. var emisVar = Java.cast(fbzbVar, emis)
  329. emisVar.a |= 1
  330. emisVar.b = z3
  331. var fivnVar2 = fiwtVar.e.value
  332. if (fivnVar2 == null) {
  333. fivnVar2 = fivn.c.value
  334. }
  335. var a2 = fivk.a(fivnVar2.b.value)
  336. if (a2 == 0) {
  337. z4 = false
  338. } else if (a2 == 3) {
  339. z4 = true
  340. } else {
  341. z4 = false
  342. }
  343. if (!fbzbVar.fm()) {
  344. eV.O()
  345. }
  346. var emisVar2 = Java.cast(eV._b.value, emis)
  347. emisVar2.a |= 2
  348. emisVar2.c = z4
  349. }
  350. if (!emiyVar._b.value.fm()) {
  351. emiyVar.O()
  352. }
  353. var emizVar2 = Java.cast(emiyVar._b.value, emiz)
  354. var emisVar3 = Java.cast(eV.K(), emis)
  355. emisVar3.getClass()
  356. emizVar2.c = emisVar3
  357. emizVar2.a |= 2
  358. amloVar.A(amluVar, emjr.b(5), Java.cast(emiyVar.K(), emiz))
  359. var v = this.v()
  360. var akxiVar = this._c.value
  361. var j = this._e.value
  362. if (amag._a.value == null) {
  363. amag._a.value = ftha.b(
  364. ftgy._a.value,
  365. "google.internal.communications.phonedeviceverification.v1.PhoneDeviceVerification/SetConsent",
  366. fuem.a(fiwt.k.value),
  367. fuem.a(fiwu.a.value)
  368. )
  369. }
  370. // const vdg = v.d.value.g(
  371. // amag._a.value,
  372. // akxiVar,
  373. // fiwtVar,
  374. // Java.use('java.lang.Long').valueOf(j).longValue(),
  375. // TimeUnit.MILLISECONDS.value,
  376. // v.e.value
  377. // )
  378. // console.log("aaaaa")
  379. // const eqres = Java.cast(vdg, fiwu).eQ()
  380. // console.log("bbbbb")
  381. // const res = this.z(eqres)
  382. // console.log("SetConsentResponse: ", res)
  383. // const arr = Java.array("java.lang.Object", [res])
  384. // this._a.value.d("SetConsentResponse: %s", arr)
  385. var amloVar2 = this._d.value
  386. var emiyVar2 = Java.cast(emiz.h.value.eV(), emiy)
  387. if (!emiyVar2._b.value.fm()) {
  388. emiyVar2.O()
  389. }
  390. var emizVar3 = Java.cast(emiyVar2._b.value, emiz)
  391. emizVar3.b = emkm.a(10)
  392. emizVar3.a |= 1
  393. amloVar2.A(amluVar, emjr.b(6), Java.cast(emiyVar2.K(), emiz))
  394. var a3 = ambi.b().a(this._b.value.getApplicationContext())
  395. a3.n(z)
  396. a3.m(Java.use("java.lang.Boolean").valueOf(z2))
  397. var b2 = fivj.b(fiwtVar.g.value)
  398. if (b2 == 0) {
  399. b2 = 1
  400. }
  401. var a4 = fivj.a(b2)
  402. var edit = Java.cast(a3, ambs)._c.value.edit()
  403. edit.putInt("device_consent_version", a4)
  404. edit.apply()
  405. console.log("oooooooooo")
  406. } catch (e) {
  407. console.log("2222222", e)
  408. trace()
  409. }
  410. // this.o(amluVar, z, z2, fiwtVar)
  411. }
  412. const ConscryptFileDescriptorSocket = Java.use(
  413. "com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket"
  414. )
  415. ConscryptFileDescriptorSocket.setSoWriteTimeout.overload(
  416. "int"
  417. ).implementation = function (i) {
  418. console.log("ConscryptFileDescriptorSocket.setSoWriteTimeout: ", i)
  419. return this.setSoWriteTimeout(i)
  420. }
  421. ConscryptFileDescriptorSocket.verifyCertificateChain.overload('[[B', 'java.lang.String').implementation = function (bArr, str) {
  422. console.log(
  423. "[*] ConscryptFileDescriptorSocket.verifyCertificateChain: ",
  424. bArr,
  425. str
  426. )
  427. }
  428. const cvgy = Java.use("cvgy")
  429. cvgy.g.overload().implementation = function () {
  430. const g = this.g()
  431. console.log("cvgy.g", g)
  432. trace()
  433. return g
  434. }
  435. cvgy.createSocket.overload().implementation = function () {
  436. const createSocket = this.createSocket()
  437. console.log("cvgy.createSocket", createSocket)
  438. trace()
  439. return createSocket
  440. }
  441. })