問題タブ [smali]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Androidにapktoolはありますか?Androidアプリケーションで「.smali」をアセンブルして新しい「.apk」を作りたい
Androidアプリケーションで「.smali」をアセンブルして新しい「.apk」を作りたい。これを行う時間があまりないので、すでに存在するソースコードを使用する必要があります。
Windows / Mac OS X / LinuxでビルドできるApktoolプロジェクトがありますが、Androidでビルドしたいと思います。
また、EclipseのAndroidアプリケーションプロジェクトに外部ライブラリとして「apktool.jar」を含めようとしましたが、失敗しました。
いくつかの調査の結果、Androidで実行されている次の2つのプロジェクトのみが必要であることがより明確になりました。
- Smali(独立プロジェクト)
- JarSigner(OpenJDKから)
そして、Apktoolは必要ありません。
このプロジェクトには私が必要なものがあります:
java - Is the .catchall used to indicate finally clause in smali for Dalvik byte code?
I noticed that when there is finally
clause in the java code, there is always .catchall
generated to identify the finally
block or to inline it using the .catchall
label, but I haven't found any online information about whether is the case or more explanation, does anybody know about this?
dalvik - DalvikVM はどのようにスイッチを処理し、smali コードを試行しますか
私はスマリ語を学ぼうとしていますが、グーグルで検索しても見つからない質問がいくつかあります。
1)自分自身をよりよく説明するために簡単なテストケースを作成しました
.catch ステートメント: 2 つの引数は、そのラベルからそのラベルまで取得してキャッチすることを意味しますか (2 つのラベルの間のコード)、それとも :try_start_0 から :try_end_0 に到達するまで試行の実行を開始することを意味しますか (goto ジャンプを許可します) 2 つのラベル内にないコードを実行するには)?
try のラベルは常に try_start_%d の形式ですか、それとも任意のラベルにすることができますか?
2)別のケース
switch ステートメント: switch ステートメントが switch データと switch 呼び出しの間にある必要がありますか? また、ラベルの命名は固定されていますか、それとも便宜上のものですか?
3) ラベルが異なる可能性がある場合、baksmali は異なるラベルで smali コードを生成しますか?
4) dex を逆コンパイルするときに常に表示されるとは限らないオプションの行は何ですか?
.parameter と .line がオプションであることは知っていますが、存在しないものは何ですか?
前もって感謝します。
android - invoke-directは、インスタンス化されたオブジェクトで定義されているメソッドを実際に呼び出していますか?
ConcreteClass
を継承するテストコードがありAbstractClassForInterface1
ます。のコンストラクター用に生成されたsmaliコードConcreteClass
:
p0
ConcreteClass
これはインスタンス化からのものであるため、実際にはタイプのインスタンス化されたオブジェクトです。
v0
オブジェクトにメソッドがあることは簡単に理解できますLorg/ucomb/ConcreteClass1;-><init>()V
。
次に、本文で、を使用invoke-direct
しp0
てスーパークラスのコンストラクターを次のように呼び出す理由を説明します。
invoke-direct {p0}, Lorg/ucomb/AbstractClassForInterface1;-><init>()V
?
invoke-direct
仮想メソッド解決なしでメソッドを呼び出すことになっているのではありませんか?
android - invoke-kind/range 命令で示されるレジスタの数が引数の型の数と一致しないのはなぜですか?
次のバイトコードの例では:
レジスタの範囲は、レジスタv0
、v1
、v2
、v3
、v4
、v5
がメソッドに渡されることを示していますが、その数が示されたタイプの数と同じではないのはなぜですか?
呼び出しの種類/範囲と通常の呼び出しの種類に違いはありますか?
smali - 正式なラベル名
smali ラベルの正式名称は何ですか?
私は知ってa-z
おり、_
合法であり\n
、明らかにそうではありませんが、ラベル名に関する規則はありますか?
バイトコードはラベルを使用せず、dalvik アセンブラー (smali) はそれをファイル内の位置に変換することを知っているので、実際には問題にならないはずですが、smali はラベル名として何を受け入れますか?
java - Android .java ファイルが通過するフォーマットの完全なチェーン リストは何ですか?
.dex ファイルがコンパイルされる .smali ファイルに気付きました。.java ファイルが行っているすべての変換を追跡できるようにしたいと考えています。
まず、.java ファイルの作成からインストールした .apk までに実行されたすべての変換が何であるかを知りたいです。
第二に、その間に作成されたすべてのファイルを実際に表示して開くにはどうすればよいですか?
java - smali に Java のインポートはありませんか?
今日、Android ソースでいくつかの実験を行っていました。
完全なことを教えてください.androidソースからframework.jarをコンパイルして逆コンパイルし、smaliソースを生成して脇に置いておきました。次に、CyanogenMod リポジトリから、機能のコミットを Android ソースに追加し、framework.jar をコンパイルして、smali ソースを何度も逆コンパイルして、smali に関する変更を確認し、ROM に移植できるようにしました。
私が移植しようとしている機能には、特定のクラスのインポートが必要です。たとえば、 import dalvik.system.VMRuntime と、それらのインポートされたクラスを利用するための追加のコーディングが必要です。だから今私の問題は、余分なコーディング、つまりsmaliコードでのそれらのクラスの使用しか見ることができず、それらのインポートを見ることができないということです。したがって、smali コードのみを移植すると、そのメソッドが見つからないことを示す java.lang.NoSuchMethodError が logcat に表示されます。必要なクラスがインポートされていないため、その理由は明らかです。次に、smali コードでそれを行う方法は? smali でそれを行う方法が見当たりません。そのため、新しく導入された方法が機能しません。
これに対する実行可能な解決策はありますか?
android - smali を使用して、GameSalad で作成した APK に Tapit を追加しますか?
私の質問をもう少し明確にするために、私がする必要があるのは、GameSalad によって作成された Android APK に Tapit SDK を実装することです。
私はすでにプロセス全体をほとんど知っていますが、私の唯一の問題は広告を表示することです。
私の方法を簡単に説明するために、apktool を使用して apk を smali に逆コンパイルします。逆コンパイルする tapit apk もあるので、そのための smali コードだけを使用できます。次に、必要なアクティビティ内に配置します。必ずtapitをインポートし、comの下にlibフォルダーを追加し、Androidマニフェストxmlを編集してから、再コンパイルして再署名します。
アプリがクラッシュすることはなくなりましたが、広告も表示されません。
この方法でapkを編集できることは知っています.dex2jarとジャスミンでの編集についても知っていますが、そのように機能させることもできません.
誰かがこれについて何か洞察を持っているなら、私はそれを大いに感謝します.
ありがとうございました。