私はJavaを知っていて、Cを学びましたが、使用したことはありません。仮想マシンでも実際のマシンでも、アセンブリの形式はわかりません。
Smaliをハックする方法を学ぶための最良の方法は何ですか?
更新: 昨日約束したように、リストにいくつかのリンクを追加しました。
うふふ。あまりドキュメントがありません!最善のアドバイスは?逆コンパイルし、読み取り、調整し、それがどのように行われたかを確認し、サイクルを何度も開始します。しかし、あなたはそのアドバイスを求めていませんよね?;)
さて、少し役立つ場所がいくつかあります。
http://androidcracking.blogspot.com/search/label/smali これが一番です。私もその男に質問をしましたが、彼は非常に迅速に答えたので、行って見てください.
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html 非常に包括的な表 - 良いリファレンスです!
http://webchat.freenode.net/?channels=smali 試したことはありませんが、baksmali の作者 ( http://code.google.com/p/smali/ )の Google コード ページにあります。
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 で非常に基本的なクラスとメソッドのコーディングを開始し、それらをコンパイルしてから、独自のコードをバクスマリ化することです。あなたはそれが何をするかを正確に知っているので、従うのがずっと簡単になります.
幸運を!
人々が公式のDalvik形式のドキュメントを主要な参照として使用していないことに私は引き続き驚いています。古いリリースでは、DalvikドキュメントはAndroidソースのdalvik/docsにあります。見たい特定のファイルはdalvik-bytecode.htmlと呼ばれます。バイトコード定義をさかのぼるいくつかのリリースは、android.com開発者向けドキュメントの一部になりました。
source.android.comのdalvik-bytecode.html
追加の便宜のために、私は時々これらのドキュメントを私の個人的なウェブサイトにミラーリングします。この場合:
私は smali サイトにいくつかの情報を含む wiki ページをいくつか持っています。
https://github.com/JesusFreke/smali/wiki/Registers
https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields
また、smali/baksmali の統合テストですべてのオペコードを使用する smali コードの例があります。