2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

EXEファイルをプログラムに戻す方法

1 :勉強家:01/10/13 01:02
私、プログラムをの勉強しているのですが、本を見てもわかりません。
それで、フリーゲームやフリーソフト(EXEファイル)の中身を見たくて、C言語やVBに変換するとうまくいきません。
どなたか、戻す方法を教えてください。それともできないのでしょうか。

2 :デフォルトの名無しさん:01/10/13 01:05
ネタUzeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!

3 :デフォルトの名無しさん:01/10/13 01:19
マジレス。
プログラミングが分からないやつが他人のソースを見ても意味がない。
逆に混乱するだろう。
おとなしく、他人が作ったゲームで遊びたまえ。

それでも見たいんならヨローパのウェブサイト見れ。

4 :デフォルトの名無しさん:01/10/13 01:22
??v??????????ホ????.???????????????ヘ???g???????w?????

5 :デフォルトの名無しさん:01/10/13 01:27
メモ帳にドラッグ&ドロップ
ちなみにサル並の脳だと、文字化けするそうです
よく能力テストに使われてます

6 :デフォルトの名無しさん :01/10/13 01:30
802様に聞いてください。

7 :デフォルトの名無しさん:01/10/13 01:43
アセンブラになら戻せます。
デバッガでトレースしてみてください。
ただしラベルは見えません。
あとデータとコードの区別も自分でやってください。

8 :デフォルトの名無しさん:01/10/13 02:30
水野朋子さんという人に聞いてください。
VB のエキスパートです。

9 : :01/10/13 02:54
EXEにソースとつけておけばだいじょうV。

10 :デフォルトの名無しさん:01/10/13 03:45
> フリーソフト(EXEファイル)の中身を見たくて、
> C言語やVBに変換するとうまくいきません。

全くもって意味不明
"見たくて"は理解できる。
"VBに変換すると"って、変換方法を知ってるけど失敗してるって事か?
それとも、お前の言語マトリックスに障害が発生しているのか?

11 :9:01/10/13 04:38
>10
ごめんなさい。 9は、
EXEにソース"を"つけておけばだいじょうV。
でした。

12 :デフォルトの名無しさん:01/10/13 13:54
ていうか、EXEファイルは既にプログラムなのでそれ以上戻しようがないと思われ

