C++で作ったSOファイルの解析方法

[戻る]
ねむい 2016/05/11(水) 21:01:22
Windows7 64bitを使用しております。

android ndkにおいて、C++で作ったSOファイルの解析方法を探しております。

特に、

・C++コードに記載した定数等が、SOファイルの解析により、どのように表面化されてし
まうか。

・SOファイルから元のコードの流れを、どの程度追えるのか

を確認したいのです。

どのような方法がありますでしょうか。

よろしくお願いいたします。

ITO 2016/05/12(木) 10:18:22
 androidはもともとは確か、LINUXですよね。
Windows環境というよりは、freeUNIX環境上でどれだけ解析できるかですね。
Cygwin等を使ってどこまでいくかですね。

仲澤@失業者 2016/05/12(木) 10:28:55
*.soは、Windowsでは*.dllに相当します。
要はライブラリファイルなので実行ファイルです。当然中身はバイナリです。
従って、元のソースに記述されていた情報の内、実行に不要な部分は失われています。
たとえば#defienされた定数などは参照された位置でバイナリの直値として使われて
いると予測できます。

ツールを使えばライブラリにエントリされている関数(ないしシンボル)の一覧などは取得
できます。
対象CPUに詳しければダンプや逆アセンブルすることによって、
その他の情報も取得可能かもしれません。
ただし、高い能力を持つプログラマでも、バイナリから元のコードを
完全に再現することは本質的に不可能です。
つまり、断片的な動作を除けば、元のコードの内容を知るのはほぼ不可能と断言できます
。

以上の情報とキーワードを元にぐぐればもう少し詳しい情報が見つけられるでしょう。
たとえばreadelf等ですね。

ねむい 2016/05/13(金) 21:35:11
[[解決]]
ご返答、ありがとうございます。
VMware PlayerとCent OSをインストールし、soファイルの中身を一部ですが見ることがで
きました。

古いスレッドには追加発言できません。