# Smali Patterns Catalog Complete reference of smali patterns for SDK neutralization. Each section shows the target class, methods, and the exact stub code injected. ## Ad SDK Patterns ### AdMob / Google Mobile Ads **Class**: `Lcom/google/android/gms/ads/MobileAds;` ```smali # Original: public static void initialize(Context, OnInitializationCompleteListener) .method public static initialize(Landroid/content/Context;Lcom/google/android/gms/ads/initialization/OnInitializationCompleteListener;)V .registers 1 return-void .end method # Original: public static void setRequestConfiguration(RequestConfiguration) .method public static setRequestConfiguration(Lcom/google/android/gms/ads/RequestConfiguration;)V .registers 1 return-void .end method ``` **Class**: `Lcom/google/android/gms/ads/interstitial/InterstitialAd;` ```smali # Original: public static void load(Context, String, AdRequest, InterstitialAdLoadCallback) .method public static load(Landroid/content/Context;Ljava/lang/String;Lcom/google/android/gms/ads/AdRequest;Lcom/google/android/gms/ads/interstitial/InterstitialAdLoadCallback;)V .registers 1 return-void .end method ``` **Class**: `Lcom/google/android/gms/ads/rewarded/RewardedAd;` ```smali # Original: public static void load(Context, String, AdRequest, RewardedAdLoadCallback) .method public static load(Landroid/content/Context;Ljava/lang/String;Lcom/google/android/gms/ads/AdRequest;Lcom/google/android/gms/ads/rewarded/RewardedAdLoadCallback;)V .registers 1 return-void .end method ``` **Class**: `Lcom/google/android/gms/ads/AdView;` ```smali # Original: public void loadAd(AdRequest) .method public loadAd(Lcom/google/android/gms/ads/AdRequest;)V .registers 1 return-void .end method ``` ### Unity Ads **Class**: `Lcom/unity3d/ads/UnityAds;` ```smali # Original: public static void initialize(Context, String, boolean, IUnityAdsInitializationListener) .method public static initialize(Landroid/content/Context;Ljava/lang/String;ZLcom/unity3d/ads/IUnityAdsInitializationListener;)V .registers 1 return-void .end method # Original: public static void load(String, IUnityAdsLoadListener) .method public static load(Ljava/lang/String;Lcom/unity3d/ads/IUnityAdsLoadListener;)V .registers 1 return-void .end method # Original: public static void show(Activity, String, IUnityAdsShowListener) .method public static show(Landroid/app/Activity;Ljava/lang/String;Lcom/unity3d/ads/IUnityAdsShowListener;)V .registers 1 return-void .end method ``` ### IronSource / LevelPlay **Class**: `Lcom/ironsource/mediationsdk/IronSource;` ```smali .method public static init(Landroid/app/Activity;Ljava/lang/String;)V .registers 1 return-void .end method .method public static loadInterstitial()V .registers 1 return-void .end method .method public static showInterstitial()V .registers 1 return-void .end method .method public static showRewardedVideo()V .registers 1 return-void .end method .method public static loadBanner(Landroid/app/Activity;Lcom/ironsource/mediationsdk/ISBannerSize;)V .registers 1 return-void .end method ``` ### AppLovin / MAX **Class**: `Lcom/applovin/sdk/AppLovinSdk;` ```smali # Original: public static AppLovinSdk getInstance(Context) — returns null .method public static getInstance(Landroid/content/Context;)Lcom/applovin/sdk/AppLovinSdk; .registers 1 const/4 v0, 0x0 return-object v0 .end method # Original: public void initializeSdk() .method public initializeSdk()V .registers 1 return-void .end method ``` ### Meta Audience Network **Class**: `Lcom/facebook/ads/AudienceNetworkAds;` ```smali .method public static initialize(Landroid/content/Context;)V .registers 1 return-void .end method ``` ### Vungle / Liftoff **Class**: `Lcom/vungle/warren/Vungle;` ```smali .method public static init(Ljava/lang/String;Landroid/content/Context;Lcom/vungle/warren/InitCallback;)V .registers 1 return-void .end method .method public static loadAd(Ljava/lang/String;Lcom/vungle/warren/LoadAdCallback;)V .registers 1 return-void .end method .method public static playAd(Ljava/lang/String;Lcom/vungle/warren/model/AdConfig;Lcom/vungle/warren/PlayAdCallback;)V .registers 1 return-void .end method ``` ### InMobi **Class**: `Lcom/inmobi/sdk/InMobiSdk;` ```smali .method public static init(Landroid/content/Context;Ljava/lang/String;)V .registers 1 return-void .end method ``` ### Chartboost **Class**: `Lcom/chartboost/sdk/Chartboost;` ```smali .method public static startWithAppId(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V .registers 1 return-void .end method .method public static showInterstitial(Ljava/lang/String;)V .registers 1 return-void .end method .method public static showRewardedVideo(Ljava/lang/String;)V .registers 1 return-void .end method .method public static cacheInterstitial(Ljava/lang/String;)V .registers 1 return-void .end method ``` ### Pangle / TikTok **Class**: `Lcom/bytedance/sdk/openadsdk/TTAdSdk;` ```smali .method public static init(Landroid/content/Context;Lcom/bytedance/sdk/openadsdk/TTAdConfig;)V .registers 1 return-void .end method ``` **Class**: `Lcom/pgl/sys/ces/PAGSdk;` ```smali .method public static init(Lcom/pgl/sys/ces/PAGConfig;)V .registers 1 return-void .end method ``` ### Mintegral **Class**: `Lcom/mbridge/msdk/MBridgeSDKFactory;` ```smali # Returns null instead of SDK instance .method public static getMBridgeSDK()Lcom/mbridge/msdk/MBridgeSDK; .registers 1 const/4 v0, 0x0 return-object v0 .end method ``` ## Tracker SDK Patterns ### Firebase Analytics **Class**: `Lcom/google/firebase/analytics/FirebaseAnalytics;` ```smali # Returns null — callers should null-check .method public static getInstance(Landroid/content/Context;)Lcom/google/firebase/analytics/FirebaseAnalytics; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public logEvent(Ljava/lang/String;Landroid/os/Bundle;)V .registers 1 return-void .end method .method public setUserId(Ljava/lang/String;)V .registers 1 return-void .end method .method public setUserProperty(Ljava/lang/String;Ljava/lang/String;)V .registers 1 return-void .end method .method public setAnalyticsCollectionEnabled(Z)V .registers 1 return-void .end method ``` ### Adjust **Class**: `Lcom/adjust/sdk/Adjust;` ```smali .method public static onCreate(Lcom/adjust/sdk/AdjustConfig;)V .registers 1 return-void .end method .method public static trackEvent(Lcom/adjust/sdk/AdjustEvent;)V .registers 1 return-void .end method .method public static setEnabled(Z)V .registers 1 return-void .end method .method public static addSessionCallbackParameter(Ljava/lang/String;Ljava/lang/String;)V .registers 1 return-void .end method ``` ### AppsFlyer **Class**: `Lcom/appsflyer/AppsFlyerLib;` ```smali # Returns null .method public static getInstance()Lcom/appsflyer/AppsFlyerLib; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public init(Ljava/lang/String;Lcom/appsflyer/AppsFlyerConversionListener;Landroid/content/Context;)Lcom/appsflyer/AppsFlyerLib; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public start(Landroid/content/Context;)V .registers 1 return-void .end method .method public logEvent(Landroid/content/Context;Ljava/lang/String;Ljava/util/Map;)V .registers 1 return-void .end method .method public setCustomerUserId(Ljava/lang/String;)V .registers 1 return-void .end method ``` ### Mixpanel **Class**: `Lcom/mixpanel/android/mpmetrics/MixpanelAPI;` ```smali # Returns null .method public static getInstance(Landroid/content/Context;Ljava/lang/String;)Lcom/mixpanel/android/mpmetrics/MixpanelAPI; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public track(Ljava/lang/String;)V .registers 1 return-void .end method .method public identify(Ljava/lang/String;)V .registers 1 return-void .end method .method public timeEvent(Ljava/lang/String;)V .registers 1 return-void .end method .method public registerSuperProperties(Lorg/json/JSONObject;)V .registers 1 return-void .end method ``` ### Amplitude **Class**: `Lcom/amplitude/api/AmplitudeClient;` ```smali # Returns null .method public static getInstance()Lcom/amplitude/api/AmplitudeClient; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public initialize(Landroid/content/Context;Ljava/lang/String;)Lcom/amplitude/api/AmplitudeClient; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public logEvent(Ljava/lang/String;)V .registers 1 return-void .end method .method public setUserId(Ljava/lang/String;)V .registers 1 return-void .end method .method public setUserProperties(Lorg/json/JSONObject;)V .registers 1 return-void .end method ``` ### Segment **Class**: `Lcom/segment/analytics/Analytics;` ```smali # Returns null .method public static with(Landroid/content/Context;)Lcom/segment/analytics/Analytics; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public track(Ljava/lang/String;)V .registers 1 return-void .end method .method public identify(Ljava/lang/String;)V .registers 1 return-void .end method .method public screen(Ljava/lang/String;)V .registers 1 return-void .end method .method public group(Ljava/lang/String;)V .registers 1 return-void .end method .method public alias(Ljava/lang/String;)V .registers 1 return-void .end method ``` ### Braze **Class**: `Lcom/braze/Braze;` ```smali .method public static configure(Landroid/content/Context;Lcom/braze/configuration/BrazeConfig;)Z .registers 1 const/4 v0, 0x0 return v0 .end method .method public logCustomEvent(Ljava/lang/String;)V .registers 1 return-void .end method .method public changeUser(Ljava/lang/String;)V .registers 1 return-void .end method .method public logPurchase(Ljava/lang/String;Ljava/lang/String;Ljava/math/BigDecimal;)V .registers 1 return-void .end method ``` ### CleverTap **Class**: `Lcom/clevertap/android/sdk/CleverTapAPI;` ```smali # Returns null .method public static getDefaultInstance(Landroid/content/Context;)Lcom/clevertap/android/sdk/CleverTapAPI; .registers 1 const/4 v0, 0x0 return-object v0 .end method .method public pushEvent(Ljava/lang/String;)V .registers 1 return-void .end method .method public onUserLogin(Ljava/util/Map;)V .registers 1 return-void .end method .method public pushProfile(Ljava/util/Map;)V .registers 1 return-void .end method .method public recordEvent(Ljava/lang/String;)V .registers 1 return-void .end method ``` ### Flurry **Class**: `Lcom/flurry/android/FlurryAgent;` ```smali .method public static logEvent(Ljava/lang/String;)I .registers 1 const/4 v0, 0x0 return v0 .end method .method public static setUserId(Ljava/lang/String;)V .registers 1 return-void .end method .method public static onStartSession(Landroid/content/Context;)V .registers 1 return-void .end method .method public static onEndSession(Landroid/content/Context;)V .registers 1 return-void .end method ``` ## Manifest Disable Patterns ### Ad SDK Components ```xml ``` ### Tracker SDK Components ```xml ``` ## Grep Patterns for Smali Files Use these patterns with `grep -rn` on smali directories to find SDK methods: ```bash # AdMob initialization grep -rn 'Lcom/google/android/gms/ads/MobileAds;->initialize' smali/ # Firebase Analytics event logging grep -rn 'Lcom/google/firebase/analytics/FirebaseAnalytics;->logEvent' smali/ # All tracker init methods grep -rn -E '(FirebaseAnalytics;->getInstance|Adjust;->onCreate|AppsFlyerLib;->getInstance|MixpanelAPI;->getInstance|AmplitudeClient;->getInstance|Analytics;->with|Braze;->configure|CleverTapAPI;->getDefaultInstance|FlurryAgent;->onStartSession)' smali/ # All ad SDK init methods grep -rn -E '(MobileAds;->initialize|UnityAds;->initialize|IronSource;->init|AppLovinSdk;->getInstance|AudienceNetworkAds;->initialize|Vungle;->init|InMobiSdk;->init|Chartboost;->startWithAppId|TTAdSdk;->init|PAGSdk;->init|MBridgeSDKFactory;->getMBridgeSDK)' smali/ # Find invoke-static and invoke-virtual calls to SDK methods grep -rn 'invoke-\(static\|virtual\).*Lcom/google/android/gms/ads/' smali/ grep -rn 'invoke-\(static\|virtual\).*Lcom/google/firebase/analytics/' smali/ ``` ## Custom Target File Format For `--targets-file`, use one entry per line: ``` # Comment lines start with # # Format: smali_class_path:method_name # Custom tracker com/example/analytics/CustomTracker:init com/example/analytics/CustomTracker:track com/example/analytics/CustomTracker:setUser # Obfuscated class (identified via string analysis) a/b/c:a a/b/c:b ```