逆コンパイラCodeReverseを作るat TECH
逆コンパイラCodeReverseを作る - 暇つぶし2ch1:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/24 14:58:48.34
CodeReverseは、片山博文MZが開発している、Windows用の逆アセンブラ兼ダンプツールです。
最終的には「リバーシブルな」逆コンパイラを目指しています。

CodeReverse公式サイト
URLリンク(katahiromz.web.fc2.com)

GitHubレポジトリはこちら
URLリンク(github.com)

2:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/24 14:59:38.45
【実行可能ファイル(PE形式)関連】
The Portable Executable File Format
URLリンク(www.csn.ul.ie)
Windows EXEファイル形式
URLリンク(home.a00.itscom.net)
インポート情報
URLリンク(hp.vector.co.jp)
A Tour of the Win32 Portable Executable File Format
URLリンク(msdn.microsoft.com)

【アセンブラ関連】
X86アセンブラ (WikiBooks)
URLリンク(ja.wikibooks.org)
x64 アセンブリ言語プログラミング
URLリンク(homepage1.nifty.com)
x64 アセンブリーの概要
URLリンク(www.isus.jp)
x64 の入門書
URLリンク(msdn.microsoft.com)
インテル日本語技術資料のダウンロード
URLリンク(www.intel.co.jp)

3:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/24 15:00:12.24
【遅延読み込み関連】
DLLの遅延読み込み(delay loading)
URLリンク(www.glamenv-septzen.net)
UNDER THE HOOD (delayload)
URLリンク(www.microsoft.com)
DLL遅延ロード情報をPythonで
URLリンク(www.glamenv-septzen.net)

【スタックフレームなど】
スタックフレーム
URLリンク(www.c-tipsref.com)
Unprototyped Functions
URLリンク(msdn.microsoft.com)
Varargs
URLリンク(msdn.microsoft.com)
呼出規約
URLリンク(ja.wikipedia.org)
Caller/Callee Saved Registers
URLリンク(msdn.microsoft.com)
Return Values (C++)
URLリンク(msdn.microsoft.com)
Prolog and Epilog
URLリンク(msdn.microsoft.com)
Parameter Passing
URLリンク(msdn.microsoft.com)
Overview of x64 Calling Conventions
URLリンク(msdn.microsoft.com)

4:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/24 15:01:34.04
【逆アセンブル・逆コンパイル技術に関して】

Cの逆コンパイラはどこまで実現可能か
URLリンク(www5d.biglobe.ne.jp)
逆コンパイラ - Wikipedia
URLリンク(ja.wikipedia.org)
逆アセンブラ - Wikipedia
URLリンク(ja.wikipedia.org)
エイリアス解析 - Wikipedia
URLリンク(ja.wikipedia.org)
エスケープ解析 - Wikipedia
URLリンク(ja.wikipedia.org)
コールグラフ - Wikipedia
URLリンク(ja.wikipedia.org)
シェープ解析 - Wikipedia
URLリンク(ja.wikipedia.org)
データフロー解析 - Wikipedia
URLリンク(ja.wikipedia.org)
ポインタ解析 - Wikipedia
URLリンク(ja.wikipedia.org)
制御フローグラフ - Wikipedia
URLリンク(ja.wikipedia.org)
制御構造 - Wikipedia
URLリンク(ja.wikipedia.org)
静的単一代入 - Wikipedia
URLリンク(ja.wikipedia.org)

5:デフォルトの名無しさん
13/09/24 15:02:38.62
パッと思いつくのは
・アドレスにラベルを割り付ける
・関数を切り分ける
・スタックフレームから関数引数・ローカル変数・戻り値を切り出す
・if/for/switchを抽出して構文化する
・DLLからロードされるシンボルを置き換える

解説しているサイトとかあるかは調べてないので知らん

どうせ defineされた定数をマクロ名に戻せないとか
構造体復元が難しいとかあるから大したことはできん

6:デフォルトの名無しさん
13/09/24 20:57:40.99
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

7:デフォルトの名無しさん
13/09/24 21:39:53.66
ネタスレはマ板でやれよ。

