gms.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. function trace(tag) {
  2. Log.e((tag || '') + Java.use('android.util.Log').getStackTraceString(Java.use('java.lang.Throwable').$new()))
  3. }
  4. class Log {
  5. static TAG = '[GMS]'
  6. static Debug = false
  7. static format(...msg) {
  8. let m = []
  9. for (let i = 0; i < msg.length; i++) {
  10. if (typeof msg[i] === 'object') {
  11. m.push(msg[i] + '')
  12. } else {
  13. m.push(msg[i])
  14. }
  15. }
  16. m = m.join(' ')
  17. return m
  18. }
  19. static i(...msg) {
  20. if (!this.Debug) return
  21. console.log(`\x1b[30m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  22. }
  23. static w(...msg) {
  24. console.log(`\x1b[33m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  25. }
  26. static e(...msg) {
  27. console.log(`\x1b[31m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  28. }
  29. static s(...msg) {
  30. console.log(`\x1b[32m${this.TAG} ${this.format(...msg)}\x1b[0m`)
  31. }
  32. }
  33. Java.perform(function () {
  34. const aoks = Java.use('aoks')
  35. aoks.$init.overload('aokt', 'android.os.Handler').implementation = function (aokt, handler) {
  36. Log.i(`${this.a.value}`)
  37. return this.$init(aokt, handler)
  38. }
  39. aoks.d.overload('boolean', 'java.util.Map').implementation = function (b, map) {
  40. Log.e(`${map.keySet().toArray()}, ${this.a.value._f.value}`)
  41. // Log.e(`${map.get('UPI_FEATURES_ENABLED')}`)
  42. // Log.e(`${map.get('515039672404610')}`)
  43. // Java.cast(map.get('515039672404610'), Bundle).putString('IMSI', '515039672404610')
  44. return this.d(b, map)
  45. }
  46. const Reiceiver = Java.use('com.google.android.gms.constellation.util.OnSyncCompletedListener$Receiver')
  47. Reiceiver.onReceiveResult.overload('int', 'android.os.Bundle').implementation = function (i, bundle) {
  48. Log.e(`i=${i}, ${bundle}`)
  49. return this.onReceiveResult(i, bundle)
  50. }
  51. const aokt = Java.use('aokt')
  52. aokt.$init.overload(
  53. 'android.content.Context',
  54. 'aoli',
  55. 'com.google.android.gms.constellation.VerifyPhoneNumberRequest',
  56. 'java.lang.String',
  57. 'aoiy'
  58. ).implementation = function (context, aoli, request, str, aoiy) {
  59. Log.e(`${request.a.value} ${request.b.value}`)
  60. trace('[aokt]')
  61. return this.$init(context, aoli, request, str, aoiy)
  62. }
  63. aokt.c.overload(
  64. 'com.google.android.gms.constellation.VerifyPhoneNumberRequest',
  65. 'com.google.android.gms.constellation.VerifyPhoneNumberResponse',
  66. 'int'
  67. ).implementation = function (request, response, i) {
  68. Log.e(`${request.a.value} ${request.b.value}`)
  69. return this.c(request, response, i)
  70. }
  71. const BaseBundle = Java.use('android.os.BaseBundle')
  72. BaseBundle.getInt.overload('java.lang.String', 'int').implementation = function (key, i) {
  73. const value = this.getInt(key, i)
  74. // Log.e(`[BaseBundle]${key}, ${i} -> ${value}`)
  75. if (key == 'sim_slot_index') {
  76. Log.e(`[BaseBundle]sim_slot_index`)
  77. return 0
  78. }
  79. return this.getInt(key, i)
  80. }
  81. const PhoneNumberVerification = Java.use('com.google.android.gms.constellation.PhoneNumberVerification')
  82. PhoneNumberVerification.$init.overload(
  83. 'java.lang.String',
  84. 'long',
  85. 'int',
  86. 'int',
  87. 'java.lang.String',
  88. 'android.os.Bundle',
  89. 'int',
  90. 'long'
  91. ).implementation = function (str, j, i, i2, str2, bundle, i3, l) {
  92. Log.e(`PhoneNumberVerification.$init(str=${str}, j=${j}, i=${i}, i2=${i2}, str2=${str2}, i3=${i3}, l=${l}`)
  93. // print bundle
  94. const keySet = bundle.keySet().toArray()
  95. for (let i = 0; i < keySet.length; i++) {
  96. const key = keySet[i]
  97. Log.i(`PhoneNumberVerification(key: ${key}, value: ${bundle.get(key)})`)
  98. }
  99. return this.$init(str, j, i, i2, str2, bundle, i3, l)
  100. }
  101. const VerifyPhoneNumberRequest = Java.use('com.google.android.gms.constellation.VerifyPhoneNumberRequest')
  102. VerifyPhoneNumberRequest.$init.overload(
  103. //String str, long j, IdTokenRequest idTokenRequest, Bundle bundle, List list, boolean z, int i, List list2
  104. 'java.lang.String',
  105. 'long',
  106. 'com.google.android.gms.constellation.IdTokenRequest',
  107. 'android.os.Bundle',
  108. 'java.util.List',
  109. 'boolean',
  110. 'int',
  111. 'java.util.List'
  112. ).implementation = function (str, j, idTokenRequest, bundle, list, z, i, list2) {
  113. Log.e(`VerifyPhoneNumberRequest.$init(
  114. str=${str}, j=${j}, idTokenRequest=${idTokenRequest}, bundle=${bundle}, list=${list}, z=${z}, i=${i}, list2=${list2})`)
  115. // print bundle
  116. const keySet = bundle.keySet().toArray()
  117. for (let i = 0; i < keySet.length; i++) {
  118. const key = keySet[i]
  119. Log.i(`VerifyPhoneNumberRequest.Bundle(key=${key}, value=${bundle.get(key)})`)
  120. }
  121. return this.$init(str, j, idTokenRequest, bundle, list, z, i, list2)
  122. }
  123. const SetAsterismConsentRequest = Java.use('com.google.android.gms.asterism.SetAsterismConsentRequest')
  124. SetAsterismConsentRequest.$init.overload(
  125. 'int',
  126. 'int',
  127. 'int',
  128. '[I',
  129. 'java.lang.Long',
  130. 'int',
  131. 'android.os.Bundle',
  132. 'int',
  133. 'java.lang.String',
  134. 'java.lang.String',
  135. 'java.lang.String',
  136. 'java.lang.String',
  137. 'java.lang.String',
  138. 'java.lang.String',
  139. 'java.lang.String',
  140. 'java.lang.String',
  141. 'int'
  142. ).implementation = function (
  143. i,
  144. i2,
  145. i3,
  146. iArr,
  147. l,
  148. i4,
  149. bundle,
  150. i5,
  151. str,
  152. str2,
  153. str3,
  154. str4,
  155. str5,
  156. str6,
  157. str7,
  158. str8,
  159. i6
  160. ) {
  161. Log.i(
  162. `SetAsterismConsentRequest.$init(
  163. i=${i}, i2=${i2}, i3=${i3}, iArr=${iArr}, l=${l},
  164. i4=${i4}, bundle=${bundle}, i5=${i5}, str=${str},
  165. str2=${str2}, str3=${str3}, str4=${str4}, str5=${str5},
  166. str6=${str6}, str7=${str7}, str8=${str8}, i6=${i6})`
  167. )
  168. // print bundle
  169. const keySet = bundle.keySet().toArray()
  170. for (let i = 0; i < keySet.length; i++) {
  171. const key = keySet[i]
  172. Log.i(`SetAsterismConsentRequest.Bundle(key=${key}, value=${bundle.get(key)})`)
  173. }
  174. return this.$init(i, i2, i3, iArr, l, i4, bundle, i5, str, str2, str3, str4, str5, str6, str7, str8, i6)
  175. }
  176. const SetAsterismConsentResponse = Java.use('com.google.android.gms.asterism.SetAsterismConsentResponse')
  177. SetAsterismConsentResponse.$init.overload('int', 'java.lang.String', 'java.lang.String').implementation = function (
  178. i,
  179. str,
  180. str2
  181. ) {
  182. Log.i(`SetAsterismConsentResponse.$init(i=${i}, str=${str}, str2=${str2})`)
  183. return this.$init(i, str, str2)
  184. }
  185. const EventManager = Java.use('com.google.android.gms.constellation.EventManager')
  186. EventManager.onHandleIntent.overload('android.content.Intent').implementation = function (intent) {
  187. Log.i('EventManager.onHandleIntent(intent)')
  188. return this.onHandleIntent(intent)
  189. }
  190. })