トップページ⇒tech
94コメント23KB

バイナリからソースを解析できるソフト

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
誰か持ってませんか?
0002デフォルトの名無しさんNGNG
βακα..._φ(゚∀゚ )アヒャ
00032NGNG
         ∩ ∩ 
        〜| ∪ |         (´´  
        ヘノ  ノ       (´⌒(´  
       ((つ ノ⊃≡≡≡(´⌒;;;≡≡≡
         ̄ ̄ ̄(´⌒(´⌒;;

                  ズザーーーーーッ
0004デフォルトの名無しさんNGNG
ドゥーン!
0005デフォルトの名無しさんNGNG
   ∧∧
   /⌒ヽ)
  i三 ∪ アノォ……
 ○三 |    
  (/~∪
  三三
 三三
三三
0006デフォルトの名無しさんNGNG
下さいよ
0007デフォルトの名無しさんNGNG
ねえ
0008デフォルトの名無しさんNGNG
 \今だ、7GETォォォ!!/
      _______
      | .___ ..|  |
      | .|7| |7|  |  |
   ∧ ∧ .| |.!!| |  |  |
    (  ,,) .| | | |  |  |
   /  つ ̄ ̄ ̄  | ..::|
 〜(__). °°° | ::::|
   |__|  ̄ ̄ ̄ ̄ |..::::::|
    ||          .|::::::::|
    ||  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0009デフォルトの名無しさんNGNG
      _______
      | .___ ..|  |
      | .|7|.i |7|  |  (´´
   ∧ ∧ .| |!.!| (´⌒(⌒
    (  ,,) .| |7(´⌒;;;ズザー
   /  つ ̄ ̄ ̄  | ..::|
 〜(__). °°° | ::::|
   |__|  ̄ ̄ ̄ ̄ |..::::::|
    ||          .|::::::::|
    ||  ̄ ̄ ̄ ̄ ̄ ̄ ̄
0010デフォルトの名無しさんNGNG
単発質問でスレを立てないでください。

***すれ立てるまでもない質問はここで 第36刷***
http://pc2.2ch.net/test/read.cgi/tech/1051370263/
0011デフォルトの名無しさんNGNG
βακα..._φ(゚∀゚ )アヒャ

GWで5月病になってしまった引きこもりくんですか?>>1は
0012デフォルトの名無しさんNGNG
VCなら
link -DUMP /disasm hoge.exe
又は
dumpbin /disasm hoge.exe
0013デフォルトの名無しさんNGNG
CなりC++のソースを吐き出すやつキボン
0014デフォルトの名無しさんNGNG
そんな簡単にソースが漏れたら商売あがったり
0015デフォルトの名無しさんNGNG
まぁ絶対無理だな
0016デフォルトの名無しさんNGNG
クラス、構造体の名前とか関数名とかメンバ名とかが
よくわかんないユニークな記号とかでいいなら、
まず関数のエントリポイントを探って
データのフローを解析すれば、再コンパイル可能なソースコードを生成できそう。
激しく読みにくいし、労力にみあった成果はないだろうけど。
0017デフォルトの名無しさんNGNG
ソフトウェアが売れない時代になったらこういうソフト出るかも。
でもそんな時代ではそもそもソースを隠す必要ないのか。どうせ商品価値ないんだから。
0018デフォルトの名無しさんNGNG
藻前ら、デコンパイラぐらい嫉妬家。
0019デフォルトの名無しさんNGNG
逆コンパイルする時って、コンパイルしたソフトの癖とかわからないと無理じゃない??
そういうのの汎用性ってだせるもんなのかなー??
0020デフォルトの名無しさんNGNG
>>19
逆コンパイルって別に元のソースをそのまま復元するわけじゃないってこと、わかってる?
0021デフォルトの名無しさんNGNG
面白そうだね。
 作ったコンパイラを入れると、バイナリを比較しながら 完全に一致する綺麗なソースを復元とかしてくれたら楽しいな
0022デフォルトの名無しさんNGNG
妄想するだけのスレ
0023デフォルトの名無しさんNGNG
最適化の逆をどうやってするんだろうか。
0024デフォルトの名無しさんNGNG
だから >>21 なんだろ
0025デフォルトの名無しさんNGNG
>>24
で、複数のソースから最適化された同一のコードが吐き出される場合はどうするんだ?
0026デフォルトの名無しさんNGNG
>>25
前後含めてコンパイルして、一致する方を採用。
収束するまで繰り返すことになるが。
0027デフォルトの名無しさんNGNG
とりあえずageとく

逆コンパイラ Boomerang キタ━━(゚∀゚)━━ !!!!!
http://pc2.2ch.net/test/read.cgi/tech/1039271450/
0028デフォルトの名無しさんNGNG
>>26
NP問題になる罠
0029デフォルトの名無しさんNGNG
>>26
> 前後含めてコンパイルして、一致する方を採用。
> 収束するまで繰り返すことになるが。

だーかーらー、収束点が1つとは限らないでしょ。
特に最適化可能な場合は。
0030デフォルトの名無しさんNGNG
逆最適化オプションを指定。あほらしいが。
0031デフォルトの名無しさんNGNG
ソースプログラムを偽装してバイナリに埋め込むようなコンパイラを作って配布。
メジャーになるまでがんばれ >>1
0032デフォルトの名無しさんNGNG
>>29
類似度でスコアを付けて、一番高い物を採用ってあたりが現実的ではないかと。
最適化しなければ一回で集束すると思うけどね。

0033デフォルトの名無しさんNGNG
>>32
> 類似度でスコアを付けて、一番高い物を採用ってあたりが現実的ではないかと。

だーかーらー、
全く同一のオブジェクトコードを吐くソースコードが複数通り存在し得るんだよ。
同一のオブジェクトコードにスコア付けてどうするんだ?

> 最適化しなければ一回で集束すると思うけどね。

だーかーらー、
最適化するかどうかが問題じゃなくて、
最適化可能なソースであれば同一オブジェクトコードを吐くソースコードが他に存在するだろ?
0034デフォルトの名無しさんNGNG
スコアが同じなら、後は人間が選択すりゃ良いじゃん。
0035デフォルトの名無しさんNGNG
>>34
> スコアが同じなら、後は人間が選択すりゃ良いじゃん。

どうやって?全く同一のオブジェクトコードを吐く2つのソースから
どうやって正解を選ぶんだ? (ニヤニヤ
0036デフォルトの名無しさんNGNG
>>35
どっちでも良いじゃん。
正解なんてわからないんだから。
0037デフォルトの名無しさんNGNG
>>35
キモイヨ
0038デフォルトの名無しさんNGNG
逆に、コンパイル結果が同じになる もっとスマートな表現方法を教えてくれたり勉強になるじゃないか
0039デフォルトの名無しさんNGNG
そもそも
もとのソースに復元する必要ねーだろ・・・・
0040デフォルトの名無しさんNGNG
.NETならVB.NET と同じソースを吐く C# コードを教えてくれたりか?
0041デフォルトの名無しさんNGNG
水野です。こんばんわ♪
0042山崎渉NGNG
(^^)     
0043名無し@沢村NGNG
おまいらよ、逆コンパイラはな、オプションで言語が指定できるようでなくちゃダメだぞ!!
JavaとかCとかC++とかVBとかCOBOLとかSmellTalkとか自分の好みのソースに逆コンパイルできるようじゃなくちゃダメだよ。
また、ただべたでネイティブコードをソースに変換しただけじゃ読みにくくて何のことかわからんから、ちゃんと読みやすいように予約語は色付けしたり段落をつけたりコメントを入れたりする機能もつけなければならないよ。
復元したソースは元のソースと同じである必要はないが、それを再コンパイルしたらちゃんとそのソフトと同じように機能する必要はあるよ。
まあ、そこまでやればたとえ1万円のシェアにしても、たくさん買ってもらえると思うよ。
逆コンパイラの秘訣はわかりやすいソースと、再コンパイルしたとき同じ動作をするという二つだけだよ。
おまいらよ、頑張ってつくってみろ?
0044デフォルトの名無しさんNGNG
自分で作れよ
0045名無し@沢村NGNG
おまいらよ、逆コンパイラには再コンパイラも付属してなきゃならないよ。
たとえばC++で作成されたソフトをJavaに言語を変えて逆コンパイラし、そのJavaのソースをそのまま再コンパイルすれば、Javaのソフトができるわけだ。
またRadツールもついていて、コントロールなんかは、逆コンパイラしたときRadツールにも反映されるようにするといいよ。
そうすれば再コンパイルする前に、そのままRadツールをつかってコントロールの色や配置を変えることができるからね。
言語も変わって、コントロールの色や配置も変わってしまったら、誰もパクったソフトとはわからなくなるよ。
逆コンパイラにはこの「誰もパクったソフトとはわからなくなる」という要素も重要だよ。
そしたらみんな買うね♪頑張ってつくってみろ?
0046デフォルトの名無しさんNGNG
「予約語の色付けは逆コンパイラの仕事」と、、、 φメモメモ
0047デフォルトの名無しさんNGNG
名無し@沢村にレスすんな。調子に乗って馬鹿な長文を連続投稿し始める。
荒らしと一緒。沢村はデムパだけで十分。
0048名無し@沢村NGNG
おまいらよ、逆コンパイラだが、ソースをひとつのファイルにすると何が何だかわからなくなるからするな。
ネイティブコードがひとつのファイルになっていても、ソースをひとつのファイルにしたらダメだ。
おまいらよ、読みやすいようにファイル分割規則をつくって、そのソフトの規模に応じて、いくつかのファイルに分割しなければならないよ。
おまいらよ、読みやすいソースに逆コンパイラするには、こういった考慮も必要だよ。つくってみろ?
0049デフォルトの名無しさんNGNG
沢村は「decompiler」でぐぐってもいないのか。

http://www.decompiler.com/
http://www.itee.uq.edu.au/~cristina/dcc.html
http://www.decompiler.net/

英語も読めないんだろうけどな(プ
0050デフォルトの名無しさんNGNG
>>48
まずはお前の脳みそ逆コンパイルしてやるよ
0051デフォルトの名無しさんNGNG
>>50
何も出てきやしねぇよ
0052デフォルトの名無しさんNGNG
>>50
沢村の脳みそは NOP と HALT で動いています。
0053水野 朋子NGNG
水野です。おはようございます♪
0054名無し@沢村NGNG
おまいらよ、バイナリをソースに変換するにはマシン語を知る必要があるが、
マシン語のバイブルとしては、インテル・アーキテクチャ・ソフトウエア・デベロッパーズ・マニュアルがあるよ。
だが、これは上、中、下と三巻のPDFファイルに分かれており、全部ダウンロードするのは大変だよ。一巻が10MBくらうずつあるからな。
だが、おまいらよ、中巻の「命令セット・リファレンス」だけダウンロードすれば必要最低限の情報は得られるよ。
上巻の「基本アーキテクチャ」と下巻の「システム・プログラミングガイド」は知っておいたほうがいいことが書かれてはいるが、必須ではないよ。
つまり上巻と下巻は蛇足だよ。
おまいらよ、よろこべ、中巻の「命令セット・リファレンス」だけダウンロードすれば逆コンパイラやコンパイラ、逆アセンブラをつくる知識が得られるぞ!!
この情報はおれからのおまいらへのご褒美よ♪
0055デフォルトの名無しさんNGNG
>54
全部ダウンロードしたのか、ご苦労なことだ。
注文すれば日本でさえ無料で送ってくれるというのに。
0056名無し@沢村NGNG
おまいらよ、ひとつ教えてやろう。
手間隙をかけることだけが頭のよい人間への近道だよ。
ダウンロードを待っている時間に逆コンパイラなんてぱっとひらめいてしまうくらいだよ。
おまいらよ、そんな無料で手に入れたものが身につくわけないだろい!
いつのまにかたんすの肥やしになるのが関の山だよ。
0057デフォルトの名無しさんNGNG
沢村にレスする奴は荒らし。
0058デフォルトの名無しさんNGNG
>>54
サイズだけならなんてことないじゃん。
0059デフォルトの名無しさんNGNG
>>56
時間ってのは、どこにかけるかが重要なのだよ。
0060デフォルトの名無しさんNGNG
なんか必死なやつがいるな。
0061山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0062デフォルトの名無しさんNGNG
自分で作れよ
0063デフォルトの名無しさんNGNG
変数名とかは人工知能が考えてくれるの?
0064デフォルトの名無しさんNGNG
>>63
ネタとしてもつまんない。
0065デフォルトの名無しさんNGNG
ネイティブコードからバイトコードを生成位なら、アプリによってはできるかな?
自動移植?みたいな
0066デフォルトの名無しさんNGNG
まじれ巣すると Bz
0067デフォルトの名無しさんNGNG
ていうか、なんのソース?
0068デフォルトの名無しさんNGNG
HTML
0069デフォルトの名無しさんNGNG
>>68
想像するだけで吐きそう。
0070山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0071山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0072山崎 渉NGNG
(^^)
0073ハッカ飴NGNG
たとえ天才的プログラマーが理想的かつ完璧な逆コンパイラを作ったとしても、変数名は完全に失われてるんだろ?
おまけに一度コンピュータ向けに最適化されたものを戻すんだから、ソースの構造なんてメチャメチャになるんじゃないだろうか。

0074ハッカ飴NGNG
>>43
> JavaとかCとかC++とかVBとかCOBOLとかSmellTalkとか

Smell Talk が気になります
0075ん?NGNG
何を当たり前なことを。。。
そこから、新ソース起こすんだよ、分かりやすいように
0076デフォルトの名無しさんNGNG
Sourcer97は便利だったが当時使ってた486SX 25MHzでは動作が遅かった。
WinSourcerはさすがに無理があった。(CPU、メモリとも)
0077ハッカ飴NGNG
どうあがいても実行形式からじゃ無理。
情報が欠落してるんだから。
そもそもソースで変数名に〜の個数だとか〜の長さだとかいう名前をつけても、ただの数値に意味をこじつけているだけだろう。
それを戻すなんて無理。
0078デフォルトの名無しさんNGNG
>>77
名前なんかどうでもいいじゃん。
そんなくだらないことにこだわっているから
逆コンパイラが作れないと思い込んでしまうんだよ。
名前なんか忘れろ。AがBになろうがそんなことどうでもいい。
0079デフォルトの名無しさんNGNG
Z80 時代の逆アセンブラーには 変数を自分で指定するオプションがあったぜ。
ま、アドレス固定だけどさ。ロードした先頭アドレスがわかれば
相対アドレスから割り出して変数名を割り当てたりできないの?
0080閑散スレ閲覧者NGNG
Z80書いてた香具師に今のアドレッシングは分からないかも、、、
0081デフォルトの名無しさんNGNG
>>79
デバッグ情報付いてれば、そこから拾えるけど。
つーかCでautoな場合は固定されたアドレスがないわけだが。
0082ハッカ飴NGNG
>>78
ソースの読みやすさってかなり名前に頼ってないか?
名前がどうでもいいのなら、逆コンパイラは不可能とは言わないけど、出てきたソースの利用価値なんて無いんじゃないか?
0083デフォルトの名無しさんNGNG
>>82
名前は飾りでしかない。
そんなものばかり見ようとするから本質をつかめないんだ。
0084デフォルトの名無しさんNGNG
おおロミオ!あなたはどうしてロミオなの?
0085山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0086デフォルトの名無しさんNGNG
↑shine
0087デフォルトの名無しさんNGNG
おれ持ってるよ
誰かいる?
0088デフォルトの名無しさんNGNG
てか、DOSプロンプトでdebugってやって、DOSアセンブラコーディングモードに入って、
-ってでたら
U [開始アドレス] [終了アドレス]
で逆アセンブルか
D [開始アドレス] [終了アドレス]
でメモリダンプして味噌。
現在のメモリ占有中のファイルのアセンブラコードみれるよ。
-から>へはQで抜けられる。
0089デフォルトの名無しさんNGNG
ああ、妄想で食っていくわけにもいかず
生存競争に加わるしかないのか
もう40近いのに負け組確定
鹿沼みたいなマンカスにまで負けて
情けない
0090デフォルトの名無しさんNGNG
誤爆?
0091デフォルトの名無しさんNGNG
実行時に引数を入力しなければならないプログラムはどうやってdebugコマンドを使えばいいんでしょうか?
0092デフォルトの名無しさんNGNG
gdb --args program argument
0093デフォルトの名無しさんNGNG
>>91
実行中にアタッチしてDebugする。

プログラマじゃない初心者でつ。
デコンパイラを探して、ここにたどりつきました。
C++のいいのは、やっぱり高いでつね。。

メモリエディタ、デバッガは最低でも必需品。
0094デフォルトの名無しさんNGNG
逆コンパイラを自分で探せ
■ このスレッドは過去ログ倉庫に格納されています