> Cの逆コンパイラはどこまで実現可能か
アフィサイト晒してんじゃねーよ。 内容もちょい微妙だし。

まず、アセンブリから C/C++ へのトランスレータは簡単だろ?
そっからどの程度 C/C++ らしい表現にするかが問題なんだろ?
何から手を付けてどういう順番でやるつもりなの。

8:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/24 22:00:04.49
まずは関数の切り分け(手元では入り口を解析する形でほぼ完了)。次は関数情報とスタックフレームの解析。
そして中間表現の定義と中間表現への変換。さらに構文解析と型情報の処理。
トランスレータって言ってもそんなに簡単じゃない。

リソースのダンプでいいのないか(オープンなの)?

9:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/24 22:13:52.02
関数には__cdecl、__stdcall、__pascal、__fastcall、単純ジャンプ関数の五種類あるんだけど、これをどうやって判別するかという問題がある。

遅延ロード情報の取り込みもしたい。ソース希望。

10:デフォルトの名無しさん
13/09/24 22:17:55.08
OllyDbgじゃダメなんか
分かってる人には充分だろ

11:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/24 23:05:03.62
ネタスレではありません。私は本気です。明日、OllyDbgのソースをDLしてみます。
CodeReverseは、NASMのコードを一部拝借しています。
多分、構文解析用のインクルードファイルが必要になると思います。
MinGWから頂くかも知れません。ライセンスはどうするか? アイコンのデザイン、洒落てるでしょ?

12:デフォルトの名無しさん
13/09/24 23:06:25.98
できたらよんで。

13:デフォルトの名無しさん
13/09/24 23:17:17.38
>>11
> MinGWから頂くかも知れません。ライセンスはどうするか? アイコンのデザイン、洒落てるでしょ?
MinGWのソース使ったら、配布するときのライセンスはGPLになると思う。
一部パブリックドメインらしいけれど。

14:デフォルトの名無しさん
13/09/25 00:34:40.81
アムロの親父みたいに俺の親父もボケてしまった。
たしかに昔はある分野で日本一の技能をもってた。俺の目標は親父だった。
今は硬い世界の殻に閉じこもってしまって、もはや日常会話しか通じない。

15:デフォルトの名無しさん
13/09/25 02:11:22.19
うーむ、今のところこの世にまともなC/C++の逆コンパイラが
存在しない事を考えても片山程度の技術力で作れるとは思えんが・・・

16:デフォルトの名無しさん
13/09/25 05:45:24.18
ま、なんかできたらまた呼んでくれ

17:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/25 21:15:11.17
ヘッダファイルもプリプロセッサも要るから、単純にMinGWに寄生する形にします。
バージョンアップの度にいちいちでっかいファイルをダウンロードさせるのも不憫だから。
ライセンスはGPLになる予定です。

18:デフォルトの名無しさん
13/09/25 21:50:21.91
つーか、片山GUIはどうした?予想通り挫折したのか?

そんなんじゃ逆コンパイラなんてもっと無理だろ

19:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/25 22:56:47.40
自動車の命はエンジンでしょ。GUIは後で自由に作れるから。

20:デフォルトの名無しさん
13/09/26 00:17:10.71
自動車の命は乗り心地だと思う

21:デフォルトの名無しさん
13/09/26 01:24:31.25
>>19
そういう問題じゃねーだろw

お前にはモノを最後まで作り上げる能力が無いって事だ
あれだけWin32APIやMFCに代わるGUIを作るって豪語してたろ
多分お前はこの逆コンパイラも作れないし、後になってもGUIも作れんよ

22:デフォルトの名無しさん
13/09/26 01:48:56.57
まあ一人で色々作ってたら未完成になることは多い。
そういう未完星人の同類なら、GUI作りくらい協力してやってもいい。
だが残念だがそれは無理だ。なぜなら彼が作っている物は俺よりしょぼい。
もはや彼が俺に「あなたのプロジェクトに協力させて下さい」と頼まなければいけないレベルなのだ。
残念である。世の中は不条理に満ちている。

23:デフォルトの名無しさん
13/09/26 01:53:10.86
まあ誰もが出来ないと思ってるよ

