apk逆コンパイル上のピットの道
4777 ワード
360のプラグイン化を解決するため、第三者のaarファイルを使って、プラグインの独立版のapkのコンパイルは問題がなくて、インストールしてタイムズを開くだけで間違って、ここで360のプラグイン化の開発にツッコミを入れて、このように明らかな1
バグを解決しないのか?
360プラグインを使用してandroid.support.v 4.content.LocalBroadcastManagerというタイプのプロパティを取得するときに、Objタイプが返され、正しいタイプが返されないため、逆コンパイルして修正する必要があります.
修正啓発はもう一人のブロガーに啓発され、ここで感謝します:原文リンクhttps://juejin.im/post/5aa3571651882555635decdb
くだらないことは言わないでください.
逆コンパイル上のピットを記録します.
まずbaksmailやsmailなどの逆コンパイルjarをダウンロードし、アドレス:https://bitbucket.org/JesusFreke/smali/downloads/
通常の逆コンパイルツール:
Baksmali:https://github.com/JesusFreke/smali
Apktool:https://ibotpeaches.github.io/Apktool/
dex2jar:https://sourceforge.net/projects/dex2jar/
同時に:
コンパイルの手順は、ネット上のチュートリアルに従って一歩一歩進みます.
最後にずっと間違っていました.
最後の解決策は
smailを使用して、生成されたsmailファイルをdexファイルに変換します.
次にclasses.dexファイルを解凍パッケージに入れ、apkに再パッケージします.
上記の生成apkは使えませんが、まだ解決していません. 後ろでなぜかもう一度見てみましょう.
また、逆コンパイラが見つかりました.
apktoolsこれはbaksmailとsmailの2つの仕事をすべてして、同時にパッケージ化に成功しました.
以下に整理します.
1.apktool.jarとapktool.datをダウンロードし、同じフォルダに配置します.たとえば、Apktools
ダウンロード後のapktool_XXX.jarは必ずapktool.jarに変更してから使用します.
Apktool公式サイト:https://ibotpeaches.github.io/Apktool/
2.変数環境の構成:
環境を配置するのはくだらないことではありません.次の最初のリンクを参照してください.
3.正式に開始:
パッケージ化に成功したapkを、apktoolsフォルダの下に配置します.
逆コンパイルのコマンドを実行します.
必ず-rを加えてください.そうしないと、apktool.ymlが見つからないという問題が発生します.
コンパイルバック:
修正したプロジェクトをコンパイルし、次の名前を付けます.
コンパイルに成功した後もこのapkは使用できません.鍵を追加してからインストールに成功する必要があります.このとき、鍵をapktoolsフォルダの下に置く必要があります.
次のコマンドを実行します.
実行中に鍵のパスワードを入力し、車に戻るをクリックしてパッケージを開始する必要があります.
参考ブログ:https://blog.csdn.net/sonnyjack/article/details/79273023
https://blog.csdn.net/niuba123456/article/details/85868949
あとは記録がたくさんあるので、今日は先にここに着きます.
java.lang.VerifyError: Verifier rejected class com.llvision.glass3.core.lcd.LCDService: void com.llvision.glass3.core.lcd.LCDService.onCreate() failed to verify: void com.llvision.glass3.core.lcd.LCDService.onCreate(): [0x66] register v1 has type Reference: java.lang.Object but expected Precise Reference: android.support.v4.content.LocalBroadcastManager (declaration of 'com.llvision.glass3.core.lcd.LCDService' appears in /data/app/com.example.llapplication-1/split_lib_dependencies_apk.apk)
11-11 20:30:10.693986 3761 3761 D AEE_AED : at java.lang.Class.newInstance(Native Method)
11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.app.ActivityThread.handleCreateService(ActivityThread.java:3233)
11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.app.ActivityThread.-wrap5(ActivityThread.java)
11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1617)
11-11 20:30:10.693986 3761 3761 D AEE_AED : at android.os.Handler.dispatchMessage(Handle
11-11 20:30:10.694209 3761 3761 I AEE_AED : Process: com.example.llapplication:llvision
バグを解決しないのか?
360プラグインを使用してandroid.support.v 4.content.LocalBroadcastManagerというタイプのプロパティを取得するときに、Objタイプが返され、正しいタイプが返されないため、逆コンパイルして修正する必要があります.
修正啓発はもう一人のブロガーに啓発され、ここで感謝します:原文リンクhttps://juejin.im/post/5aa3571651882555635decdb
くだらないことは言わないでください.
逆コンパイル上のピットを記録します.
まずbaksmailやsmailなどの逆コンパイルjarをダウンロードし、アドレス:https://bitbucket.org/JesusFreke/smali/downloads/
通常の逆コンパイルツール:
Baksmali:https://github.com/JesusFreke/smali
Apktool:https://ibotpeaches.github.io/Apktool/
dex2jar:https://sourceforge.net/projects/dex2jar/
同時に:
コンパイルの手順は、ネット上のチュートリアルに従って一歩一歩進みます.
最後にずっと間違っていました.
Exception in thread "main" com.beust.jcommander.MissingCommandException: Expected a command, got -o
at com.beust.jcommander.JCommander.parseValues(JCommander.java:725)
at com.beust.jcommander.JCommander.parse(JCommander.java:304)
at com.beust.jcommander.JCommander.parse(JCommander.java:287)
at org.jf.baksmali.Main.main(Main.java:90)
最後の解決策は
1. classes.dex .smali
# java -jar baksmali-2.2.7.jar -o test baksmali-2.2.7.jar classes.dex
:
Exception in thread "main" com.beust.jcommander.MissingCommandException: Expected a command, got -o
at com.beust.jcommander.JCommander.parseValues(JCommander.java:725)
at com.beust.jcommander.JCommander.parse(JCommander.java:304)
at com.beust.jcommander.JCommander.parse(JCommander.java:287)
at org.jf.baksmali.Main.main(Main.java:90)
2.
# java -jar baksmali-2.2.7.jar disassemble classes.dex
smailを使用して、生成されたsmailファイルをdexファイルに変換します.
d:\sdk\Sdk\Sdk\tools>java -jar smali-2.3.4.jar assemble out/ -o classes.dex
次にclasses.dexファイルを解凍パッケージに入れ、apkに再パッケージします.
上記の生成apkは使えませんが、まだ解決していません. 後ろでなぜかもう一度見てみましょう.
また、逆コンパイラが見つかりました.
apktoolsこれはbaksmailとsmailの2つの仕事をすべてして、同時にパッケージ化に成功しました.
以下に整理します.
1.apktool.jarとapktool.datをダウンロードし、同じフォルダに配置します.たとえば、Apktools
ダウンロード後のapktool_XXX.jarは必ずapktool.jarに変更してから使用します.
Apktool公式サイト:https://ibotpeaches.github.io/Apktool/
2.変数環境の構成:
環境を配置するのはくだらないことではありません.次の最初のリンクを参照してください.
3.正式に開始:
パッケージ化に成功したapkを、apktoolsフォルダの下に配置します.
逆コンパイルのコマンドを実行します.
F:\apktools\apktools>apktool d -r app-release.apk
I: Using Apktool 2.4.0 on app-release.apk
I: Copying raw resources...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
必ず-rを加えてください.そうしないと、apktool.ymlが見つからないという問題が発生します.
コンパイルバック:
修正したプロジェクトをコンパイルし、次の名前を付けます.
F:\apktools\apktools>apktool b app-release -o newll.apk
I: Using Apktool 2.4.0
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Copying raw resources...
I: Copying libs... (/lib)
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk...
コンパイルに成功した後もこのapkは使用できません.鍵を追加してからインストールに成功する必要があります.このとき、鍵をapktoolsフォルダの下に置く必要があります.
次のコマンドを実行します.
F:\apktools\apktools>jarsigner -verbose -keystore llkeystore.jks -signedjar newllq.apk newll.apk llkeystore
実行中に鍵のパスワードを入力し、車に戻るをクリックしてパッケージを開始する必要があります.
参考ブログ:https://blog.csdn.net/sonnyjack/article/details/79273023
https://blog.csdn.net/niuba123456/article/details/85868949
あとは記録がたくさんあるので、今日は先にここに着きます.