13 :デフォルトの名無しさん:01/10/13 13:55
中身を見るならバイナリエディタを使えば楽勝!(・∀・b

14 :デフォルトの名無しさん:01/10/13 14:15
何故か>>11>>9>>10にレスしていてwarata

15 :デフォルトの名無しさん:01/10/13 14:57
簡単です。拡張子.exeを.cや.basや.cppにするだけです。
パスカルで見たければ.pです。

16 :デフォルトの名無しさん:01/10/13 16:47
お湯をかける。これ定説。

17 :デフォルトの名無しさん:01/10/13 18:30
コンパイラとは何か。プログラミング言語とは何か。コンピュータはどうやって動いているか。
実行形式とは何か。

この辺を調べてみよ〜。

18 :デフォルトの名無しさん:01/10/13 18:42
1ではないですが
でも、理論的に考えると復元が不可能なはずはないよね。

蝶々簡単なプログラムなら変換可能になったりしないのでしょうか?

機械語<- ->アセ<- ->高級言語

そういう実例を扱ったページってどこかにないですか?

19 :デフォルトの名無しさん:01/10/13 18:44
その前に
EXEファイル、プログラム
題名に使ったこの二つの単語の意味を知れ

20 :デフォルトの名無しさん:01/10/13 18:47
僕は最近プログラムを勉強しはじめた者ですが
一度コンパイルされたものは決して復元しえないと
口をすっぱくして教えられました。ええ。それだけです。。

21 :デフォルトの名無しさん:01/10/13 18:52
>最近プログラムを勉強しはじめた者
はそう思っておいてよいでしょうん。

自分でコンパイラを作れる人もいるのだから
モノによっては復元可能かと思うが・・・

22 :デフォルトの名無しさん:01/10/13 19:11
復元は無理だね

再度コンパイルすれば似たような動きをするアセンブラのソースに
逆コンパイルすることは可能だろうけど

23 :デフォルトの名無しさん:01/10/13 19:31
逆コンパイルして適当にあたりつけながらCに置き換えってのはどうよ。

24 :デフォルトの名無しさん:01/10/13 20:51
アセンブラみたいなCには置き換え可能だわな(w

25 :デフォルトの名無しさん:01/10/13 20:53
アセンブラソースから手作業で復元は理屈上できるはず
まぁシュレッダー掛けた書類を手作業で元に戻すのと同じようなもん

26 :デフォルトの名無しさん:01/10/13 21:01
絶対に元には戻せません。
おなじEXEを吐き出す全く違うソースを作ることは出来るかもしれないけど。
でも変数名やラベルなどが全く復元されないため解読はかなり難しいでしょう。

27 :ではここで、わかりやすく説明しよう。:01/10/13 21:49
例えば6x6という式に対する解は36しかないが、
36という解に対する式は無限にある。

28 :もう少し詳しく。:01/10/13 21:57
>>27で9×4 等の適当な式を求めることはできるじゃないか、
と思った人は、例えば
 1 1 2 3 5 8 13 21
という数列に対する式を考えてるべし。
これをコンピュータに自動的に解かせるには、
単純な逆変換では無理。

#解答:
 X(n) = X(n-1) + X(n-2)  …(n>2)
    = 1          …(n=0,1)

29 :デフォルトの名無しさん:01/10/13 22:53
復元は無理でも、読みやすくすることはできる。
そういうツールもあった。
dis.xとか。

30 :デフォルトの名無しさん:01/10/13 23:05
>>27 が言うような論理的な側面も勿論あるが、別の面もある。

ソースの読みやすさに劇的に貢献しているものの1つとして、
変数や関数(やクラス…などなど)の「名前」が、ある。
適切な名前が使われてるソースは、そうでないものよりずっと読みやすい。
そこにこそ作者の「意図」が込められているからね。
機械が読むならどうでもいいんだが、人間が読むならこの差は大きい。

というわけで、変数名とかの情報が捨てられると、極端に読みにくくなるよ。

とあるJavaの逆コンパイルを「困難化」するツールでは
その手を使って、object(つまり.class)ファイルの中に書かれてる
変数名とかの情報を「読みにくい」ものに変えるという処理を
しているそうだ。
それだけで「実用的な」判読性はだいぶ失われるものらしい。

Java以外の多くのコンパイラ言語でも、事情は同じようなもの。

31 :デフォルトの名無しさん:01/10/13 23:18
>28
4*9==27
わからん・・・

32 :デフォルトの名無しさん:01/10/13 23:25
あと、↓の「PK LITE」みたいに、
http://www.pkware.com/products/pklite.html
EXEを実行可能状態のまま圧縮すると、解析は非常に困難になる。
この種のツールは、EXEの実体を圧縮し、これにメモリ上で実体を解凍して自動的に実行
させるルーチンを付加しているというしくみだから、当然変数名のデータはわからなくなる
し、場合によってはリソースデータもわからなくなる。

33 :デフォルトの名無しさん:01/10/13 23:34
>31
おまえのほうがわからん。

34 :デフォルトの名無しさん:01/10/14 00:04
コンパイラはある種の1方向ハッシュ関数と言い切って良いですか?
 http://cybozu.co.jp/products/md5/md5.html

あと逆アセンブルと逆コンパイルを混同してる人がいますが、
指摘して良いですか?

35 :デフォルトの名無しさん:01/10/14 00:53
逆コンパイルは制御構造などを高級言語化する。
「アセンブリ言語みたいなC言語にする」とかではない。
テーブルジャンプの復元など課題は多い。
変数名だの関数名だのの情報はたいてい実行ファイルに
エミットされたときに消えてる。
使用されたコンパイラが既知であればかなり精度の高い逆コンパイルが
すでに実現されている。

36 :デフォルトの名無しさん:01/10/14 02:48
最適化された部分をどう逆コンパイルするのか興味深いな

37 :デフォルトの名無しさん:01/10/14 03:27
>>36
ニモニックを中間表現に直してからソースレベルで最適化すると
最適化された部分の制御構造を復元できる、という研究がなされてる。
最適化されたものを、いったん冗長にして、それを別の立場から
最適化する、ということだね。

lha書庫をzip書庫に変換する場合、一旦伸張して再圧縮すれば簡単みたいな。

38 :デフォルトの名無しさん:01/10/14 04:21
思わぬ方向へ。良スレの予感・・・

39 :デフォルトの名無しさん:01/10/14 04:48
オープンソースな逆アセンブルライブラリって有りますか?

40 :警告屋さん:01/10/14 05:44
>>1-
<><><>警告<><><>
リバースエンジニアリング行為は、
一部の商用パケージでは禁止されています!
#つってもな・・・

41 :デフォルトの名無しさん:01/10/14 06:52
パケージマンセー

42 :デフォルトの名無しさん:01/10/14 08:15
いままでに逆コンパイルスレがいくつもあったのに、
このスレは妙に話が続いて良スレになってるな(w

43 :デフォルトの名無しさん:01/10/14 08:49
>>29
.xを挙げるか(w
懐かしいな・・・

44 :デフォルトの名無しさん:01/10/14 08:51
全てのループを末尾再帰関数に復元するとか。

45 :デフォルトの名無しさん:01/10/14 11:24
>>39
逆アセンブラではなくて、ライブラリが欲しいの? ライブラリに何を期待しているのか
謎だが、いちおう GNU binutils 挙げとく。

46 :デフォルトの名無しさん:01/10/14 23:32
>>45
objdumpだね。便利だ。

47 :デフォルトの名無しさん:01/10/15 16:39
>>45
nasmについてる
さがしてみそ

48 :デフォルトの名無しさん:01/10/16 19:38
なんか、難しく書いてるけど、VBのプログラムなら、
exe2vb 使えば簡単に戻るのでは?
Cのプログラムは無理だけどNE!

49 :デフォルトの名無しさん:01/10/16 19:55
そんなものどこにあるんだ〜?

50 :ppppppp:01/10/16 20:07
http://www.google.com/search?sourceid=navclient&q=exe2vb

51 :デフォルトの名無しさん:01/10/16 21:28
なにこれおとせん。
が、P-CODEでなきゃ戻せないとかのオチだろドーセ。
いまどきネイティブじゃないEXEなんか配布されてるかよ。

52 :デフォルトの名無しさん:01/10/16 22:43
>>29
dis.x 随分世話になったよ

53 :デフォルトの名無しさん:01/10/16 23:03
>>51
ていうか、vb scriptって書いてあるぞ

54 :デフォルトの名無しさん:01/10/16 23:05
goto
とか乱発されたソースがでてきそうだな。
>逆コンパイラ。


実際どうなのか知らんけど。

55 :デフォルトの名無しさん:01/10/16 23:37
スレ違いかもしれませんが、C言語の元から入ってる関数(printf、とかscanf)の
中身って見れるんですか?よく本には「最終的にはWRITEなどを呼んでいる」と書いていますが。

56 :ドキュソ学生:01/10/17 01:38
>>55
マクロ展開やらさらなる関数呼び出しやらの様子ならヘッダファイル開いてみればわかると思うけど。
(ブラックボックス的に使ってる方が幸せな気がする)

57 :デフォルトの名無しさん:01/10/17 06:58
>>56
getc() ならともかく printf(), scanf() は普通はそれ自身ライブラリ関数だろ。

>>55
ライブラリのソースコードが提供されている処理系を使っている場合には、参照できる。
VC6 なら C:/Program Files/Microsoft Visual Studio/VC98/CRT/SRC (標準のディレ
クトリにインストールした場合)、*BSD なら /usr/src/lib/libc 以下を参照。

他の環境は良く知らんので、環境を明示して聞きなおし。

58 :デフォルトの名無しさん:01/10/17 11:33
printfはvsprintfを呼んで一文字ずつwriteしてるだけじゃん?
vsprintfはソースを見れば簡単に内容わかるよ。
システム関数が最終的になにになってるかはディスアセンブル
しないとわかんないよ。システムコールの方法はOSによって違う。

>>54
goto乱発ソースを吐く逆コンパイラには価値ありません。
そういう部分を意味解析して高級化するのが逆コンパイラの肝の部分。
学生の頃そういう研究してたんだけどね。昔の資料ひっかきまわしてみるわ。

59 :55:01/10/17 19:32
>>57
僕はフリーのBorland C++ 5.5.1です。
>>58
そのソースがどこにあるのか分からないです。
bccをインストールしてあるディレクトリを見てもそれらしきファイルが無かったので。

60 :デフォルトの名無しさん:01/10/17 19:41
>>58

54ですが、研究していたというのは
まだ実用ではないということですか?

だとしたら、結局乱発すると思われ。(;´Д`)

61 :≠58:01/10/17 19:44
>>59

*.libとかそういうファイルになっていると思うよ。
少なくとも根幹となる関数が毎回コンパイルされているとは考えがたい。

62 :=58:01/10/18 13:26
>>59
あー、Borlandは知らないわ。
フリーのBCならソースはインストールされないかもね

>>60
ま、学生の頃だから。今はどうなんだろね。
世の中にいろんなツールがあるように
goto乱発な「価値のない」逆コンパイラもあれば
頑張って高級化してるものもあるってこと。
俺は逆コンパイラを作る研究をしてたわけじゃないけどね。

14 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)