spoof_phone.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. class Log {
  2. static TAG = '[Phone]'
  3. static Debug = true
  4. static format(...msg) {
  5. let m = []
  6. for (let i = 0; i < msg.length; i++) {
  7. if (typeof msg[i] === 'object') {
  8. m.push(JSON.stringify(msg[i]))
  9. } else {
  10. m.push(msg[i])
  11. }
  12. }
  13. m = m.join(' ')
  14. return m
  15. }
  16. static i(...msg) {
  17. if (!this.Debug) return
  18. console.log(`\x1b[30m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  19. }
  20. static w(...msg) {
  21. console.log(`\x1b[33m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  22. }
  23. static e(...msg) {
  24. console.log(`\x1b[31m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  25. }
  26. static s(...msg) {
  27. console.log(`\x1b[32m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  28. }
  29. }
  30. function trace(tag) {
  31. Log.e((tag || '') + Java.use('android.util.Log').getStackTraceString(Java.use('java.lang.Throwable').$new()))
  32. }
  33. setImmediate(() => {
  34. Java.perform(function () {
  35. const SmsController = Java.use('com.android.internal.telephony.SmsController')
  36. Log.i('SmsController:', SmsController)
  37. SmsController.sendTextForSubscriber.overload(
  38. // int subId, String callingPackage,
  39. // String callingAttributionTag, String destAddr, String scAddr, String text,
  40. // PendingIntent sentIntent, PendingIntent deliveryIntent,
  41. // boolean persistMessageForNonDefaultSmsApp, long messageId
  42. 'int',
  43. 'java.lang.String',
  44. 'java.lang.String',
  45. 'java.lang.String',
  46. 'java.lang.String',
  47. 'java.lang.String',
  48. 'android.app.PendingIntent',
  49. 'android.app.PendingIntent',
  50. 'boolean',
  51. 'long'
  52. ).implementation = function (
  53. subId,
  54. callingPackage,
  55. callingAttributionTag,
  56. destAddr,
  57. scAddr,
  58. text,
  59. sentIntent,
  60. deliveryIntent,
  61. persistMessageForNonDefaultSmsApp,
  62. messageId
  63. ) {
  64. Log.i('sendTextForSubscriber', subId, callingPackage, callingAttributionTag, destAddr, scAddr, text)
  65. return this.sendTextForSubscriber(
  66. subId,
  67. callingPackage,
  68. callingAttributionTag,
  69. destAddr,
  70. scAddr,
  71. text,
  72. sentIntent,
  73. deliveryIntent,
  74. persistMessageForNonDefaultSmsApp,
  75. messageId
  76. )
  77. }
  78. const RcsFeatureConnection = Java.use('com.android.ims.RcsFeatureConnection')
  79. Log.i('RcsFeatureConnection:', RcsFeatureConnection)
  80. const RcsFeatureManager = Java.use('com.android.ims.RcsFeatureManager')
  81. Log.i('RcsFeatureManager:', RcsFeatureManager)
  82. const PhoneGlobals = Java.use('com.android.phone.PhoneGlobals')
  83. Log.i('PhoneGlobals:', PhoneGlobals)
  84. const RcsProvisioningMonitor = Java.use('com.android.phone.RcsProvisioningMonitor')
  85. Log.i('RcsProvisioningMonitor:', RcsProvisioningMonitor)
  86. RcsProvisioningMonitor.requestReconfig.overload('int').implementation = function (subId) {
  87. Log.i('requestReconfig', subId)
  88. return this.requestReconfig(subId)
  89. }
  90. })
  91. })