11

プラグインを使用して、Python でIDA Pro逆アセンブラーのスクリプトを作成しています。idapythonこれを使用して、IDA の自動分析が不足しているギャップを埋めることができます。

私が困惑した領域の 1 つは、(より適切な用語が必要なため) 「きれいな名前」を使用して場所/機能に名前を付けることです。私が意味することの例を以下に示します。

IDAプリティネームのサンプルスクリーンショット

idapythonIDA Pro自体では、基本的なCっぽい関数名しか入力できません。許可されていない記号 (スコープ解決演算子など) を入力すると、アンダースコアに置き換えられます。ただし、マングルされた名前 (例: ) を手で入力すると__ZN9IOService15powerChangeDoneEm、IDA Proこれを整形してくれます。

したがって、私の質問:パススルーするマングルされた名前を生成するにはどうすればよいidapythonですか? 利用可能な名前マングリング ライブラリはありますか? Pythonで利用できますか? マングリング機能を取り除き、g++それを回避する唯一の希望はありますか?

4

4 に答える 4

6

私はついに少し掘りに行きました。

残念ながら、ツールは見つかりませんでしたが、リソースは見つかりました。

gcc3形式のマングル名だけが必要な場合は、gcc3が標準化された名前マングリングスキームを持つItanium C++ABIを使用していることを知っておいてください。私は2つの文書を見つけました:

  • Itanium C++ABIページ
  • さまざまなコンパイラのスキームを説明する呼び出し規約のPDFドキュメント

参考までに、どちらもNameManglingのWikipediaページから入手できます。

于 2011-01-12T12:28:28.427 に答える
3

簡単な(alebit hacky)方法の1つは、必要なシンボルを含むC ++ファイルをコンパイルしてから、.oファイルのシンボルテーブルから必要なシンボルを抽出することです。少しの作業で、これはうまくスクリプト化できるかもしれません。

于 2011-01-12T10:04:33.487 に答える
1

Visual コンパイラでマングリングがどのように行われるかを説明する記事を次に示します。binutilsgcc によるマングリングについては、パッケージのソースに情報があると思います。

于 2011-01-12T12:37:40.113 に答える
0

MangleContextクラスを持つClangASTライブラリを使用できます。

http://clang.llvm.org/doxygen/classclang_1_1CodeGen_1_1MangleContext.html

于 2012-05-12T03:22:54.817 に答える