_spoof.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. const mcc = "255"
  2. const mnc = "06"
  3. const simOperator = "25506"
  4. const networkOperator = "25506"
  5. const simSerialNumber = "89380062300689132983"
  6. const iccId = "89380062300689132983"
  7. const number = "969379250"
  8. const imei = "860114061248785"
  9. const imsi = "255065209546456"
  10. const countryIso = "ua"
  11. const subId = "8"
  12. setImmediate(() => {
  13. Java.perform(function () {
  14. const SmsManager = Java.use("android.telephony.SmsManager")
  15. SmsManager.getSmsManagerForSubscriptionId.overload(
  16. "int"
  17. ).implementation = function (i) {
  18. const _smsManager = this.getSmsManagerForSubscriptionId(i)
  19. console.log(`SmsManager.getSmsManagerForSubscriptionId: ${i}`)
  20. return _smsManager
  21. }
  22. SmsManager.getDefault.overload().implementation = function () {
  23. const _smsManager = this.getDefault(i)
  24. console.log(`SmsManager.getDefault`)
  25. return _smsManager
  26. }
  27. SmsManager.getDefaultSmsSubscriptionId.overload().implementation =
  28. function () {
  29. const _subId = this.getDefaultSmsSubscriptionId()
  30. console.log(
  31. `spoof SmsManager.getDefaultSmsSubscriptionId: ${_subId} -> ${subId}`
  32. )
  33. return parseInt(subId)
  34. }
  35. SmsManager.getSubscriptionId.overload().implementation = function () {
  36. const _subId = this.getSubscriptionId()
  37. console.log(`SmsManager.getSubscriptionId: ${_subId} -> ${subId}`)
  38. return parseInt(subId)
  39. }
  40. SmsManager.getCarrierConfigValues.overload().implementation =
  41. function () {
  42. const _config = this.getCarrierConfigValues()
  43. console.log(`SmsManager.getCarrierConfigValues: ${_config}`)
  44. return _config
  45. }
  46. const CarrierConfigManager = Java.use(
  47. "android.telephony.CarrierConfigManager"
  48. )
  49. CarrierConfigManager.getConfigForSubId.overload("int").implementation =
  50. function (i) {
  51. const _config = this.getConfigForSubId(i)
  52. console.log(`CarrierConfigManager.getConfigForSubId: ${i}`)
  53. return _config
  54. }
  55. const SubscriptionManager = Java.use(
  56. "android.telephony.SubscriptionManager"
  57. )
  58. SubscriptionManager.getActiveSubscriptionInfoCount.overload().implementation =
  59. function () {
  60. const _count = this.getActiveSubscriptionInfoCount()
  61. console.log(
  62. `SubscriptionManager.getActiveSubscriptionInfoCount: ${_count}`
  63. )
  64. return _count
  65. }
  66. SubscriptionManager.getDefaultSubscriptionId.overload().implementation =
  67. function () {
  68. const _subId = this.getDefaultSubscriptionId()
  69. console.log(
  70. `spoof SubscriptionManager.getDefaultSubscriptionId: ${_subId} -> ${subId}`
  71. )
  72. return parseInt(subId)
  73. }
  74. SubscriptionManager.getDefaultSmsSubscriptionId.overload().implementation =
  75. function () {
  76. const _subId = this.getDefaultSmsSubscriptionId()
  77. console.log(
  78. `spoof SubscriptionManager.getDefaultSmsSubscriptionId: ${_subId} -> ${subId}`
  79. )
  80. return parseInt(subId)
  81. }
  82. SubscriptionManager.getDefaultVoiceSubscriptionId.overload().implementation =
  83. function () {
  84. const _subId = this.getDefaultVoiceSubscriptionId()
  85. console.log(
  86. `spoof SubscriptionManager.getDefaultVoiceSubscriptionId: ${_subId} -> ${subId}`
  87. )
  88. return parseInt(subId)
  89. }
  90. SubscriptionManager.getActiveDataSubscriptionId.overload().implementation =
  91. function () {
  92. const _subId = this.getActiveDataSubscriptionId()
  93. console.log(
  94. `spoof SubscriptionManager.getActiveDataSubscriptionId: ${_subId} -> ${subId}`
  95. )
  96. return parseInt(subId)
  97. }
  98. SubscriptionManager.getSlotIndex.overload("int").implementation =
  99. function (i) {
  100. const _slotIndex = this.getSlotIndex(i)
  101. console.log(
  102. `spoof SubscriptionManager.getSlotIndex: ${_slotIndex} -> 0`
  103. )
  104. return 0
  105. }
  106. SubscriptionManager.isUsableSubscriptionId.overload(
  107. "int"
  108. ).implementation = function (i) {
  109. const _isUsable = this.isUsableSubscriptionId(i)
  110. console.log(
  111. `SubscriptionManager.isUsableSubscriptionId: ${_isUsable}`
  112. )
  113. return _isUsable
  114. }
  115. SubscriptionManager.isValidSubscriptionId.overload(
  116. "int"
  117. ).implementation = function (i) {
  118. const _isValid = this.isValidSubscriptionId(i)
  119. console.log(
  120. `spoof SubscriptionManager.isValidSubscriptionId(${i}): ${_isValid} -> true`
  121. )
  122. return true
  123. }
  124. SubscriptionManager.getPhoneNumber.overload("int").implementation =
  125. function (i) {
  126. console.log(
  127. `spoof SubscriptionManager.getPhoneNumber(${i}): -> ${number}`
  128. )
  129. return number
  130. }
  131. SubscriptionManager.getPhoneNumber.overload(
  132. "int",
  133. "int"
  134. ).implementation = function (i, i2) {
  135. console.log(
  136. `spoof SubscriptionManager.getPhoneNumber(${i},${i2}): -> ${number}`
  137. )
  138. return number
  139. }
  140. SubscriptionManager.getActiveSubscriptionInfoList.overload().implementation =
  141. function () {
  142. const _list = this.getActiveSubscriptionInfoList()
  143. console.log(
  144. `SubscriptionManager.getActiveSubscriptionInfoList ${_list.size()}`
  145. )
  146. return _list
  147. }
  148. SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex.overload(
  149. "int"
  150. ).implementation = function (i) {
  151. const _info = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  152. console.log(
  153. `SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(${i})`
  154. )
  155. return _info
  156. }
  157. SubscriptionManager.getActiveSubscriptionIdList.overload().implementation =
  158. function () {
  159. const _list = this.getActiveSubscriptionIdList()
  160. console.log(
  161. `spoof SubscriptionManager.getActiveSubscriptionIdList ${_list} -> ${subId}`
  162. )
  163. return [parseInt(subId)]
  164. }
  165. SubscriptionManager.getActiveSubscriptionInfo.overload(
  166. "int"
  167. ).implementation = function (i) {
  168. const _info = this.getActiveSubscriptionInfo(i)
  169. const simCount = this.getActiveSubscriptionInfoCountMax()
  170. let subInfo = null
  171. try {
  172. for (let i = 0; i < simCount; i++) {
  173. subInfo = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  174. if (subInfo) {
  175. break
  176. }
  177. }
  178. console.log(
  179. `spoof SubscriptionManager.getActiveSubscriptionInfo(${i})`
  180. )
  181. } catch (error) {
  182. console.error(
  183. `spoof error SubscriptionManager.getActiveSubscriptionInfo(${i})`
  184. )
  185. error.printStackTrace()
  186. }
  187. return subInfo
  188. }
  189. SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex.overload(
  190. "int"
  191. ).implementation = function (i) {
  192. const _info = this.getActiveSubscriptionInfoForSimSlotIndex(i)
  193. console.log(
  194. `SubscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(${i}): ${
  195. _info ? "ok" : "null"
  196. } ${_info}`
  197. )
  198. return _info
  199. }
  200. SubscriptionManager.isActiveSubscriptionId.overload(
  201. "int"
  202. ).implementation = function (i) {
  203. const _isActive = this.isActiveSubscriptionId(i)
  204. console.log(
  205. `spoof SubscriptionManager.isActiveSubscriptionId(${i}): ${_isActive} -> true`
  206. )
  207. return true
  208. }
  209. const SubscriptionInfo = Java.use("android.telephony.SubscriptionInfo")
  210. SubscriptionInfo.getMcc.overload().implementation = function () {
  211. const _mcc = this.getMcc()
  212. console.log(`spoof SubscriptionInfo.getMcc: ${_mcc} -> ${mcc}`)
  213. return parseInt(mcc)
  214. }
  215. SubscriptionInfo.getMnc.overload().implementation = function () {
  216. const _mnc = this.getMnc()
  217. console.log(`spoof SubscriptionInfo.getMnc: ${_mnc} -> ${mnc}`)
  218. return parseInt(mnc)
  219. }
  220. SubscriptionInfo.getMccString.overload().implementation = function () {
  221. const _mccString = this.getMccString()
  222. console.log(
  223. `spoof SubscriptionInfo.getMccString: ${_mccString} -> ${mcc}`
  224. )
  225. return mcc
  226. }
  227. SubscriptionInfo.getMncString.overload().implementation = function () {
  228. const _mncString = this.getMncString()
  229. console.log(
  230. `spoof SubscriptionInfo.getMncString: ${_mncString} -> ${mnc}`
  231. )
  232. return mnc
  233. }
  234. SubscriptionInfo.getNumber.overload().implementation = function () {
  235. const _number = this.getNumber()
  236. console.log(
  237. `spoof SubscriptionInfo.getNumber: ${_number} -> ${number}`
  238. )
  239. return number
  240. }
  241. SubscriptionInfo.getIccId.overload().implementation = function () {
  242. const _iccId = this.getIccId()
  243. console.log(
  244. `spoof SubscriptionInfo.getIccId: ${_iccId} -> ${iccId}`
  245. )
  246. return iccId
  247. }
  248. SubscriptionInfo.getCountryIso.overload().implementation = function () {
  249. const _countryIso = this.getCountryIso()
  250. console.log(
  251. `spoof SubscriptionInfo.getCountryIso: ${_countryIso} -> ${countryIso}`
  252. )
  253. return countryIso
  254. }
  255. SubscriptionInfo.getSubscriptionId.overload().implementation =
  256. function () {
  257. const _subId = this.getSubscriptionId()
  258. if (!subId) {
  259. console.log(_subId)
  260. return _subId
  261. }
  262. console.log(
  263. `spoof SubscriptionInfo.getSubscriptionId: ${_subId} -> ${subId}`
  264. )
  265. return parseInt(subId)
  266. }
  267. const TelephonyManager = Java.use("android.telephony.TelephonyManager")
  268. TelephonyManager.createForSubscriptionId.overload(
  269. "int"
  270. ).implementation = function (i) {
  271. console.log(`spoof TelephonyManager.createForSubscriptionId: ${i}`)
  272. return this
  273. }
  274. TelephonyManager.getLine1Number.overload().implementation =
  275. function () {
  276. const _number = this.getLine1Number()
  277. console.log(
  278. `spoof TelephonyManager.getLine1Number: ${_number} -> ${number}`
  279. )
  280. return number
  281. }
  282. TelephonyManager.getSimOperator.overload().implementation =
  283. function () {
  284. const _simOperator = this.getSimOperator()
  285. console.log(
  286. `spoof TelephonyManager.getSimOperator: ${_simOperator} -> ${simOperator}`
  287. )
  288. return simOperator
  289. }
  290. TelephonyManager.getNetworkOperator.overload().implementation =
  291. function () {
  292. const _networkOperator = this.getNetworkOperator()
  293. console.log(
  294. `spoof TelephonyManager.getNetworkOperator: ${_networkOperator} -> ${networkOperator}`
  295. )
  296. return networkOperator
  297. }
  298. TelephonyManager.getSimSerialNumber.overload().implementation =
  299. function () {
  300. const _simSerialNumber = this.getSimSerialNumber()
  301. console.log(
  302. `spoof TelephonyManager.getSimSerialNumber: ${_simSerialNumber} -> ${simSerialNumber}`
  303. )
  304. return simSerialNumber
  305. }
  306. TelephonyManager.getSubscriberId.overload().implementation =
  307. function () {
  308. const _imsi = this.getSubscriberId()
  309. console.log(
  310. `spoof TelephonyManager.getSubscriberId: ${_imsi} -> ${imsi}`
  311. )
  312. return imsi
  313. }
  314. TelephonyManager.getImei.overload().implementation = function () {
  315. const _imei = this.getImei()
  316. console.log(`spoof TelephonyManager.getImei: ${_imei} -> ${imei}`)
  317. return imei
  318. }
  319. TelephonyManager.getNetworkCountryIso.overload().implementation =
  320. function () {
  321. const _countryIso = this.getNetworkCountryIso()
  322. console.log(
  323. `spoof TelephonyManager.getNetworkCountryIso: ${_countryIso} -> ${countryIso}`
  324. )
  325. return countryIso
  326. }
  327. TelephonyManager.getSimCountryIso.overload().implementation =
  328. function () {
  329. const _countryIso = this.getSimCountryIso()
  330. console.log(
  331. `spoof TelephonyManager.getSimCountryIso: ${_countryIso} -> ${countryIso}`
  332. )
  333. return countryIso
  334. }
  335. TelephonyManager.getSubscriptionId.overload().implementation =
  336. function () {
  337. const _subId = this.getSubscriptionId()
  338. if (!subId) {
  339. console.log(_subId)
  340. return _subId
  341. }
  342. console.log(
  343. `spoof TelephonyManager.getSubscriptionId: ${_subId} -> ${subId}`
  344. )
  345. return parseInt(subId)
  346. }
  347. TelephonyManager.getSimState.overload().implementation = function () {
  348. const _simState = this.getSimState()
  349. console.log(`spoof TelephonyManager.getSimState: ${_simState} -> 5`)
  350. return 5
  351. }
  352. const PhoneNumberVerification = Java.use(
  353. "com.google.android.gms.constellation.PhoneNumberVerification"
  354. )
  355. PhoneNumberVerification.$init.overload(
  356. "java.lang.String",
  357. "long",
  358. "int",
  359. "int",
  360. "java.lang.String",
  361. "android.os.Bundle",
  362. "int",
  363. "long"
  364. ).implementation = function (str, l, i, i2, str2, bundle, i3, l2) {
  365. console.log("PhoneNumberVerification.$init")
  366. console.log(
  367. `str: ${str}, l: ${l}, i: ${i}, i2: ${i2}, str2: ${str2}, i3: ${i3}, l2: ${l2}`
  368. )
  369. // print bundle
  370. if (bundle) {
  371. const keySet = bundle.keySet().toArray()
  372. for (let i = 0; i < keySet.length; i++) {
  373. const key = keySet[i]
  374. console.log(`key: ${key}, value: ${bundle.get(key)}`)
  375. }
  376. }
  377. return this.$init(str, l, i, i2, str2, bundle, i3, l2)
  378. }
  379. // const aays = Java.use("aays")
  380. // aays.d.overload("int", "boolean").implementation = function (i, z) {
  381. // console.log("aays.d", i, z, Object.keys(this.f.value))
  382. // return number
  383. // }
  384. const SetAsterismConsentRequest = Java.use(
  385. "com.google.android.gms.asterism.SetAsterismConsentRequest"
  386. )
  387. SetAsterismConsentRequest.$init.overload(
  388. "int",
  389. "int",
  390. "int",
  391. "[I",
  392. "java.lang.Long",
  393. "int",
  394. "android.os.Bundle",
  395. "int",
  396. "java.lang.String",
  397. "java.lang.String",
  398. "java.lang.String",
  399. "java.lang.String",
  400. "java.lang.String",
  401. "java.lang.String",
  402. "java.lang.String",
  403. "java.lang.String"
  404. ).implementation = function (
  405. i,
  406. i2,
  407. i3,
  408. iArr,
  409. l,
  410. i4,
  411. bundle,
  412. i5,
  413. str,
  414. str2,
  415. str3,
  416. str4,
  417. str5,
  418. str6,
  419. str7,
  420. str8
  421. ) {
  422. console.log(
  423. Java.use("android.util.Log").getStackTraceString(
  424. Java.use("java.lang.Throwable").$new()
  425. )
  426. )
  427. console.log("SetAsterismConsentRequest.$init")
  428. console.log(
  429. `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}`
  430. )
  431. // print bundle
  432. const keySet = bundle.keySet().toArray()
  433. for (let i = 0; i < keySet.length; i++) {
  434. const key = keySet[i]
  435. console.log(`key: ${key}, value: ${bundle.get(key)}`)
  436. }
  437. return this.$init(
  438. i,
  439. i2,
  440. i3,
  441. iArr,
  442. l,
  443. i4,
  444. bundle,
  445. i5,
  446. str,
  447. str2,
  448. str3,
  449. str4,
  450. str5,
  451. str6,
  452. str7,
  453. str8
  454. )
  455. }
  456. const SetAsterismConsentResponse = Java.use(
  457. "com.google.android.gms.asterism.SetAsterismConsentResponse"
  458. )
  459. SetAsterismConsentResponse.$init.overload(
  460. "int",
  461. "java.lang.String",
  462. "java.lang.String"
  463. ).implementation = function (i, str, str2) {
  464. console.log(
  465. Java.use("android.util.Log").getStackTraceString(
  466. Java.use("java.lang.Throwable").$new()
  467. )
  468. )
  469. console.log("SetAsterismConsentResponse.$init")
  470. console.log(`i: ${i}, str: ${str}, str2: ${str2}`)
  471. // return this.$init(
  472. // 1,
  473. // "c4q5zP5Ft4A:APA91bEASr50HwwOY789LSZrcHPT8aG_fT19xlelS35qgIJeC3UBYypAHmmL9IygzlphzTKKz0wCdiQwuoPZMJKvgKPmGi3_imdr1CY0s7fs8qa_LMgNDFfvWEnpTCReAYc7IjThhFQq",
  474. // "c4q5zP5Ft4A"
  475. // )
  476. return this.$init(i, str, str2)
  477. }
  478. // spoof sim to exist
  479. const bjsf = Java.use("bjsf")
  480. bjsf.s.overload("android.content.Context").implementation = function (
  481. c
  482. ) {
  483. console.log("bjsf.s spoof sim to exist")
  484. return true
  485. }
  486. })
  487. })