問題タブ [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.

0 投票する
2 に答える
3304 参照

android - Androidにapktoolはありますか?Androidアプリケーションで「.smali」をアセンブルして新しい「.apk」を作りたい

Androidアプリケーションで「.smali」をアセンブルして新しい「.apk」を作りたい。これを行う時間があまりないので、すでに存在するソースコードを使用する必要があります。

Windows / Mac OS X / LinuxでビルドできるApktoolプロジェクトがありますが、Androidでビルドしたいと思います。

また、EclipseのAndroidアプリケーションプロジェクトに外部ライブラリとして「apktool.jar」を含めようとしましたが、失敗しました。


いくつかの調査の結果、Androidで実行されている次の2つのプロジェクトのみが必要であることがより明確になりました。

  1. Smali(独立プロジェクト)
  2. JarSigner(OpenJDKから)

そして、Apktoolは必要ありません。


このプロジェクトには私が必要なものがあります:

https://code.google.com/p/java-ide-droid/

0 投票する
2 に答える
683 参照

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?

0 投票する
1 に答える
4278 参照

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 がオプションであることは知っていますが、存在しないものは何ですか?

前もって感謝します。

0 投票する
1 に答える
1764 参照

android - invoke-directは、インスタンス化されたオブジェクトで定義されているメソッドを実際に呼び出していますか?

ConcreteClassを継承するテストコードがありAbstractClassForInterface1ます。のコンストラクター用に生成されたsmaliコードConcreteClass

p0ConcreteClassこれはインスタンス化からのものであるため、実際にはタイプのインスタンス化されたオブジェクトです。

v0オブジェクトにメソッドがあることは簡単に理解できますLorg/ucomb/ConcreteClass1;-><init>()V

次に、本文で、を使用invoke-directp0てスーパークラスのコンストラクターを次のように呼び出す理由を説明します。

invoke-direct {p0}, Lorg/ucomb/AbstractClassForInterface1;-><init>()V

invoke-direct仮想メソッド解決なしでメソッドを呼び出すことになっているのではありませんか?

0 投票する
2 に答える
1349 参照

android - invoke-kind/range 命令で示されるレジスタの数が引数の型の数と一致しないのはなぜですか?

次のバイトコードの例では:

レジスタの範囲は、レジスタv0v1v2v3v4v5がメソッドに渡されることを示していますが、その数が示されたタイプの数と同じではないのはなぜですか?

呼び出しの種類/範囲と通常の呼び出しの種類に違いはありますか?

0 投票する
1 に答える
586 参照

smali - 正式なラベル名

smali ラベルの正式名称は何ですか?

私は知ってa-zおり、_合法であり\n、明らかにそうではありませんが、ラベル名に関する規則はありますか?

バイトコードはラベルを使用せず、dalvik アセンブラー (smali) はそれをファイル内の位置に変換することを知っているので、実際には問題にならないはずですが、smali はラベル名として何を受け入れますか?

0 投票する
1 に答える
103 参照

java - Android .java ファイルが通過するフォーマットの完全なチェーン リストは何ですか?

.dex ファイルがコンパイルされる .smali ファイルに気付きました。.java ファイルが行っているすべての変換を追跡できるようにしたいと考えています。

まず、.java ファイルの作成からインストールした .apk までに実行されたすべての変換が何であるかを知りたいです。

第二に、その間に作成されたすべてのファイルを実際に表示して開くにはどうすればよいですか?

0 投票する
2 に答える
2387 参照

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 でそれを行う方法が見当たりません。そのため、新しく導入された方法が機能しません。

これに対する実行可能な解決策はありますか?

0 投票する
1 に答える
745 参照

android - smali を使用して、GameSalad で作成した APK に Tapit を追加しますか?

私の質問をもう少し明確にするために、私がする必要があるのは、GameSalad によって作成された Android APK に Tapit SDK を実装することです。

私はすでにプロセス全体をほとんど知っていますが、私の唯一の問題は広告を表示することです。

私の方法を簡単に説明するために、apktool を使用して apk を smali に逆コンパイルします。逆コンパイルする tapit apk もあるので、そのための smali コードだけを使用できます。次に、必要なアクティビティ内に配置します。必ずtapitをインポートし、comの下にlibフォルダーを追加し、Androidマニフェストxmlを編集してから、再コンパイルして再署名します。

アプリがクラッシュすることはなくなりましたが、広告も表示されません。

この方法でapkを編集できることは知っています.dex2jarとジャスミンでの編集についても知っていますが、そのように機能させることもできません.

誰かがこれについて何か洞察を持っているなら、私はそれを大いに感謝します.

ありがとうございました。