CodeReverseは、片山博文MZが開発している、Windows用の逆アセンブラ兼ダンプツールです。
最終的には「リバーシブルな」逆コンパイラを目指しています。
CodeReverse公式サイト
http://katahiromz.web.fc2.com/codereverse/
GitHubレポジトリはこちら
https://github.com/katahiromz/CodeReverse
探検
逆コンパイラCodeReverseを作る
■ このスレッドは過去ログ倉庫に格納されています
1片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/24(火) 14:58:48.342片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/24(火) 14:59:38.45 【実行可能ファイル(PE形式)関連】
The Portable Executable File Format
http://www.csn.ul.ie/~caolan/publink/winresdump/winresdump/doc/pefile2.html
Windows EXEファイル形式
http://home.a00.itscom.net/hatada/mcc/doc/win32exe.html
インポート情報
http://hp.vector.co.jp/authors/VA050396/tech_07.html
A Tour of the Win32 Portable Executable File Format
http://msdn.microsoft.com/en-us/library/ms809762.aspx
【アセンブラ関連】
X86アセンブラ (WikiBooks)
http://ja.wikibooks.org/wiki/X86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9/16%E3%80%8132%E3%80%8164%E3%83%93%E3%83%83%E3%83%88
x64 アセンブリ言語プログラミング
http://homepage1.nifty.com/herumi/prog/x64.html
x64 アセンブリーの概要
http://www.isus.jp/article/introduction-to-x64-assembly/
x64 の入門書
http://msdn.microsoft.com/ja-jp/magazine/ee230241.aspx
インテル日本語技術資料のダウンロード
http://www.intel.co.jp/content/www/jp/ja/developer/download.html
The Portable Executable File Format
http://www.csn.ul.ie/~caolan/publink/winresdump/winresdump/doc/pefile2.html
Windows EXEファイル形式
http://home.a00.itscom.net/hatada/mcc/doc/win32exe.html
インポート情報
http://hp.vector.co.jp/authors/VA050396/tech_07.html
A Tour of the Win32 Portable Executable File Format
http://msdn.microsoft.com/en-us/library/ms809762.aspx
【アセンブラ関連】
X86アセンブラ (WikiBooks)
http://ja.wikibooks.org/wiki/X86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9/16%E3%80%8132%E3%80%8164%E3%83%93%E3%83%83%E3%83%88
x64 アセンブリ言語プログラミング
http://homepage1.nifty.com/herumi/prog/x64.html
x64 アセンブリーの概要
http://www.isus.jp/article/introduction-to-x64-assembly/
x64 の入門書
http://msdn.microsoft.com/ja-jp/magazine/ee230241.aspx
インテル日本語技術資料のダウンロード
http://www.intel.co.jp/content/www/jp/ja/developer/download.html
3片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/24(火) 15:00:12.24 【遅延読み込み関連】
DLLの遅延読み込み(delay loading)
http://www.glamenv-septzen.net/view/671
UNDER THE HOOD (delayload)
http://www.microsoft.com/msj/1298/hood/hood1298.aspx
DLL遅延ロード情報をPythonで
http://www.glamenv-septzen.net/view/677
【スタックフレームなど】
スタックフレーム
http://www.c-tipsref.com/words/stackframe.html
Unprototyped Functions
http://msdn.microsoft.com/en-us/library/6yy8aw4d.aspx
Varargs
http://msdn.microsoft.com/en-us/library/dd2wa36c.aspx
呼出規約
http://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
Caller/Callee Saved Registers
http://msdn.microsoft.com/en-us/library/6t169e9c.aspx
Return Values (C++)
http://msdn.microsoft.com/en-us/library/7572ztz4.aspx
Prolog and Epilog
http://msdn.microsoft.com/en-us/library/tawsa7cb.aspx
Parameter Passing
http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx
Overview of x64 Calling Conventions
http://msdn.microsoft.com/en-us/library/ms235286.aspx
DLLの遅延読み込み(delay loading)
http://www.glamenv-septzen.net/view/671
UNDER THE HOOD (delayload)
http://www.microsoft.com/msj/1298/hood/hood1298.aspx
DLL遅延ロード情報をPythonで
http://www.glamenv-septzen.net/view/677
【スタックフレームなど】
スタックフレーム
http://www.c-tipsref.com/words/stackframe.html
Unprototyped Functions
http://msdn.microsoft.com/en-us/library/6yy8aw4d.aspx
Varargs
http://msdn.microsoft.com/en-us/library/dd2wa36c.aspx
呼出規約
http://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
Caller/Callee Saved Registers
http://msdn.microsoft.com/en-us/library/6t169e9c.aspx
Return Values (C++)
http://msdn.microsoft.com/en-us/library/7572ztz4.aspx
Prolog and Epilog
http://msdn.microsoft.com/en-us/library/tawsa7cb.aspx
Parameter Passing
http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx
Overview of x64 Calling Conventions
http://msdn.microsoft.com/en-us/library/ms235286.aspx
4片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/24(火) 15:01:34.04 【逆アセンブル・逆コンパイル技術に関して】
Cの逆コンパイラはどこまで実現可能か
http://www5d.biglobe.ne.jp/~noocyte/Programming/Decompile.html
逆コンパイラ - Wikipedia
http://ja.wikipedia.org/wiki/%E9%80%86%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9
逆アセンブラ - Wikipedia
http://ja.wikipedia.org/wiki/%E9%80%86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9
エイリアス解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9%E8%A7%A3%E6%9E%90
エスケープ解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E8%A7%A3%E6%9E%90
コールグラフ - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%AB%E3%82%B0%E3%83%A9%E3%83%95
シェープ解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%97%E8%A7%A3%E6%9E%90
データフロー解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AD%E3%83%BC%E8%A7%A3%E6%9E%90
ポインタ解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E8%A7%A3%E6%9E%90
制御フローグラフ - Wikipedia
http://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E3%83%95%E3%83%AD%E3%83%BC%E3%82%B0%E3%83%A9%E3%83%95
制御構造 - Wikipedia
http://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%A7%8B%E9%80%A0
静的単一代入 - Wikipedia
http://ja.wikipedia.org/wiki/%E9%9D%99%E7%9A%84%E5%8D%98%E4%B8%80%E4%BB%A3%E5%85%A5
Cの逆コンパイラはどこまで実現可能か
http://www5d.biglobe.ne.jp/~noocyte/Programming/Decompile.html
逆コンパイラ - Wikipedia
http://ja.wikipedia.org/wiki/%E9%80%86%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9
逆アセンブラ - Wikipedia
http://ja.wikipedia.org/wiki/%E9%80%86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9
エイリアス解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9%E8%A7%A3%E6%9E%90
エスケープ解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E8%A7%A3%E6%9E%90
コールグラフ - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%83%AB%E3%82%B0%E3%83%A9%E3%83%95
シェープ解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%97%E8%A7%A3%E6%9E%90
データフロー解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AD%E3%83%BC%E8%A7%A3%E6%9E%90
ポインタ解析 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E8%A7%A3%E6%9E%90
制御フローグラフ - Wikipedia
http://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E3%83%95%E3%83%AD%E3%83%BC%E3%82%B0%E3%83%A9%E3%83%95
制御構造 - Wikipedia
http://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%A7%8B%E9%80%A0
静的単一代入 - Wikipedia
http://ja.wikipedia.org/wiki/%E9%9D%99%E7%9A%84%E5%8D%98%E4%B8%80%E4%BB%A3%E5%85%A5
5デフォルトの名無しさん
2013/09/24(火) 15:02:38.62 パッと思いつくのは
・アドレスにラベルを割り付ける
・関数を切り分ける
・スタックフレームから関数引数・ローカル変数・戻り値を切り出す
・if/for/switchを抽出して構文化する
・DLLからロードされるシンボルを置き換える
解説しているサイトとかあるかは調べてないので知らん
どうせ defineされた定数をマクロ名に戻せないとか
構造体復元が難しいとかあるから大したことはできん
・アドレスにラベルを割り付ける
・関数を切り分ける
・スタックフレームから関数引数・ローカル変数・戻り値を切り出す
・if/for/switchを抽出して構文化する
・DLLからロードされるシンボルを置き換える
解説しているサイトとかあるかは調べてないので知らん
どうせ defineされた定数をマクロ名に戻せないとか
構造体復元が難しいとかあるから大したことはできん
2013/09/24(火) 20:57:40.99
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
2013/09/24(火) 21:39:53.66
ネタスレはマ板でやれよ。
> Cの逆コンパイラはどこまで実現可能か
アフィサイト晒してんじゃねーよ。 内容もちょい微妙だし。
まず、アセンブリから C/C++ へのトランスレータは簡単だろ?
そっからどの程度 C/C++ らしい表現にするかが問題なんだろ?
何から手を付けてどういう順番でやるつもりなの。
> Cの逆コンパイラはどこまで実現可能か
アフィサイト晒してんじゃねーよ。 内容もちょい微妙だし。
まず、アセンブリから C/C++ へのトランスレータは簡単だろ?
そっからどの程度 C/C++ らしい表現にするかが問題なんだろ?
何から手を付けてどういう順番でやるつもりなの。
8片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/24(火) 22:00:04.49 まずは関数の切り分け(手元では入り口を解析する形でほぼ完了)。次は関数情報とスタックフレームの解析。
そして中間表現の定義と中間表現への変換。さらに構文解析と型情報の処理。
トランスレータって言ってもそんなに簡単じゃない。
リソースのダンプでいいのないか(オープンなの)?
そして中間表現の定義と中間表現への変換。さらに構文解析と型情報の処理。
トランスレータって言ってもそんなに簡単じゃない。
リソースのダンプでいいのないか(オープンなの)?
9片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/24(火) 22:13:52.02 関数には__cdecl、__stdcall、__pascal、__fastcall、単純ジャンプ関数の五種類あるんだけど、これをどうやって判別するかという問題がある。
遅延ロード情報の取り込みもしたい。ソース希望。
遅延ロード情報の取り込みもしたい。ソース希望。
2013/09/24(火) 22:17:55.08
OllyDbgじゃダメなんか
分かってる人には充分だろ
分かってる人には充分だろ
11片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/24(火) 23:05:03.62 ネタスレではありません。私は本気です。明日、OllyDbgのソースをDLしてみます。
CodeReverseは、NASMのコードを一部拝借しています。
多分、構文解析用のインクルードファイルが必要になると思います。
MinGWから頂くかも知れません。ライセンスはどうするか? アイコンのデザイン、洒落てるでしょ?
CodeReverseは、NASMのコードを一部拝借しています。
多分、構文解析用のインクルードファイルが必要になると思います。
MinGWから頂くかも知れません。ライセンスはどうするか? アイコンのデザイン、洒落てるでしょ?
2013/09/24(火) 23:06:25.98
できたらよんで。
2013/09/24(火) 23:17:17.38
>>11
> MinGWから頂くかも知れません。ライセンスはどうするか? アイコンのデザイン、洒落てるでしょ?
MinGWのソース使ったら、配布するときのライセンスはGPLになると思う。
一部パブリックドメインらしいけれど。
> MinGWから頂くかも知れません。ライセンスはどうするか? アイコンのデザイン、洒落てるでしょ?
MinGWのソース使ったら、配布するときのライセンスはGPLになると思う。
一部パブリックドメインらしいけれど。
2013/09/25(水) 00:34:40.81
アムロの親父みたいに俺の親父もボケてしまった。
たしかに昔はある分野で日本一の技能をもってた。俺の目標は親父だった。
今は硬い世界の殻に閉じこもってしまって、もはや日常会話しか通じない。
たしかに昔はある分野で日本一の技能をもってた。俺の目標は親父だった。
今は硬い世界の殻に閉じこもってしまって、もはや日常会話しか通じない。
2013/09/25(水) 02:11:22.19
うーむ、今のところこの世にまともなC/C++の逆コンパイラが
存在しない事を考えても片山程度の技術力で作れるとは思えんが・・・
存在しない事を考えても片山程度の技術力で作れるとは思えんが・・・
2013/09/25(水) 05:45:24.18
ま、なんかできたらまた呼んでくれ
17片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/25(水) 21:15:11.17 ヘッダファイルもプリプロセッサも要るから、単純にMinGWに寄生する形にします。
バージョンアップの度にいちいちでっかいファイルをダウンロードさせるのも不憫だから。
ライセンスはGPLになる予定です。
バージョンアップの度にいちいちでっかいファイルをダウンロードさせるのも不憫だから。
ライセンスはGPLになる予定です。
2013/09/25(水) 21:50:21.91
つーか、片山GUIはどうした?予想通り挫折したのか?
そんなんじゃ逆コンパイラなんてもっと無理だろ
そんなんじゃ逆コンパイラなんてもっと無理だろ
19片山博文MZコスモ ◆T6xkBnTXz7B0
2013/09/25(水) 22:56:47.40 自動車の命はエンジンでしょ。GUIは後で自由に作れるから。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】山上徹也被告に無期懲役を求刑 ★2 [Hitzeschleier★]
- 中国外務省「日本への渡航を控えて」→高市内閣の支持率はとくに下がらず…なぜ日本国民がこれほど「高市内閣」を応援するのか [♪♪♪★]
- 中国外務省「日本への渡航を控えて」→高市内閣の支持率はとくに下がらず…なぜ日本国民がこれほど「高市内閣」を応援するのか★2 [♪♪♪★]
- 「年収の壁」、178万円に引き上げで合意 自民・国民民主 [どどん★]
- 【赤坂“サウナ火災”30代夫婦死亡】サウナストーンでドア割ろうとした可能性 非常ボタン作動しなかったか ★4 [ぐれ★]
- 【高市首相】「日本人が日本各地を旅行するのも大切」 中国からの渡航自粛巡り ★6 [ぐれ★]
- えっ、ちょっと待って。高市早苗ってこのまま総理やめるまで日中関係悪化させたままでい続けるつもりなの!? [757453285]
- 【速報】山上徹也、無期懲役 ★2 [329329848]
- 【高市】サウナ死亡スレ「俺ならこうした!こうできた!」人生の重要な場面で失敗し続けたからこの板にいるくせに [834922174]
- 赤坂蒸し焼きサウナ、「とれたドアノブを取りつける」で扉が開いたと判明wwwwwwwwwwwwwwwwwwwwwwww🔥 [329329848]
- 2.2mmのパスタをナポリタン用に買ったんだけどめちゃくちゃまずくない? [848333321]
- 【悲報】トランプ政権、ベネズエラに対し「特別軍事作戦」を決行 [834922174]
