sendsms1.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. Java.perform(() => {
  2. Java.deoptimizeEverything()
  3. let found = false
  4. Java.choose('com.android.internal.telephony.SmsDispatchersController', {
  5. onMatch: function (instance) {
  6. if (found) {
  7. return
  8. }
  9. found = true
  10. const Intent = Java.use('android.content.Intent')
  11. const SubscriptionManager = Java.use('android.telephony.SubscriptionManager')
  12. const Base64 = Java.use('java.util.Base64')
  13. let subId = 0
  14. let slot = 0
  15. const subscriptionManager = SubscriptionManager.from(instance.mContext.value)
  16. for (let i = 0; i < subscriptionManager.getActiveSubscriptionInfoCountMax(); i++) {
  17. const subInfo = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(i)
  18. if (subInfo != null) {
  19. subId = subInfo.getSubscriptionId()
  20. slot = subInfo.getSimSlotIndex()
  21. break
  22. }
  23. }
  24. const Integer = Java.use('java.lang.Integer')
  25. subId = Integer.valueOf(subId + '')
  26. slot = Integer.valueOf(slot + '')
  27. const intent = Intent.$new()
  28. intent.putExtra('android.telephony.extra.SUBSCRIPTION_INDEX', subId)
  29. intent.putExtra('messageId', Java.use('java.lang.Long').parseLong('' + parseInt(Math.random() * 100000000)))
  30. const pdu = Base64.getDecoder().decode('{pduBase64}')
  31. const pdus = Java.array('[B', [pdu])
  32. intent.putExtra.overload('java.lang.String', 'java.io.Serializable').call(intent, 'pdus', pdus.$w)
  33. intent.putExtra('format', '3gpp')
  34. intent.putExtra('android.telephony.extra.SLOT_INDEX', slot)
  35. intent.putExtra('phone', slot)
  36. intent.putExtra('subscription', subId)
  37. // instance.mContext.value.sendBroadcast(intent)
  38. intent.setAction('android.provider.Telephony.SMS_RECEIVED')
  39. instance.mContext.value.sendBroadcast(intent)
  40. intent.setAction('android.provider.Telephony.SMS_DELIVER')
  41. instance.mContext.value.sendBroadcast(intent)
  42. console.log('OK')
  43. },
  44. onComplete: function () {}
  45. })
  46. })