APK逆向-添加統(tǒng)計(jì)和廣告

1.下載最新版的apktool的jar包:
https://ibotpeaches.github.io/Apktool/install/
https://bitbucket.org/iBotPeaches/apktool/downloads
(可配置apktool運(yùn)行環(huán)境,Mac os: 把下載的文件copy到/usr/local/bin目錄下,修改權(quán)限為可執(zhí)行chmod a+x apktool.jar apktool)
2.反編譯:java -jar apktool.jar d xxx.apk
3.重新打包:java -jar apktool_2.2.4.jar b xxx。(在xxx目錄dist目錄下生成重新打包的apk文件)
(修改包名重新打包,注意有些布局自定義屬性要更改對(duì)應(yīng)包名,不然打包通不過)
4.簽名:
生成簽名文件, keytool -genkey -keystore test.keystore-alias test -keyalg RSA -validity 10000
簽名 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore -signedjar signed.apk t.apk 'test'
(最后的'test'要跟生成簽名 -alias 后面的test保持一致的命名)
(上傳GP要求zipalign,命令:/Library/Android/sdk/build-tools/23.0.3/zipalign -v 4 test.apk zip.apk)
5.修改smali文件
注意.line 行號(hào)不能亂(只是追蹤堆棧有用),函數(shù)調(diào)用基類不能寫錯(cuò)(例如 Activity)
6.加入友盟統(tǒng)計(jì)
com 目錄下添加友盟反編譯文件夾<umeng>
Manifest中添加如下配置:

<meta-data android:value="XXXXXX" android:name="UMENG_APPKEY"></meta-data>
<meta-data android:value="test" android:name="UMENG_CHANNEL"/>

最好定義一個(gè)基類添加追蹤代碼,然后修改smail文件的基類。

7.加入AdMob廣告.
com 目錄下添加AdMod反編譯文件夾<google>
Manifest中添加如下配置:

<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:name="com.google.android.gms.ads.AdActivity" android:theme="@android:style/Theme.Translucent"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
<activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

跟添加友盟統(tǒng)計(jì)一樣在基類里面初始化:

MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");

最好通過自定義View

public class MyAdView extends LinearLayout {
    public MyAdView(Context context) {
        super(context);

    }

    public MyAdView(Context context, AttributeSet attrs) {
        super(context, attrs);
        addAdView(context);
    }

    public MyAdView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    private void addAdView(Context context){
        AdView adView = new AdView(context);
        adView.setAdSize(AdSize.BANNER);
        adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
        addView(adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    }


}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容