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.34352片山博文MZ ◆T6xkBnTXz7B0
2016/03/10(木) 19:08:02.83ID:xtkhTFvc 最新の仮想Ubuntu32bitと64bitをVMwareにインストール。
さらにclang-3.7とllvm-3.7をそれぞれにインストールして
俺のターンは終わりだ。
さらにclang-3.7とllvm-3.7をそれぞれにインストールして
俺のターンは終わりだ。
353片山博文MZ ◆T6xkBnTXz7B0
2016/03/10(木) 19:18:26.45ID:xtkhTFvc LLVMは型情報を完全には保持していないようだ。
Win32ではLONGとINTは同じサイズだが、それらのポインタ型は厳格に区別される。
しかしLLVM IRではどちらもi32となる。
つまり、LLVMやClangで構造体を読み込みその型をダンプしたとしても、
コンパイルできる代物にはならない。これでは逆コンパイラには
役に立たないのではないか? ここまで何か間違いがあれば、ご指摘願う。
Win32ではLONGとINTは同じサイズだが、それらのポインタ型は厳格に区別される。
しかしLLVM IRではどちらもi32となる。
つまり、LLVMやClangで構造体を読み込みその型をダンプしたとしても、
コンパイルできる代物にはならない。これでは逆コンパイラには
役に立たないのではないか? ここまで何か間違いがあれば、ご指摘願う。
354片山博文MZ ◆T6xkBnTXz7B0
2016/03/10(木) 19:46:26.45ID:xtkhTFvc Clangでは区別できてるんだから、LLVM IRよりも上位で保持しているはず。ならば、Clangで
構造体などの型情報をLLVM IRの上位でどのように扱っているかを調査しないといけないぞ。
構造体などの型情報をLLVM IRの上位でどのように扱っているかを調査しないといけないぞ。
355片山博文MZ ◆T6xkBnTXz7B0
2016/03/12(土) 22:12:12.37ID:PAxzfn3Q だいぶ解析が進んで来た。
おそらくキーワードは
clang::CompilerInstance,clang::Sema,clang::ASTContext,clang::Type
だろう。clangも大変再利用しやすい模範的なデザインになっており、
これらを組み合わせればclangの改造版が比較的容易に作れると思われる。
おそらくキーワードは
clang::CompilerInstance,clang::Sema,clang::ASTContext,clang::Type
だろう。clangも大変再利用しやすい模範的なデザインになっており、
これらを組み合わせればclangの改造版が比較的容易に作れると思われる。
356片山博文MZ ◆lx245xLQxvF1
2016/03/14(月) 15:23:13.72ID:+duuA6fB Clang-tutorialのmakefileのllvm-configをllvm-config-3.6に変えてメイクしてみた。
tutorial1.o: 関数 `main' 内:
/mnt/hgfs/cc/LLVM/Clang-tutorial/tutorial1.cpp:53: `llvm::sys::getDefaultTargetTriple()' に対する定義されていない参照です
なぜだ。。。分からぬ。
tutorial1.o: 関数 `main' 内:
/mnt/hgfs/cc/LLVM/Clang-tutorial/tutorial1.cpp:53: `llvm::sys::getDefaultTargetTriple()' に対する定義されていない参照です
なぜだ。。。分からぬ。
357片山博文MZ ◆T6xkBnTXz7B0
2016/03/14(月) 16:17:28.03ID:+duuA6fB いくら優れたライブラリでも、動かないと意味ない。。。
最新版をビルドしないといけないのか。。。
LLVMとClangのビルド、めっちゃ時間かかりそう。。。
最新版をビルドしないといけないのか。。。
LLVMとClangのビルド、めっちゃ時間かかりそう。。。
358片山博文MZ ◆T6xkBnTXz7B0
2016/03/15(火) 22:21:10.64ID:zLB+iwEH 仮想Ubuntuのディスク容量不足でビルド失敗。35GBくらいは必要か。
最初からやり直し。VMwareよりもVirtualBoxの方が使い易そうだ。
最初からやり直し。VMwareよりもVirtualBoxの方が使い易そうだ。
359片山博文MZ ◆T6xkBnTXz7B0
2016/03/24(木) 23:29:54.57ID:YnxOCpos VirtualBox上の仮想UbuntuでLLVM+Clangのビルドに成功した。
これでまずはスタートラインに立てた。可能ならば後で公開する。
これでまずはスタートラインに立てた。可能ならば後で公開する。
360片山博文MZ ◆T6xkBnTXz7B0
2016/03/24(木) 23:57:51.64ID:YnxOCpos 仮想環境のためか、ビルドに五日間かかった。電気代は高い請求額が来るだろう。
現在のオッズは低いが地道に頑張る。
現在のオッズは低いが地道に頑張る。
361片山博文MZ ◆T6xkBnTXz7B0
2016/03/25(金) 17:05:52.28ID:C4e13KV/ Ubuntu 14.04.4 LTS (64-bit)をインストール。ディスク容量50GB以上・メモリ2GB以上。
端末およびGhest Additions(仮想の場合のみ) インストール。
メモリが少ないときは、次のようにスワップ確保。
$ sudo dd if=/dev/zero of=/swap bs=400M count=16
$ sudo mkswap /swap
$ sudo swapon /swap
$ sudo gedit /etc/fstab
「/swap swap swap defaults 0 0」の行を最後に追加。
$ cat /proc/swaps
$ sudo apt update
$ sudo apt install build-essential
$ sudo apt install linux-headers-$(uname -r)
$ sudo apt install make
$ sudo apt install automake
$ sudo apt install cmake
$ sudo apt install subversion
$ sudo apt install gdb
$ sudo apt install perl
$ sudo apt install libtool
$ sudo apt install libncurses5-dev
$ sudo apt install valgrind
$ sudo apt install zlib1g-dev
$ sudo apt install libedit-dev
$ sudo apt install texinfo
$ sudo apt install python
$ sudo apt upgrade
端末およびGhest Additions(仮想の場合のみ) インストール。
メモリが少ないときは、次のようにスワップ確保。
$ sudo dd if=/dev/zero of=/swap bs=400M count=16
$ sudo mkswap /swap
$ sudo swapon /swap
$ sudo gedit /etc/fstab
「/swap swap swap defaults 0 0」の行を最後に追加。
$ cat /proc/swaps
$ sudo apt update
$ sudo apt install build-essential
$ sudo apt install linux-headers-$(uname -r)
$ sudo apt install make
$ sudo apt install automake
$ sudo apt install cmake
$ sudo apt install subversion
$ sudo apt install gdb
$ sudo apt install perl
$ sudo apt install libtool
$ sudo apt install libncurses5-dev
$ sudo apt install valgrind
$ sudo apt install zlib1g-dev
$ sudo apt install libedit-dev
$ sudo apt install texinfo
$ sudo apt install python
$ sudo apt upgrade
362片山博文MZ ◆T6xkBnTXz7B0
2016/03/25(金) 17:06:39.06ID:C4e13KV/ $ cd ~
$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
$ cd llvm/tools
$ svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
$ cd ../projects
$ svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
$ svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp
$ svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
$ svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
//$ svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
//$ sudo apt uninstall llvm clang llvm-3.6 clang-3.6 llvm-3.7 clang-3.7
$ cd ~
$ mkdir llvm-build
$ cd llvm-build
$ cmake -G "Unix Makefiles" ../llvm
$ make -j1
$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
$ cd llvm/tools
$ svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
$ cd ../projects
$ svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
$ svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp
$ svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx
$ svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi
//$ svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
//$ sudo apt uninstall llvm clang llvm-3.6 clang-3.6 llvm-3.7 clang-3.7
$ cd ~
$ mkdir llvm-build
$ cd llvm-build
$ cmake -G "Unix Makefiles" ../llvm
$ make -j1
363片山博文MZ ◆T6xkBnTXz7B0
2016/03/25(金) 23:58:54.73ID:ir49Z4lH >>361
訂正。ビルド&インストール成功のためにはディスクは100GB以上、
メモリーは8GB以上必要と思われる。
メモリーが充分あればスワップはデフォルトでOK。
ビルド時間を短くしたければ実機でのビルド推奨。
訂正。ビルド&インストール成功のためにはディスクは100GB以上、
メモリーは8GB以上必要と思われる。
メモリーが充分あればスワップはデフォルトでOK。
ビルド時間を短くしたければ実機でのビルド推奨。
364デフォルトの名無しさん
2016/03/26(土) 00:18:12.85ID:tYRw55R3 EXEファイル全般でやろうとしているの?
まずバイナリがどの開発環境で作ったのかを固定しないと。
どちらにしろ、理論上絶望的だから逆アセンブルはできても逆コンパイルは無理だよ。
JavaのクラスファイルもJavaでコンパイルされていたら逆コンパイラでほぼ完璧なソースをだせるけども、
LLJVMを使ったC言語がソースのLLVMからJavaクラスファイルに変換した物は逆コンパイルしても、何やっているのかよく分からない回りくどいJavaソースしか出て来ない。
同じJavaクラスファイルという中間言語形式であっても、開発言語が違えば逆コンパイルは期待通りのものにはならない。
それでもJavaやC#の中間言語ファイルは情報をいっぱい持っているから逆コンパイルしやすい。
EXEで実用的な逆コンパイラとか無理無理。
時間の無駄。他のことしたほうがいいよ。
絶対にできないから。
まずバイナリがどの開発環境で作ったのかを固定しないと。
どちらにしろ、理論上絶望的だから逆アセンブルはできても逆コンパイルは無理だよ。
JavaのクラスファイルもJavaでコンパイルされていたら逆コンパイラでほぼ完璧なソースをだせるけども、
LLJVMを使ったC言語がソースのLLVMからJavaクラスファイルに変換した物は逆コンパイルしても、何やっているのかよく分からない回りくどいJavaソースしか出て来ない。
同じJavaクラスファイルという中間言語形式であっても、開発言語が違えば逆コンパイルは期待通りのものにはならない。
それでもJavaやC#の中間言語ファイルは情報をいっぱい持っているから逆コンパイルしやすい。
EXEで実用的な逆コンパイラとか無理無理。
時間の無駄。他のことしたほうがいいよ。
絶対にできないから。
365片山博文MZ ◆T6xkBnTXz7B0
2016/03/27(日) 23:17:17.79ID:LtbWwOOV >>364
勝算は5%ほどある。型情報抽出と型推論を実現する策略を練っているところだ。
LVMでディスクを100GBに拡張。LLVM+Clangインストール成功。
VirtualBox仮想アプライアンスのエクスポートを完了して、俺のターンエンドだ。
勝算は5%ほどある。型情報抽出と型推論を実現する策略を練っているところだ。
LVMでディスクを100GBに拡張。LLVM+Clangインストール成功。
VirtualBox仮想アプライアンスのエクスポートを完了して、俺のターンエンドだ。
366デフォルトの名無しさん
2016/03/28(月) 00:07:35.29ID:QZ3CUIqY >>365
LLVMを逆コンパイルするソフトを作ろうとしているの?
LLVMを逆コンパイルするソフトを作ろうとしているの?
367片山博文MZ ◆T6xkBnTXz7B0
2016/04/09(土) 18:01:49.16ID:1rUso06b 臨時の仕事が入った。中断する。
368片山博文MZ ◆T6xkBnTXz7B0
2016/04/19(火) 20:05:26.73ID:QQhqd517 IMEの開発が正式に決まった。逆コンパイラの開発は、
IMEの開発が終わるまでお預けとなる。しばしお待ちを。
IMEの開発が終わるまでお預けとなる。しばしお待ちを。
369デフォルトの名無しさん
2016/05/01(日) 16:48:07.27ID:Ej3dzybx catcher
370デフォルトの名無しさん
2016/05/01(日) 17:16:58.92ID:tKi6j9CT 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
1@
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
1@
371デフォルトの名無しさん
2016/05/03(火) 22:14:50.99ID:0ryiHSlg なんかすごいな
プロの人なのかな?
プロの人なのかな?
372デフォルトの名無しさん
2016/06/04(土) 20:27:13.06ID:9azu721e catcher
373デフォルトの名無しさん
2016/07/07(木) 21:15:30.42ID:7FmYJwv7 catcher
374デフォルトの名無しさん
2016/08/01(月) 21:06:25.15ID:ltowomRu catcher
375デフォルトの名無しさん
2016/09/01(木) 11:42:26.12ID:Hkb7T/2S catcher
376片山博文MZ ◆T6xkBnTXz7B0
2016/10/01(土) 02:07:01.64ID:Ja0BXeAr RECという優れた逆コンパイラがあるので、CodeReverseにはもはや存在価値がない。
よって、このスレは 糸冬 了 し ま す 。
皆様、有難う御座いました。再利用可。
◆◆◆スレッド終了◆◆◆
よって、このスレは 糸冬 了 し ま す 。
皆様、有難う御座いました。再利用可。
◆◆◆スレッド終了◆◆◆
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【日独】「残業しない」「バカンスを取る」ドイツ人に、日本人は2倍働いても敵わない [七波羅探題★]
- 【値上げラッシュ】「ガリガリ君」値上げ、来年3月から90円に 前回の値上げは2024年 赤城乳業 [ぐれ★]
- 【サッカー】カズ、J3福島入り確実に!期限付き移籍で5年ぶりJ復帰 “還暦Jリーガー”誕生へ [征夷大将軍★]
- マイナ保険証「メリットなし」が最多 1.1万人調査で見えた“不安と様子見” ★2 [♪♪♪★]
- タワマンに戻りたい…子どものため郊外の庭付き一軒家に引っ越した世帯年収1,600万円の40代パワーカップル「心底後悔しています」 ★4 [樽悶★]
- カズレーザー「サンタクロースはいない」「買ってくれた親に感謝」発言に“視聴者から苦情”で「バカじゃねーの?って本当に思う」★2 [muffin★]
- 高市「中央アジアに3兆円投資するわよ!」普通の日本人「脱中国最高😍!こういうのが保守なんだよなぁ🤤」 [441660812]
- 1日1食しか食べてないが痩せない
- 識者「最近のサイゼリヤはクオリティーが落ちてきている。品質を劣化させるのではなく値上げを」 [663766621]
- 【画像】JKの間で「サナエ過ぎ」流行るWWWWWWWWWWWWWWWWWWWWWWWW
- 【悲報】神戸の夜景を写真に撮った結果wwwwww [963243619]
- 非童貞になったバキバキの童貞さんから童貞のみなさんにメッセージ
