Skip to content

Commit 636fdea

Browse files
committed
Improve callbacks file and enable more precise callback info by subclassing
1 parent 783924a commit 636fdea

File tree

3 files changed

+144
-12
lines changed

3 files changed

+144
-12
lines changed

soot-infoflow-android/AndroidCallbacks.txt

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,37 @@ android.accessibilityservice.AccessibilityButtonController$AccessibilityButtonCa
22
android.accessibilityservice.AccessibilityService$GestureResultCallback
33
android.accessibilityservice.AccessibilityService$MagnificationController$OnMagnificationChangedListener
44
android.accessibilityservice.AccessibilityService$SoftKeyboardController$OnShowModeChangedListener
5+
android.accessibilityservice.AccessibilityService$TakeScreenshotCallback
56
android.accessibilityservice.FingerprintGestureController$FingerprintGestureCallback
7+
android.accessibilityservice.TouchInteractionController$Callback
68
android.accounts.AccountManagerCallback
79
android.accounts.OnAccountsUpdateListener
810
android.animation.Animator$AnimatorListener
911
android.animation.Animator$AnimatorPauseListener
1012
android.animation.LayoutTransition$TransitionListener
1113
android.animation.TimeAnimator$TimeListener
1214
android.animation.ValueAnimator$AnimatorUpdateListener
15+
android.animation.ValueAnimator$DurationScaleChangeListener
1316
android.app.ActionBar$OnMenuVisibilityListener
1417
android.app.ActionBar$OnNavigationListener
1518
android.app.ActionBar$TabListener
19+
android.app.admin.DevicePolicyManager$InstallSystemUpdateCallback
20+
android.app.admin.DevicePolicyManager$OnClearApplicationUserDataListener
1621
android.app.AlarmManager$OnAlarmListener
1722
android.app.AppOpsManager$OnOpChangedListener
1823
android.app.Application$ActivityLifecycleCallbacks
1924
android.app.Application$OnProvideAssistDataListener
25+
android.app.AppOpsManager$OnOpActiveChangedListener
26+
android.app.AppOpsManager$OnOpChangedListener
27+
android.app.AppOpsManager$OnOpNotedCallback
28+
android.app.appsearch.BatchResultCallback
29+
android.app.appsearch.observer.ObserverCallback
2030
android.app.DatePickerDialog$OnDateSetListener
2131
android.app.FragmentBreadCrumbs$OnBreadCrumbClickListener
2232
android.app.FragmentHostCallback
2333
android.app.FragmentManager$OnBackStackChangedListener
2434
android.app.KeyguardManager$KeyguardDismissCallback
35+
android.app.KeyguardManager$KeyguardLockedStateListener
2536
android.app.KeyguardManager$OnKeyguardExitResult
2637
android.app.LoaderManager$LoaderCallbacks
2738
android.app.PendingIntent$OnFinished
@@ -34,6 +45,7 @@ android.app.UiAutomation$OnAccessibilityEventListener
3445
android.app.WallpaperManager$OnColorsChangedListener
3546
android.app.admin.DevicePolicyManager$OnClearApplicationUserDataListener
3647
android.app.usage.NetworkStatsManager$UsageCallback
48+
android.app.WallpaperManager$OnColorsChangedListener
3749
android.bluetooth.BluetoothAdapter$LeScanCallback
3850
android.bluetooth.BluetoothGattCallback
3951
android.bluetooth.BluetoothGattServerCallback
@@ -60,6 +72,8 @@ android.content.SharedPreferences$OnSharedPreferenceChangeListener
6072
android.content.SyncStatusObserver
6173
android.content.pm.LauncherApps$Callback
6274
android.content.pm.PackageInstaller$SessionCallback
75+
android.content.pm.PackageManager$OnChecksumsReadyListener
76+
android.content.SharedPreferences$OnSharedPreferenceChangeListener
6377
android.database.sqlite.SQLiteTransactionListener
6478
android.drm.DrmManagerClient$OnErrorListener
6579
android.drm.DrmManagerClient$OnEventListener
@@ -73,6 +87,10 @@ android.graphics.SurfaceTexture$OnFrameAvailableListener
7387
android.graphics.drawable.Animatable2$AnimationCallback
7488
android.graphics.drawable.Drawable$Callback
7589
android.graphics.drawable.Icon$OnDrawableLoadedListener
90+
android.graphics.ImageDecoder$OnHeaderDecodedListener
91+
android.graphics.ImageDecoder$OnPartialImageListener
92+
android.graphics.SurfaceTexture$OnFrameAvailableListener
93+
android.hardware.biometrics.BiometricPrompt$AuthenticationCallback
7694
android.hardware.Camera$AutoFocusCallback
7795
android.hardware.Camera$AutoFocusMoveCallback
7896
android.hardware.Camera$ErrorCallback
@@ -90,13 +108,23 @@ android.hardware.biometrics.BiometricPrompt$AuthenticationCallback
90108
android.hardware.camera2.CameraCaptureSession$CaptureCallback
91109
android.hardware.camera2.CameraCaptureSession$StateCallback
92110
android.hardware.camera2.CameraDevice$StateCallback
111+
android.hardware.camera2.CameraExtensionSession$ExtensionCaptureCallback
112+
android.hardware.camera2.CameraExtensionSession$StateCallback
93113
android.hardware.camera2.CameraManager$AvailabilityCallback
94114
android.hardware.camera2.CameraManager$TorchCallback
115+
android.hardware.camera2.CameraOfflineSession$CameraOfflineSessionCallback
95116
android.hardware.display.DisplayManager$DisplayListener
96117
android.hardware.display.VirtualDisplay$Callback
97118
android.hardware.fingerprint.FingerprintManager$AuthenticationCallback
98119
android.hardware.input.InputManager$InputDeviceListener
120+
android.hardware.SensorEventCallback
121+
android.hardware.SensorEventListener
122+
android.hardware.SensorListener
123+
android.hardware.SensorManager$DynamicSensorCallback
124+
android.hardware.TriggerEventListener
99125
android.inputmethodservice.KeyboardView$OnKeyboardActionListener
126+
android.location.Geocoder$GeocodeListener
127+
android.location.GnssAntennaInfo$Listener
100128
android.location.GnssMeasurementsEvent$Callback
101129
android.location.GnssNavigationMessage$Callback
102130
android.location.GnssStatus$Callback
@@ -105,23 +133,42 @@ android.location.GpsStatus$NmeaListener
105133
android.location.LocationListener
106134
android.location.OnNmeaMessageListener
107135
android.media.AudioDeviceCallback
136+
android.media.audiofx.AudioEffect$OnControlStatusChangeListener
137+
android.media.audiofx.AudioEffect$OnEnableStatusChangeListener
138+
android.media.audiofx.BassBoost$OnParameterChangeListener
139+
android.media.audiofx.EnvironmentalReverb$OnParameterChangeListener
140+
android.media.audiofx.Equalizer$OnParameterChangeListener
141+
android.media.audiofx.PresetReverb$OnParameterChangeListener
142+
android.media.audiofx.Virtualizer$OnParameterChangeListener
143+
android.media.audiofx.Visualizer$OnDataCaptureListener
108144
android.media.AudioManager$AudioPlaybackCallback
109145
android.media.AudioManager$AudioRecordingCallback
110146
android.media.AudioManager$OnAudioFocusChangeListener
147+
android.media.AudioManager$OnCommunicationDeviceChangedListener
148+
android.media.AudioManager$OnModeChangedListener
111149
android.media.AudioRecord$OnRecordPositionUpdateListener
112150
android.media.AudioRecord$OnRoutingChangedListener
113151
android.media.AudioRouting$OnRoutingChangedListener
152+
android.media.AudioTrack$OnCodecFormatChangedListener
114153
android.media.AudioTrack$OnPlaybackPositionUpdateListener
115154
android.media.AudioTrack$OnRoutingChangedListener
155+
android.media.AudioTrack$StreamEventCallback
156+
android.media.browse.MediaBrowser$ConnectionCallback
157+
android.media.browse.MediaBrowser$ItemCallback
158+
android.media.browse.MediaBrowser$SubscriptionCallback
159+
android.media.effect.EffectUpdateListener
116160
android.media.ImageReader$OnImageAvailableListener
117161
android.media.ImageWriter$OnImageReleasedListener
118162
android.media.JetPlayer$OnJetEventListener
119163
android.media.MediaCas$EventListener
120164
android.media.MediaCodec$Callback
165+
android.media.MediaCodec$OnFirstTunnelFrameReadyListener
121166
android.media.MediaCodec$OnFrameRenderedListener
167+
android.media.MediaController2$ControllerCallback
122168
android.media.MediaDrm$OnEventListener
123169
android.media.MediaDrm$OnExpirationUpdateListener
124170
android.media.MediaDrm$OnKeyStatusChangeListener
171+
android.media.MediaDrm$OnSessionLostStateListener
125172
android.media.MediaPlayer$OnBufferingUpdateListener
126173
android.media.MediaPlayer$OnCompletionListener
127174
android.media.MediaPlayer$OnDrmInfoListener
@@ -140,10 +187,18 @@ android.media.MediaRecorder$OnInfoListener
140187
android.media.MediaRouter$Callback
141188
android.media.MediaRouter$SimpleCallback
142189
android.media.MediaRouter$VolumeCallback
190+
android.media.MediaRouter2$ControllerCallback
191+
android.media.MediaRouter2$OnGetControllerHintsListener
192+
android.media.MediaRouter2$RouteCallback
193+
android.media.MediaRouter2$TransferCallback
143194
android.media.MediaScannerConnection$MediaScannerConnectionClient
144195
android.media.MediaScannerConnection$OnScanCompletedListener
196+
android.media.MediaSession2$SessionCallback
145197
android.media.MediaSync$Callback
146198
android.media.MediaSync$OnErrorListener
199+
android.media.midi.MidiManager$DeviceCallback
200+
android.media.midi.MidiManager$OnDeviceOpenedListener
201+
android.media.projection.MediaProjection$Callback
147202
android.media.RemoteControlClient$OnGetPlaybackPositionListener
148203
android.media.RemoteControlClient$OnMetadataUpdateListener
149204
android.media.RemoteControlClient$OnPlaybackPositionUpdateListener
@@ -168,13 +223,25 @@ android.media.projection.MediaProjection$Callback
168223
android.media.session.MediaController$Callback
169224
android.media.session.MediaSession$Callback
170225
android.media.session.MediaSessionManager$OnActiveSessionsChangedListener
226+
android.media.session.MediaSessionManager$OnMediaKeyEventSessionChangedListener
227+
android.media.session.MediaSessionManager$OnSession2TokensChangedListener
228+
android.media.SoundPool$OnLoadCompleteListener
229+
android.media.Spatializer$OnHeadTrackerAvailableListener
230+
android.media.Spatializer$OnSpatializerStateChangedListener
231+
android.media.tv.interactive.TvInteractiveAppManager$TvInteractiveAppCallback
232+
android.media.tv.interactive.TvInteractiveAppView$OnUnhandledInputEventListener
233+
android.media.tv.interactive.TvInteractiveAppView$TvInteractiveAppCallback
171234
android.media.tv.TvInputManager$TvInputCallback
172235
android.media.tv.TvRecordingClient$RecordingCallback
173236
android.media.tv.TvView$OnUnhandledInputEventListener
174237
android.media.tv.TvView$TimeShiftPositionCallback
175238
android.media.tv.TvView$TvInputCallback
239+
android.net.ConnectivityDiagnosticsManager$ConnectivityDiagnosticsCallback
176240
android.net.ConnectivityManager$NetworkCallback
177241
android.net.ConnectivityManager$OnNetworkActiveListener
242+
android.net.DnsResolver$Callback
243+
android.net.ipsec.ike.ChildSessionCallback
244+
android.net.ipsec.ike.IkeSessionCallback
178245
android.net.nsd.NsdManager$DiscoveryListener
179246
android.net.nsd.NsdManager$RegistrationListener
180247
android.net.nsd.NsdManager$ResolveListener
@@ -186,29 +253,47 @@ android.net.wifi.WifiManager$WpsCallback
186253
android.net.wifi.aware.AttachCallback
187254
android.net.wifi.aware.DiscoverySessionCallback
188255
android.net.wifi.aware.IdentityChangedListener
256+
android.net.wifi.EasyConnectStatusCallback
189257
android.net.wifi.p2p.WifiP2pManager$ActionListener
190258
android.net.wifi.p2p.WifiP2pManager$ChannelListener
191259
android.net.wifi.p2p.WifiP2pManager$ConnectionInfoListener
260+
android.net.wifi.p2p.WifiP2pManager$DeviceInfoListener
261+
android.net.wifi.p2p.WifiP2pManager$DiscoveryStateListener
192262
android.net.wifi.p2p.WifiP2pManager$DnsSdServiceResponseListener
193263
android.net.wifi.p2p.WifiP2pManager$DnsSdTxtRecordListener
264+
android.net.wifi.p2p.WifiP2pManager$ExternalApproverRequestListener
194265
android.net.wifi.p2p.WifiP2pManager$GroupInfoListener
266+
android.net.wifi.p2p.WifiP2pManager$NetworkInfoListener
267+
android.net.wifi.p2p.WifiP2pManager$P2pStateListener
195268
android.net.wifi.p2p.WifiP2pManager$PeerListListener
196269
android.net.wifi.p2p.WifiP2pManager$ServiceResponseListener
197270
android.net.wifi.p2p.WifiP2pManager$UpnpServiceResponseListener
198271
android.net.wifi.rtt.RangingResultCallback
272+
android.net.wifi.WifiManager$LocalOnlyHotspotCallback
273+
android.net.wifi.WifiManager$ScanResultsCallback
274+
android.net.wifi.WifiManager$SubsystemRestartTrackingCallback
275+
android.net.wifi.WifiManager$SuggestionConnectionStatusListener
276+
android.net.wifi.WifiManager$SuggestionUserApprovalStatusListener
277+
android.net.wifi.WifiManager$WpsCallback
199278
android.nfc.NfcAdapter$CreateBeamUrisCallback
200279
android.nfc.NfcAdapter$CreateNdefMessageCallback
201280
android.nfc.NfcAdapter$OnNdefPushCompleteCallback
202281
android.nfc.NfcAdapter$OnTagRemovedListener
203282
android.nfc.NfcAdapter$ReaderCallback
283+
android.os.BugreportManager$BugreportCallback
204284
android.os.CancellationSignal$OnCancelListener
285+
android.os.FileUtils$ProgressListener
205286
android.os.Handler$Callback
206287
android.os.IBinder$DeathRecipient
207288
android.os.MessageQueue$IdleHandler
208289
android.os.MessageQueue$OnFileDescriptorEventListener
209290
android.os.ParcelFileDescriptor$OnCloseListener
291+
android.os.PowerManager$OnThermalStatusChangedListener
292+
android.os.PowerManager$WakeLockStateListener
210293
android.os.ProxyFileDescriptorCallback
211294
android.os.RecoverySystem$ProgressListener
295+
android.os.storage.OnObbStateChangeListener
296+
android.os.storage.StorageManager$StorageVolumeCallback
212297
android.os.StrictMode$OnThreadViolationListener
213298
android.os.StrictMode$OnVmViolationListener
214299
android.os.storage.OnObbStateChangeListener
@@ -221,6 +306,7 @@ android.preference.PreferenceManager$OnActivityStopListener
221306
android.print.PrintDocumentAdapter$LayoutResultCallback
222307
android.print.PrintDocumentAdapter$WriteResultCallback
223308
android.printservice.CustomPrinterIconCallback
309+
android.provider.CloudMediaProvider$CloudMediaSurfaceStateChangedCallback
224310
android.provider.FontsContract$FontRequestCallback
225311
android.renderscript.Allocation$OnBufferAvailableListener
226312
android.sax.ElementListener
@@ -233,10 +319,13 @@ android.security.ConfirmationCallback
233319
android.security.KeyChainAliasCallback
234320
android.service.autofill.FillCallback
235321
android.service.autofill.SaveCallback
322+
android.service.autofill.SavedDatasetsInfoCallback
236323
android.service.carrier.CarrierMessagingService$ResultCallback
237324
android.service.voice.AlwaysOnHotwordDetector$Callback
238325
android.speech.RecognitionListener
239326
android.speech.RecognitionService$Callback
327+
android.speech.RecognitionService$SupportCallback
328+
android.speech.RecognitionSupportCallback
240329
android.speech.tts.SynthesisCallback
241330
android.speech.tts.TextToSpeech$OnInitListener
242331
android.speech.tts.TextToSpeech$OnUtteranceCompletedListener
@@ -264,7 +353,9 @@ android.telephony.TelephonyManager$UssdResponseCallback
264353
android.telephony.TelephonyScanManager$NetworkScanCallback
265354
android.telephony.mbms.DownloadProgressListener
266355
android.telephony.mbms.DownloadStatusListener
356+
android.telephony.mbms.GroupCallCallback
267357
android.telephony.mbms.MbmsDownloadSessionCallback
358+
android.telephony.mbms.MbmsGroupCallSessionCallback
268359
android.telephony.mbms.MbmsStreamingSessionCallback
269360
android.telephony.mbms.StreamingServiceCallback
270361
android.text.TextUtils$EllipsizeCallback
@@ -281,27 +372,45 @@ android.text.method.NumberKeyListener
281372
android.text.method.QwertyKeyListener
282373
android.text.method.TextKeyListener
283374
android.text.method.TimeKeyListener
375+
android.text.TextUtils$EllipsizeCallback
284376
android.transition.Transition$EpicenterCallback
285377
android.transition.Transition$TransitionListener
378+
android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener
379+
android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
380+
android.view.accessibility.AccessibilityManager$AudioDescriptionRequestedChangeListener
381+
android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener
382+
android.view.accessibility.CaptioningManager$CaptioningChangeListener
286383
android.view.ActionMode$Callback
287384
android.view.ActionProvider$VisibilityListener
385+
android.view.animation.Animation$AnimationListener
386+
android.view.AttachedSurfaceControl$OnBufferTransformHintChangedListener
387+
android.view.autofill.AutofillManager$AutofillCallback
288388
android.view.Choreographer$FrameCallback
389+
android.view.Choreographer$VsyncCallback
390+
android.view.displayhash.DisplayHashResultCallback
289391
android.view.GestureDetector$OnContextClickListener
290392
android.view.GestureDetector$OnDoubleTapListener
291393
android.view.GestureDetector$OnGestureListener
292394
android.view.GestureDetector$SimpleOnGestureListener
395+
android.view.inputmethod.InputMethod$SessionCallback
396+
android.view.inputmethod.InputMethodSession$EventCallback
293397
android.view.InputQueue$Callback
294398
android.view.KeyEvent$Callback
295399
android.view.MenuItem$OnActionExpandListener
296400
android.view.MenuItem$OnMenuItemClickListener
401+
android.view.OnReceiveContentListener
297402
android.view.OrientationEventListener
298403
android.view.OrientationListener
299404
android.view.PixelCopy$OnPixelCopyFinishedListener
300405
android.view.ScaleGestureDetector$OnScaleGestureListener
301406
android.view.ScaleGestureDetector$SimpleOnScaleGestureListener
407+
android.view.ScrollCaptureCallback
408+
android.view.SurfaceControl$TransactionCommittedListener
302409
android.view.SurfaceHolder$Callback
303410
android.view.SurfaceHolder$Callback2
304411
android.view.TextureView$SurfaceTextureListener
412+
android.view.translation.UiTranslationStateCallback
413+
android.view.translation.ViewTranslationCallback
305414
android.view.View$OnApplyWindowInsetsListener
306415
android.view.View$OnAttachStateChangeListener
307416
android.view.View$OnCapturedPointerListener
@@ -332,6 +441,9 @@ android.view.ViewTreeObserver$OnWindowFocusChangeListener
332441
android.view.Window$Callback
333442
android.view.Window$OnFrameMetricsAvailableListener
334443
android.view.Window$OnRestrictedCaptionAreaChangedListener
444+
android.view.WindowInsetsAnimation$Callback
445+
android.view.WindowInsetsAnimationControlListener
446+
android.view.WindowInsetsController$OnControllableInsetsChangedListener
335447
android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
336448
android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener
337449
android.view.accessibility.CaptioningManager$CaptioningChangeListener
@@ -368,6 +480,7 @@ android.widget.ExpandableListView$OnGroupClickListener
368480
android.widget.ExpandableListView$OnGroupCollapseListener
369481
android.widget.ExpandableListView$OnGroupExpandListener
370482
android.widget.Filter$FilterListener
483+
android.widget.inline.InlineContentView$SurfaceControlCallback
371484
android.widget.NumberPicker$OnDismissListener
372485
android.widget.NumberPicker$OnScrollListener
373486
android.widget.NumberPicker$OnValueChangeListener
@@ -387,8 +500,11 @@ android.widget.SlidingDrawer$OnDrawerScrollListener
387500
android.widget.TabHost$OnTabChangeListener
388501
android.widget.TextView$OnEditorActionListener
389502
android.widget.TimePicker$OnTimeChangedListener
503+
android.widget.Toast$Callback
390504
android.widget.Toolbar$OnMenuItemClickListener
391505
android.widget.ZoomButtonsController$OnZoomListener
506+
android.window.OnBackInvokedCallback
507+
android.window.SplashScreen$OnExitAnimationListener
392508
com.android.volley.Response$ErrorListener
393509
com.android.volley.Response$Listener
394510
java.beans.PropertyChangeListener