グラフィックライブラリもこれを最後に音沙汰なしだしな

975 名前:片山博文MZパンク ◆0lBZNi.Q7evd [sage] 投稿日:2013/03/21(木) 03:21:59.90
MZC2順調に開発中。。。

24:デフォルトの名無しさん
13/09/26 01:55:38.06
順調に開発中クソワロタwww

どこが順調なんだよwww

25:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/26 02:03:09.27
CUIの有り難みがわからない人とは話しが合わないっす。
CUIにパイプラインをつなげてGUIを作るなんてお茶の子さいさいっす。
俺はサイドビジネスで忙しいから、空いた時間で作ってるっす。
CUIの使い方も知らない人はうざいから消えてね。

26:デフォルトの名無しさん
13/09/26 02:09:39.70
出来ない人間の言い訳きたwww

27:デフォルトの名無しさん
13/09/26 02:13:56.61
ふーむ、CUIのありがたみがわかってる人間がなんでわざわざ
二番煎じのGUIを作ろうと思ったのか。しかもオリジナルより劣化してる。

更には、お茶の子さいさいと言いながら、いまだに何の成果物も出せないのはこれいかに。
>>23のレスからもう半年も経過しているが。

28:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/26 02:17:11.27
俺は貴様らよりも自由じゃないから。夜遊びはできないし、インターネットに
つなげてもらえないし。パソコンの使用時間は制限されてるし。
この書き込みも見張りに見つからないように携帯から書き込んでいるところ。

29:デフォルトの名無しさん
13/09/26 02:17:33.78
典型的な口だけダメ人間の末路だなw

30:デフォルトの名無しさん
13/09/26 02:19:58.65
こりゃアカンで。ちょっと期待してたらどうやら>>1の人格・人間性に
相当の問題アリやな。

31:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/26 02:24:00.61
クロスワードギバーというパズル作成ソフトで結構反響あった。MZ KeyLoggerもわりと人気あるし。

32:デフォルトの名無しさん
13/09/26 02:31:14.21
そうそう幅広くニッチなところ狙ってけ。おまえはわけのわからんものを大量に発明して東京都知事選に変態枠で出馬するようなタイプなんだ。

33:デフォルトの名無しさん
13/09/26 03:00:48.33
× 大量に発明して
○ 大量に「発明するぞ」というだけ言って

34:デフォルトの名無しさん
13/09/26 03:13:24.63
>>32
当選は枠があるけど出馬は出たきゃ出れるんじゃなかったっけ?

35:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/26 03:21:52.79
エクスポート名の@の右の数字は引数全体のサイズだよね?

36:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/26 03:33:33.17
で、__stdcallの引数全部のサイズが命令retの第一オペランドの値だよね?
そして、スタックフレームはebpとespの値の増減を調べないとわからないんだよね?

37:デフォルトの名無しさん
13/09/26 04:25:32.36
キャバクラでかわいいホステスと夜遊びしたいな

38:デフォルトの名無しさん
13/09/26 04:40:58.94
>>9は間違いね。__pascalなんてないし、64ビットに言及がないし、単純ジャンプ関数って何じゃそれ

39:デフォルトの名無しさん
13/09/26 04:42:37.87
以下、sage進行でよろしくお願いします。

40:デフォルトの名無しさん
13/09/26 04:43:48.36
片山死ねよ

41:デフォルトの名無しさん
13/09/26 04:50:14.13
>>35-36
Win32 べったりの話? 何にも知らないんだね。

DEF ファイルを使った DLL からのエクスポート
で検索してご覧、MSDN 内のページが引っかかるから。
悪いけど、主要な(少なくともターゲットとする)コンパイラやアセンブラやリンカのマニュアルを読んでから質問してくれる?
ていうかブログでやってくんない?

42:片山博文MZコスモ ◆T6xkBnTXz7B0
13/09/26 05:19:27.11
ブッブー、defファイルではなく__stdcall,__fastcall関数のmanglingの話でした。

manglingされたシンボル名から元の名前を求めるのは大変みたいですね。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch