web-dev-qa-db-ja.com

Smaliを学ぶ最良の方法は何ですか(およびDalvik VM opcodes)を使用する方法とタイミングは?)

私はJavaを知っており、Cを学びましたが、Cを使用したことはありません。仮想マシンまたは実際のアセンブリのいずれの形式のアセンブリも知りません。

スマリをハックする方法を学ぶ最良の方法は何ですか?

58
Ken Kinder

更新:昨日約束したように、リストにリンクを追加しました。

うわあまりドキュメントはありません!ベストアドバイス?逆コンパイルし、読み、微調整し、それがどのように行われたかを確認し、何度もサイクルを開始します。しかし、あなたはそのアドバイスを求めなかったでしょう? ;)

さて、少し助けになる場所がいくつかあります:

http://androidcracking.blogspot.com/search/label/smali これが最適です。私も男に質問をし、彼は非常に迅速に答えたので、行って見てください。

http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html 非常に包括的な表-良いリファレンス!

http://webchat.freenode.net/?channels=smali 試したことはありませんが、baksmali作成者のgoogleコードページにあります( http://code.google。 com/p/smali /

http://forum.xda-developers.com/showthread.php?t=777707 最後に、これはCaptivateカメラのハッキングについて説明した投稿です。各.diffファイルが何をしているのかについて少しコメントしているので、そこの差分をフォローできます。良いものは、ポスト#20から始まります。

http://www.slideshare.net/paller/understanding-the-dalvik-bytecode-with-the-dedexer-tool 基本的な概念を含む興味深いスライドショー。始める良い方法。

http://sites.google.com/site/haynesmathew/home/projects/dalvik-notes 通常の.smaliよりもさらに低いレベル。後で参照しますが、よく読んでください。

http://jasmin.sourceforge.net/guide.html Smali構文はJasminに基づいているため、これにより優れた概念が得られます。

http://groups.google.com/group/apktool?pli=1 読んでおく価値のあるいくつかの議論。また、何かにこだわっているときに検索するのに適した場所です。

そして最後に、私が使用した最も有用なトリック:Javaで非常に基本的なクラスとメソッドのコーディングを開始し、それらをコンパイルしてから、独自のコードをbaksmaliします。あなたはそれが何をするかを正確に知っているので、それに従うことはずっと簡単です。

がんばろう!

99
Aleadam

私は、人々が主要な参考資料として公式のDalvik形式のドキュメントを使用していないことに驚いています。古いリリースでは、Dalvikドキュメントはdalvik/docsの下のAndroidソースにあります。見たい特定のファイルはdalvik-bytecode.htmlと呼ばれます。定義はAndroid.com開発者ドキュメントの一部になりました:

source.Android.comのdalvik-bytecode.html

さらに便利なように、これらのドキュメントを自分のWebサイトにミラーリングすることもあります。この場合:

milk.comのdalvik-bytecode.html

15
danfuzz

Smaliサイトにはいくつかの情報を含むWikiページがいくつかあります。

http://code.google.com/p/smali/wiki/Registers

http://code.google.com/p/smali/wiki/TypesMethodsAndFields

Smali/baksmaliの統合テストですべてのオペコードを使用するsmaliコードの例があります。

スマリ統合テスト

10
JesusFreke