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.34233デフォルトの名無しさん
2014/12/06(土) 14:51:26.56ID:+BigHZY2 catcher
234デフォルトの名無しさん
2014/12/21(日) 19:05:02.38ID:K4obGNjE catcher
235デフォルトの名無しさん
2014/12/29(月) 14:04:28.20ID:k/a0XR+r catcher
236片山博文MZ ◆T6xkBnTXz7B0
2014/12/30(火) 12:29:11.58ID:II8lCuST データフローの表現の問題が未解決。アイデアが見つかるまで時間が掛かりそうです。
237片山博文MZ ◆T6xkBnTXz7B0
2014/12/30(火) 16:43:47.63ID:II8lCuST dag (directed acyclic graph): 閉路のない有向グラフ。「グラフ理論」を参照。
基本ブロック (basic block): 途中で停止したり、分岐したりしない、連続した文の並び。
流れグラフ: 基本ブロックを制御の流れに従って矢印で結んだもの。
「基本ブロックのdag表現」とは、次のようなdag:
1.葉のラベルは一意な識別子。
2.内部節点のラベルは演算子。
3.さらに節点に識別子の並びのラベルを付けることができる。
基本ブロック (basic block): 途中で停止したり、分岐したりしない、連続した文の並び。
流れグラフ: 基本ブロックを制御の流れに従って矢印で結んだもの。
「基本ブロックのdag表現」とは、次のようなdag:
1.葉のラベルは一意な識別子。
2.内部節点のラベルは演算子。
3.さらに節点に識別子の並びのラベルを付けることができる。
238片山博文MZ ◆T6xkBnTXz7B0
2014/12/30(火) 18:02:49.41ID:II8lCuST この「内部節点」は、「節点内部」の誤訳だろうな
239デフォルトの名無しさん
2014/12/31(水) 00:57:28.36ID:BPGgSSnK 内部節点で正しいと思う
http://imd.naist.jp/~miyazaki/doshisha/data-algo/ad-3.pdf
・内部節点(internal node) 子を持つ節
・外部節点(external node) 葉(leaf) 子を持たない節
http://imd.naist.jp/~miyazaki/doshisha/data-algo/ad-3.pdf
・内部節点(internal node) 子を持つ節
・外部節点(external node) 葉(leaf) 子を持たない節
241デフォルトの名無しさん
2014/12/31(水) 12:23:17.69ID:UInHV6yl 『節点』に『内部』があると思っているのか?日本語からやり直せよチョソ
242片山博文MZ ◆T6xkBnTXz7B0
2014/12/31(水) 23:51:17.31ID:FQwLik9b243片山博文MZ ◆T6xkBnTXz7B0
2015/01/20(火) 14:29:08.20ID:xhQ1sKyb244片山博文MZ ◆T6xkBnTXz7B0
2015/01/31(土) 20:50:33.99ID:NOJeJgIt さあ、やるんだ
246片山博文MZ ◆T6xkBnTXz7B0
2015/02/01(日) 23:14:25.39ID:b1Drc9W3 DLLのリンク情報はどうやって抽出すればいい?
247片山博文MZ ◆T6xkBnTXz7B0
2015/02/06(金) 13:17:21.55ID:WUwVT1fs 完璧なCパーサーを作るのは大変だな。。。
https://github.com/katahiromz/DoWonders
https://github.com/katahiromz/DoWonders
248片山博文MZ ◆T6xkBnTXz7B0
2015/02/09(月) 20:31:33.92ID:002yDz5I 早くバグ取らないと怒鳴られるぞ。。。
249片山博文MZ ◆T6xkBnTXz7B0
2015/02/14(土) 12:15:44.30ID:gwH6zzLC250片山博文MZ ◆T6xkBnTXz7B0
2015/02/15(日) 13:18:57.14ID:YOxjOULg251デフォルトの名無しさん
2015/02/15(日) 13:30:33.98ID:VI4OFusP おうがんばれや
252デフォルトの名無しさん
2015/02/15(日) 17:20:09.52ID:BzeQi2NL へえ。結構やるじゃん。
253片山博文MZ ◆T6xkBnTXz7B0
2015/02/20(金) 04:31:21.76ID:hFZMHbko 今、リファクタリングとDBのサニタイズしてるとこ。いくつかサイズの間違いを見つけた。
構造体のサイズを正確に得るには、アライメントを考慮せねば。
構造体のサイズを正確に得るには、アライメントを考慮せねば。
254片山博文MZ ◆T6xkBnTXz7B0
2015/03/01(日) 19:08:40.80ID:b/Z6wEyz A「では、進捗報告を」
B「アライメントの扱いに案外手こずり、まだDBのサニタイズが終わっていません」
A「時間が掛かりすぎだ!いつになったらできるんだ!(机を叩く)」
B「申し訳ございません。」
A「アライメントの規則性を分析して早くサニタイズしなさい」
B「御意」
B「アライメントの扱いに案外手こずり、まだDBのサニタイズが終わっていません」
A「時間が掛かりすぎだ!いつになったらできるんだ!(机を叩く)」
B「申し訳ございません。」
A「アライメントの規則性を分析して早くサニタイズしなさい」
B「御意」
255片山博文MZ ◆T6xkBnTXz7B0
2015/03/04(水) 12:32:04.66ID:wAAd8cV7256片山博文MZ ◆T6xkBnTXz7B0
2015/03/05(木) 21:51:27.28ID:rUbEobY5 型情報のload/saveを可能にしなきゃ。
定数の"typed value"計算を可能にしなきゃ。
定数の"typed value"計算を可能にしなきゃ。
257片山博文MZ ◆T6xkBnTXz7B0
2015/03/06(金) 16:43:14.93ID:Utx2vhNJ 今、typed valueの実装をやってるけど、型によって場合分けが
必要だから、「場合分けの化け物」になっちゃうんだよな。
関数型ならもっとスマートに書けそうだが。。。
必要だから、「場合分けの化け物」になっちゃうんだよな。
関数型ならもっとスマートに書けそうだが。。。
258デフォルトの名無しさん
2015/03/14(土) 20:28:31.86ID:V/kJuq3g 2ちゃんねるおわた
NEXT行きましょ
NEXT
NEXT行きましょ
NEXT
259片山博文MZ ◆T6xkBnTXz7B0
2015/03/15(日) 13:48:43.55ID:wj0oyall マクロから一部の定数を抜き出すのを実装してみた。
定数全部を抽出するには、
マクロの展開とパースとtyped valueの実装が必要みたいだ。
https://github.com/katahiromz/DoWonders
定数全部を抽出するには、
マクロの展開とパースとtyped valueの実装が必要みたいだ。
https://github.com/katahiromz/DoWonders
260片山博文MZ ◆T6xkBnTXz7B0
2015/03/19(木) 13:04:51.09ID:JLKczW+H261片山博文MZ ◆T6xkBnTXz7B0
2015/03/19(木) 15:29:38.48ID:rGfQi3lS バグ発見。ケアレスミスだった。
262片山博文MZ ◆T6xkBnTXz7B0
2015/03/22(日) 14:04:56.12ID:0xruUqhc263片山博文MZ ◆T6xkBnTXz7B0
2015/03/23(月) 17:04:35.45ID:iTA2cPA1 A「では、進捗報告を」
B「後はマクロ展開を実装すれば、次のステージに進めます。」
A「それはできるのか?」
B「今、QZというハッカーにマクロ展開実装を依頼していますが、
返答がありません。何とか自力でできないか模索している処です」
A「来週の日曜日までに急いでやれ。頼んだぞ」
B「後はマクロ展開を実装すれば、次のステージに進めます。」
A「それはできるのか?」
B「今、QZというハッカーにマクロ展開実装を依頼していますが、
返答がありません。何とか自力でできないか模索している処です」
A「来週の日曜日までに急いでやれ。頼んだぞ」
264デフォルトの名無しさん
2015/03/24(火) 01:57:06.17ID:CghrDXfy まあ頑張れ、せいぜい利用させてもらうぜオッサン
265デフォルトの名無しさん
2015/03/25(水) 08:14:43.78ID:UQSzKjlW 俺の興味がどこにあるかお前はよく知っているはずだが?
あの証明は飛躍があるから埋めておけ参考書もそうならその参考書は捨てたほうがいい
あの証明は飛躍があるから埋めておけ参考書もそうならその参考書は捨てたほうがいい
267デフォルトの名無しさん
2015/03/25(水) 18:23:14.55ID:0ab+jORs 敗北宣言乙www
269片山博文MZ ◆T6xkBnTXz7B0
2015/03/25(水) 20:18:57.15ID:0It7vtDM 宿題スレを荒らしてたのは俺じゃねーぜ。勘違いするな、Qzさん
270デフォルトの名無しさん
2015/03/25(水) 21:57:58.65ID:0ab+jORs 反応を待たずにレスをして何を焦っているのかな?www
271片山博文MZ ◆T6xkBnTXz7B0
2015/03/25(水) 22:43:10.00ID:0It7vtDM あの宿題はQzが居なくてもできるよ
272デフォルトの名無しさん
2015/03/25(水) 23:56:31.13ID:0ab+jORs ちゃんと"さん"をつけろよ若僧
273デフォルトの名無しさん
2015/03/26(木) 00:14:21.84ID:by79hXzC before: 宿題スレを荒らしてたのは俺じゃねーぜ。勘違いするな、Qzさん
v
after:あの宿題はQzが居なくてもできるよ
ウリのすぐバレる嘘ニダwww
v
after:あの宿題はQzが居なくてもできるよ
ウリのすぐバレる嘘ニダwww
274片山博文MZ ◆T6xkBnTXz7B0
2015/03/26(木) 01:50:45.61ID:H3hSXcrb 少なくともお下品な発言はしていない。
275デフォルトの名無しさん
2015/03/26(木) 02:31:26.49ID:KfdRsObn Qzさんだって下品な発言はしないし、大体お前のようにすぐバレる嘘をつくほどマヌケじゃない。
276片山博文MZ ◆T6xkBnTXz7B0
2015/03/29(日) 17:36:15.54ID:v4NwZmHf277片山博文MZ ◆T6xkBnTXz7B0
2015/03/29(日) 17:39:38.81ID:v4NwZmHf マクロ定数が正しく読み込めなければ、Win32 APIとは言えないので、
何とかがんばっているところ。
何とかがんばっているところ。
278片山博文MZ ◆T6xkBnTXz7B0
2015/04/01(水) 13:41:40.89ID:bTV2IHQs 2015年4月1日
Wonders API公開。
(動画) こんにちは、Wonders APIです
http://youtu.be/MSs4vto5u18
(Movie) Hello, this is Wonders API.
https://youtu.be/TvQZwOMPc8s
公式サイト
http://katahiromz.esy.es/wonders/
GitHubレポジトリ
https://github.com/katahiromz/DoWonders
Wonders API公開。
(動画) こんにちは、Wonders APIです
http://youtu.be/MSs4vto5u18
(Movie) Hello, this is Wonders API.
https://youtu.be/TvQZwOMPc8s
公式サイト
http://katahiromz.esy.es/wonders/
GitHubレポジトリ
https://github.com/katahiromz/DoWonders
279片山博文MZ ◆T6xkBnTXz7B0
2015/04/01(水) 13:55:05.94ID:bTV2IHQs いざ、第二ステージへ進め
280デフォルトの名無しさん
2015/04/03(金) 23:48:07.06ID:Nu5+KNg9 がんばれー
このスレから出てこないでね^^
このスレから出てこないでね^^
281デフォルトの名無しさん
2015/04/04(土) 00:02:02.48ID:vxW5Ds1X 47氏は崇拝されていたが、片山は軽蔑される
人格上の問題なのではないか?
人格上の問題なのではないか?
282デフォルトの名無しさん
2015/04/04(土) 18:35:11.56ID:AbppvLIl 片山ウザい氏ね
283デフォルトの名無しさん
2015/04/08(水) 00:10:56.21ID:yyUMrqSU こいつがあちことで出没するとスレが過疎るからやめてほしい
284片山博文MZ ◆T6xkBnTXz7B0
2015/04/08(水) 22:14:13.74ID:GMSIP3gO 約束のdeadlineは五月一日。それまでにWonders API Webを完成しないといけない。
285片山博文MZ ◆T6xkBnTXz7B0
2015/04/11(土) 21:01:51.44ID:ArDgKFW5 今、複合値とデータのバイナリーダンプのサポートに取り組
んでいるところ。明日、リリースの予定。
んでいるところ。明日、リリースの予定。
286片山博文MZ ◆T6xkBnTXz7B0
2015/04/12(日) 16:04:08.09ID:W8Ttx0kU287片山博文MZ ◆T6xkBnTXz7B0
2015/04/12(日) 17:44:44.25ID:Q9tFpytA288片山博文MZ ◆T6xkBnTXz7B0
2015/04/19(日) 19:24:52.19ID:Kws6M3Sz 株価が下がってる。動かない方がいいかな。
289片山博文MZ ◆T6xkBnTXz7B0
2015/05/02(土) 19:19:00.58ID:gAnCVUja Wonders APIをCodeReverseに取り込んで、CodeReverseのCパース箇所を破棄だ。
これでCodeReverseで型情報が使える。
GWにネットカフェが空いてないから、更新が遅くなるかも。
これでCodeReverseで型情報が使える。
GWにネットカフェが空いてないから、更新が遅くなるかも。
290片山博文MZ ◆T6xkBnTXz7B0
2015/05/03(日) 10:32:26.72ID:EPJ3sWKW よし、x86アセンブリを読みまくって勉強するぜ!
291片山博文MZ ◆T6xkBnTXz7B0
2015/05/05(火) 13:34:39.52ID:p1RbtT4Y CPU貸そうか?
292片山博文MZ ◆T6xkBnTXz7B0
2015/05/05(火) 17:34:29.60ID:p1RbtT4Y CPUレジスターや仮想的なアドレス空間の任意の抽象的な場所にアクセスするための全射なアドレスを文字列で表現する。
expressed address、略してexpr_addr。
expr_addrを解決すると未知の値、シンボル、もしくは具体的な値が得られる。
また、expr_addrから型の集合への写像を作ることができる。
expressed address、略してexpr_addr。
expr_addrを解決すると未知の値、シンボル、もしくは具体的な値が得られる。
また、expr_addrから型の集合への写像を作ることができる。
293片山博文MZ ◆T6xkBnTXz7B0
2015/05/05(火) 17:47:11.75ID:p1RbtT4Y 値の集合とシンボルの集合と型の集合が存在する。
値やシンボルはその格納場所(storage)によって類別できる。
格納場所は、スタック、ヒープ、レジスター、実行可能コード領域、その他のデータ領域などが挙げられる。
expr_addrから値やシンボルへの写像が存在する。
expr_addrから格納場所への写像が存在する。
値やシンボルはその格納場所(storage)によって類別できる。
格納場所は、スタック、ヒープ、レジスター、実行可能コード領域、その他のデータ領域などが挙げられる。
expr_addrから値やシンボルへの写像が存在する。
expr_addrから格納場所への写像が存在する。
294片山博文MZ ◆T6xkBnTXz7B0
2015/05/05(火) 18:06:31.59ID:p1RbtT4Y では、expr_addrの具体的な定義を決めよう。
(ea.1) expr_addrが数値ならばexpr_addrはexpr_addrが表す値の仮想アドレスを指し示す。
(ea.2) expr_addrがレジスターの名前ならばexpr_addrはそのレジスターの値が表す仮想アドレスを指す。
(ea.3) expr_addrが__cr.xxx[yy]といった文字列ならば、__cr.の後のxxxはストレージの名前であり、expr_addrはストレージxxxの(yy+1)バイト目を指し示す。
ここに、yyはexpr_addrである。
(ea.4) expr_addrに演算子+,-,*が含まれていれば、普通にexpr_addr上で足し算、引き算、掛け算を行う。
(ea.1) expr_addrが数値ならばexpr_addrはexpr_addrが表す値の仮想アドレスを指し示す。
(ea.2) expr_addrがレジスターの名前ならばexpr_addrはそのレジスターの値が表す仮想アドレスを指す。
(ea.3) expr_addrが__cr.xxx[yy]といった文字列ならば、__cr.の後のxxxはストレージの名前であり、expr_addrはストレージxxxの(yy+1)バイト目を指し示す。
ここに、yyはexpr_addrである。
(ea.4) expr_addrに演算子+,-,*が含まれていれば、普通にexpr_addr上で足し算、引き算、掛け算を行う。
295片山博文MZ ◆T6xkBnTXz7B0
2015/05/05(火) 18:49:16.52ID:p1RbtT4Y x86/x64のスタックは逆向きに成長するから、__cr.stackは特別扱いしなければならない。
296片山博文MZ ◆T6xkBnTXz7B0
2015/05/05(火) 19:59:48.40ID:p1RbtT4Y297片山博文MZ ◆T6xkBnTXz7B0
2015/05/06(水) 22:49:06.45ID:ROM3ZfOK コンパイラーなら型情報と構文に基づいてレジスター割り付けを行って、アセンブリを出力する。
逆コンパイラーはアセンブリから、オペランドと仮想アドレスに仮想的な値と
型を割り付け、それらを定数・変数・実引数・仮引数に抽象化し、式と構文を構築し、ソースを出力する。
逆コンパイラーはアセンブリから、オペランドと仮想アドレスに仮想的な値と
型を割り付け、それらを定数・変数・実引数・仮引数に抽象化し、式と構文を構築し、ソースを出力する。
298片山博文MZ ◆T6xkBnTXz7B0
2015/05/06(水) 23:19:53.32ID:ROM3ZfOK callの引数は関数アドレスであるから、それがAPI関数であれば、実引数や戻り値に型情報を付加できる。
代入においては同一の値になるオペランドが現れる。このとき、型も同一になる可能性が高い。
このようにオペランドや仮想アドレスやレジスターに型情報を再帰的に付加していく。
代入においては同一の値になるオペランドが現れる。このとき、型も同一になる可能性が高い。
このようにオペランドや仮想アドレスやレジスターに型情報を再帰的に付加していく。
299片山博文MZ ◆T6xkBnTXz7B0
2015/05/06(水) 23:32:41.79ID:ROM3ZfOK 仮想アドレス空間の状態は、プログラムの進行に従って遷移していく。
状態が変わる様子を再現するには、仮想マシンを作って動かしてみるのが、一番合理的だ。
状態が変わる様子を再現するには、仮想マシンを作って動かしてみるのが、一番合理的だ。
300片山博文MZ ◆T6xkBnTXz7B0
2015/05/06(水) 23:42:33.96ID:ROM3ZfOK 仮想マシンを動かすなら、アセンブリか中間言語のどちらのレイヤーで動かすべきか?
中間言語で動かすならば、アセンブリの情報をほとんどすべて中間言語に移行しなければならない。
中間言語で動かすならば、アセンブリの情報をほとんどすべて中間言語に移行しなければならない。
301片山博文MZ ◆T6xkBnTXz7B0
2015/05/07(木) 14:46:37.77ID:Eo5kGFlR GW明けて、ひさしぶりに更新。
CodeReverse
https://github.com/katahiromz/CodeReverse
Wonders API
http://katahiromz.esy.es/wonders/
CodeReverse
https://github.com/katahiromz/CodeReverse
Wonders API
http://katahiromz.esy.es/wonders/
302片山博文MZ ◆T6xkBnTXz7B0
2015/05/08(金) 19:46:46.08ID://zzhYF7 両方のレイヤーでやれってか? なら、2種類の仮想マシンを作らにゃあかんべえ。んだんだ。
303片山博文MZ ◆T6xkBnTXz7B0
2015/05/09(土) 02:41:25.84ID:IBcmzD7P 要件定義はもっと数学的に。。。
304片山博文MZ ◆T6xkBnTXz7B0
2015/05/09(土) 19:04:28.04ID:IBcmzD7P 要件定義をよく考えると、中間言語パーサーは不必要と判断した。
305片山博文MZ ◆T6xkBnTXz7B0
2015/05/10(日) 15:22:46.73ID:DYHSUNsH いや、中間言語パーサーは必要。パーサーがなければ、アセンブリのでっかいアーキテクチャを
ハードコーディングしなきゃいけなくなる。恐らく中間言語はアトリビュートベースになる。
ハードコーディングしなきゃいけなくなる。恐らく中間言語はアトリビュートベースになる。
306片山博文MZ ◆T6xkBnTXz7B0
2015/05/10(日) 15:52:17.96ID:DYHSUNsH 中間言語では、新しい値ができるたびに明示的にそのインスタンスを宣言する。
インスタンスは型情報、入出力に関する情報、値やアドレスを表す式などの属性を持つ。
インスタンスは型情報、入出力に関する情報、値やアドレスを表す式などの属性を持つ。
307片山博文MZ ◆T6xkBnTXz7B0
2015/05/10(日) 23:19:17.50ID:DYHSUNsH アーキテクチャを中間言語のデータで表現しないといけない。
中間言語の設計も完成していないのに。。。!
中間言語の設計も完成していないのに。。。!
308片山博文MZ社外取補 ◆T6xkBnTXz7B0
2015/05/15(金) 19:04:30.75ID:hBLf1mma たぶん、値を宣言してそれらに変数を割り当ててくという考え方は間違ってない。
これでうまく行きそうだ。
これでうまく行きそうだ。
309片山博文MZ ◆T6xkBnTXz7B0
2015/05/17(日) 16:50:06.36ID:9xJgx9ER https://github.com/katahiromz/CodeReverse
ファイルarch_x32.datを追加した。
このファイルにx86アセンブリから中間コードへの変換方法を記述する。
不完全。
ファイルarch_x32.datを追加した。
このファイルにx86アセンブリから中間コードへの変換方法を記述する。
不完全。
310片山博文MZ ◆T6xkBnTXz7B0
2015/05/18(月) 23:19:00.85ID:GE/vKBW3 我に力と自由時間を与えたまえ!(画面がパパっと2回点滅)
311片山博文MZ ◆T6xkBnTXz7B0
2015/05/21(木) 17:40:24.92ID:Dn/bDwTc きれいなデータ作るの大変だ。。。
312片山博文MZ ◆T6xkBnTXz7B0
2015/05/24(日) 10:54:19.49ID:DJktPktd313片山博文MZ ◆T6xkBnTXz7B0
2015/05/24(日) 11:08:32.59ID:DJktPktd トップにarch_x86.dat/arch_x64.datという二つのファイルを用意したから、
これを元にして、アセンブリを中間言語に逐次翻訳する。
翻訳方法は、基本的にパターンマッチを基本とする。
これを元にして、アセンブリを中間言語に逐次翻訳する。
翻訳方法は、基本的にパターンマッチを基本とする。
314片山博文MZ ◆T6xkBnTXz7B0
2015/05/24(日) 17:02:17.64ID:tHPLTcxB 翻訳の戦略について。
まず、前述の翻訳辞書データを読み込み、パースする。
次に全体を走査して、邪魔者を消す。nopやmov ax,axやlea eax,[eax]の
ような、人間にとって無意味な命令を全部取り除く。
さらに全体を走査して、技巧的な命令を「標準語」に直す。
さらにさらに逐次的にパターンマッチしたものを次々と翻訳していく。
この戦略がうまく行けば、アセンブリはすべて中間言語に翻訳される。
まず、前述の翻訳辞書データを読み込み、パースする。
次に全体を走査して、邪魔者を消す。nopやmov ax,axやlea eax,[eax]の
ような、人間にとって無意味な命令を全部取り除く。
さらに全体を走査して、技巧的な命令を「標準語」に直す。
さらにさらに逐次的にパターンマッチしたものを次々と翻訳していく。
この戦略がうまく行けば、アセンブリはすべて中間言語に翻訳される。
315片山博文MZ ◆T6xkBnTXz7B0
2015/05/25(月) 13:43:46.90ID:IMA5vj+0 https://github.com/katahiromz/CodeReverse
流れグラフができた。リーダーのみ、ラベルを出力するようにした。
CR_ICode32, CR_ICode64を追加した。中間言語の定義とパースに移る。
流れグラフができた。リーダーのみ、ラベルを出力するようにした。
CR_ICode32, CR_ICode64を追加した。中間言語の定義とパースに移る。
316片山博文MZ ◆T6xkBnTXz7B0
2015/05/25(月) 14:34:58.39ID:IMA5vj+0 こういう翻訳処理の過程は、「ステージ」という考え方でとらえるとわかりやすい。
たとえば、ステージ0が逆アセンブルしていない状態。
ステージ1が逆アセンブルした状態。ステージ2が中間言語に翻訳された状態。
ステージ0→ステージ1→ステージ2→...
逆アセンブルしていないコードが現れた場合などでは、その部分ではステージを戻って処理しないといけない。
たとえば、ステージ0が逆アセンブルしていない状態。
ステージ1が逆アセンブルした状態。ステージ2が中間言語に翻訳された状態。
ステージ0→ステージ1→ステージ2→...
逆アセンブルしていないコードが現れた場合などでは、その部分ではステージを戻って処理しないといけない。
317片山博文MZ ◆T6xkBnTXz7B0
2015/05/25(月) 15:12:05.33ID:IMA5vj+0 https://github.com/katahiromz/CodeReverse
>>316の考え方に基づいて、CR_DecompInfo32::GetFuncStageを追加した。
DisAsm32の前処理をPrepareForDisAsm32に分離した。
>>316の考え方に基づいて、CR_DecompInfo32::GetFuncStageを追加した。
DisAsm32の前処理をPrepareForDisAsm32に分離した。
318片山博文MZ ◆T6xkBnTXz7B0
2015/05/25(月) 17:28:38.36ID:LQzNccs7 本格的なプログラム言語の設計は初めてだが、やれることはやってみよう。
319片山博文MZ ◆T6xkBnTXz7B0
2015/05/26(火) 20:34:04.58ID:4TU/edTg アドレッシングの複雑性を乗り越えてオペランドをパターンマッチするんだ!!!
320デフォルトの名無しさん
2015/05/29(金) 14:46:50.24ID:08TmNpAe 中間状態をベタテキストで表現する気か
321片山博文MZ ◆T6xkBnTXz7B0
2015/05/29(金) 14:59:26.15ID:huri9Ebb https://github.com/katahiromz/CodeReverse
Coding.cppにCrParamPatternMatchを追加した。
CrParamPatternMatchはパラメーターの抽象化されたコードの
パターンマッチを行う重要な関数だ。
>>320 仮想化のため。
Coding.cppにCrParamPatternMatchを追加した。
CrParamPatternMatchはパラメーターの抽象化されたコードの
パターンマッチを行う重要な関数だ。
>>320 仮想化のため。
322片山博文MZ ◆T6xkBnTXz7B0
2015/05/31(日) 13:09:28.79ID:7/EzM6AH https://github.com/katahiromz/CodeReverse
CodeReverse.hをCommon.hに改名。Testing.cppを追加。
Testing.cppで$0, $1, ...のパターンマッチを実証。
中間言語の名前がiCodeに決まった。これからiCodeを具体的に設計する。
CodeReverse.hをCommon.hに改名。Testing.cppを追加。
Testing.cppで$0, $1, ...のパターンマッチを実証。
中間言語の名前がiCodeに決まった。これからiCodeを具体的に設計する。
323片山博文MZ ◆T6xkBnTXz7B0
2015/05/31(日) 13:46:34.69ID:7/EzM6AH324片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 00:15:52.18ID:szDYpocA Java to C++ converter面白そう
ちょっと中断して読んでみるよ
ちょっと中断して読んでみるよ
325片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 00:30:07.35ID:szDYpocA GitHubにマルチ環境の要望があるが、アーキテクチャを仮想化・プラグイン化するのは面倒くさ。
Windows .exe以外のフォーマット知らないし。LinuxやMacって何? 今はexploitが欲しいだけ。
Windows .exe以外のフォーマット知らないし。LinuxやMacって何? 今はexploitが欲しいだけ。
326片山博文MZ ◆T6xkBnTXz7B0
2015/06/21(日) 00:38:25.90ID:szDYpocA 分かったよ、勉強すりゃあいいんだろ? でも真夜中は監視役が居るからダメ。
パソコンはインターネットにつながってないし、家の構造が昭和時代だからな。
本当は24時間パソコンしたいんだ。
パソコンはインターネットにつながってないし、家の構造が昭和時代だからな。
本当は24時間パソコンしたいんだ。
327デフォルトの名無しさん
2015/06/22(月) 09:59:26.27ID:Cd6p9ZPV 昔LightConeとかいう基地外がいたが片山とよく似ているな
スレと関係ない雑談や脈絡もない妄言とか。
スレと関係ない雑談や脈絡もない妄言とか。
328デフォルトの名無しさん
2015/06/24(水) 06:25:31.35ID:B9zFFoB0 日記スレ
329デフォルトの名無しさん
2015/07/21(火) 01:49:23.11ID:PRXZAEwH catcher
330片山博文MZ ◆T6xkBnTXz7B0
2015/07/31(金) 16:19:13.79ID:VnmYQE5l 何か、forkやstarが増えてきたぞ。。。
やらないとまずいかな。。。
やらないとまずいかな。。。
331デフォルトの名無しさん
2015/08/11(火) 23:30:28.66ID:3zaQ4vWk 逆コンパイルって解が無数にあるから
例えばナイーブな逆コンパイルは、Cでアセンブラをエミュレーションすることだし
他にもインライン展開されたコードは展開後として逆コンパイルするのか
展開前として逆コンパイルするのかとか
だからなんらかの人間にとっての読みやすさを定義して
無数の解の中でなるべく読みやすい解をどれか一つ選ぶっていう風にするのが
方向性だと思った
例えばナイーブな逆コンパイルは、Cでアセンブラをエミュレーションすることだし
他にもインライン展開されたコードは展開後として逆コンパイルするのか
展開前として逆コンパイルするのかとか
だからなんらかの人間にとっての読みやすさを定義して
無数の解の中でなるべく読みやすい解をどれか一つ選ぶっていう風にするのが
方向性だと思った
■ このスレッドは過去ログ倉庫に格納されています