soot-infoflow-android/src/soot/jimple/infoflow/android/SetupApplication.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,8 +728,8 @@ private void calculateCallbackMethods(LayoutFileParser lfp, SootClass component)
728728
// filter out callbacks even if the respective component is only
729729
// analyzed later.
730730
AbstractCallbackAnalyzer jimpleClass = callbackClasses == null
731-
? new DefaultCallbackAnalyzer(config, entryPointClasses, callbackMethods, callbackFile)
732-
: new DefaultCallbackAnalyzer(config, entryPointClasses, callbackMethods, callbackClasses);
731+
? createCallbackAnalyzerFromFile(config, entryPointClasses, callbackMethods, callbackFile)
732+
: createCallbackAnalyzerFromClassesSet(config, entryPointClasses, callbackMethods, callbackClasses);
733733
if (valueProvider != null)
734734
jimpleClass.setValueProvider(valueProvider);
735735
jimpleClass.addCallbackFilter(new AlienHostComponentFilter(entrypoints));
@@ -909,6 +909,18 @@ else if (!fragmentFilter.accepts(pair.getO1(), pair.getO2().getTargetMethod().ge
909909
}
910910
}
911911

912+
protected AbstractCallbackAnalyzer createCallbackAnalyzerFromClassesSet(InfoflowAndroidConfiguration config,
913+
Set<SootClass> entryPointClasses, MultiMap<SootClass, AndroidCallbackDefinition> callbackMethods,
914+
Set<String> callbackClasses) throws IOException {
915+
return new DefaultCallbackAnalyzer(config, entryPointClasses, callbackMethods, callbackClasses);
916+
}
917+
918+
protected AbstractCallbackAnalyzer createCallbackAnalyzerFromFile(InfoflowAndroidConfiguration config,
919+
Set<SootClass> entryPointClasses, MultiMap<SootClass, AndroidCallbackDefinition> callbackMethods,
920+
String callbackFile) throws IOException {
921+
return new DefaultCallbackAnalyzer(config, entryPointClasses, callbackMethods, callbackFile);
922+
}
923+
912924
/**
913925
* Creates the memory watcher for aborting the callback analysis in case it runs
914926
* out of memory. This method also starts the watchdog thread. Derived classes

0 commit comments

Comments
 (0)