タグ付けされた質問 「disassembly」

8
AndroidプラットフォームでAPKまたはDEXファイルを逆コンパイルする方法 [閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 5年前休業。 この質問を改善する AndroidプラットフォームでAPKパッケージまたはDEXファイルを逆コンパイルすることは可能ですか?APKファイルを逆コンパイルできるツールはありますか?


7
objdumpを使用して1つの関数を分解する方法は?
システムにバイナリがインストールされているので、特定の関数の逆アセンブルを確認したいと思います。できればを使用objdumpしますが、他のソリューションも使用できます。 この質問から、境界アドレスしかわからない場合は、コードの一部を逆アセンブルできる可能性があることがわかりました。この回答から、分割デバッグシンボルを単一のファイルに戻す方法を学びました。 しかし、その単一のファイルを操作し、すべてのコードを逆アセンブルしたとしても(つまり、開始アドレスまたは停止アドレスはありませんが、-dパラメーターは単純ですobjdump)、そのシンボルはどこにも表示されません。問題の関数が静的である限り、これは理にかなっているので、エクスポートされません。それでも、valgrind関数名は報告されるので、どこかに保存する必要があります。 デバッグセクションの詳細を見ると、その名前が.debug_strセクションに記載されていることがわかりますが、これをアドレス範囲に変換できるツールがわかりません。


4
Cコンパイラがスイッチを最適化する理由と異なる場合
最近、奇妙な問題に遭遇したとき、私は個人的なプロジェクトに取り組んでいました。 非常にタイトなループでは、0〜15の値の整数があります。値0、1、8、9の場合は-1を取得し、値4、5、12、13の場合は1を取得する必要があります。 私はいくつかのオプションを確認するためにgodboltを使用しましたが、コンパイラーがifチェーンと同じ方法でswitchステートメントを最適化できないようであることに驚きました。 リンクはここにあります:https://godbolt.org/z/WYVBFl コードは次のとおりです。 const int lookup[16] = {-1, -1, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 1, 1, 0, 0}; int a(int num) { return lookup[num & 0xF]; } int b(int num) { num &= 0xF; if (num == 0 || num == 1 || …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.