プログラムは読まれることはないのでしょうか?

解決


きき  2003-03-26 07:38:06  No: 106438

vbでアプリを配布したいとおもうのですが
例えばproject1.exeの作成をしたあと、このproject1.exeから元のプログラムを読まれる心配はあるのでしょうか?(変数名や「’」の後の文字などなど)
わかりにくい質問ですみません。


Loreley  2003-03-26 10:22:00  No: 106439

逆コンパイルの話だと思いますが
あるといえばありますし、
ないといえばありません。
VBに限って言えば、
変数名を読み取ることは至極簡単にできます。
これは外部などからのアクセスのための中間子として
必要だからコンパイル後ものこしてあると思われます。
つまり、2つのForm同士で制御しあうものや、
前に作ったプログラムを新しいプログラムから制御したい場合など
に名前が必要になるからだと思われます。
これはバイナリエディタなどで間単に見つけることはできます

ただコメントに関してはコンパイルの際に削除されると思いますので
(実行には不要なので)見られる心配はないと思います。
コンパイルとはある言語から違う言語へのコンバートですので、
それを逆コンパイルすることは理論的には不可能ではありません。

ただし、最近のコンパイラというのはある程度最適化を行っている
ものがほとんどなので、
そのまま逆コンパイルできたとしても、作る前とまったく同じになることは
まずないでしょう。

さらにVBの場合はランタイムにわたすための中間コードになるだけなので、
コンパイルされたコードがなんであるのかを理解できなくては
逆コンパイルも難しいでしょう。
(Javaのようにコンパイラ開発のための資料があれば別になると思いますが)

ネイティブコードを吐き出すCやコンパイラの開発資料があるJavaでも
完全な逆コンパイルや逆アセンブルはないという話ですので、
そこまで神経質になることもない
・・・というよりは、そこまで心配していたらやってられないというのが
現状ではないでしょうか。

お約束程度にリバースエンジニアリングに対する禁止事項を
ドキュメントなどにつけておくといいと思いますよ。


Loreley  2003-03-26 10:23:13  No: 106440

あ、書き忘れました。

上のコメントは私の個人的意見もずいぶん含まれていますので
その辺を十分考慮しておいてください。


きき  2003-03-27 01:14:09  No: 106441

ご返答ありがとうございます。
変数がいじられてしまうことはしょうがないのですね。
分かりました!!

ラベル、フレーム、イメージなどの名前は
(例;label1,frm1,image1)
逆コンパイルしない限りわからないんですよね?

またフレームに例えばimage1という画像を置き
コードにimage1というものを書かなければ

image1という画像を探す手がかりは
なくなってしまうのでしょうか。


Loreley  2003-03-27 20:38:43  No: 106442

えーっと
フレームではなくてフォームだと思いますので
そういうことで話させていただきますが

>またフレームに例えばimage1という画像を置き
>コードにimage1というものを書かなければ
>image1という画像を探す手がかりは
>なくなってしまうのでしょうか。

ちょっと話が複雑になりますので、先に整理します。
・Form1にImage1を配置して、"イメージ.bmp"を読み込んだ状態で
実行可能なファイルにした場合。
(配布するファイルに"イメージ.bmp"はなくてよい状態)

(すこしあいまいな記憶なので、間違っている可能性があります)
この場合、まず"Image1"というImageコントロールの名前は残ります。
コントロールID(というかウィンドウネームですかね)として残ります。
ちなみに"Form1"という名前も残ります。
ただ、"イメージ.bmp"という名前は多分残りません。
(ほかのコントロールやコードにテキストで残していなければ)

ただし、この場合画像は24bitBitmapに変換されてプログラムに埋め込まれてますので
画像を実行ファイルから無理矢理抽出することはできるとおもいます。

それから"Form1"とか"Image1"という名前は逆コンパイルしなくてもわかります。
バイナリエディタで開けば見ることができます。
(メモ帳で無理矢理あけても見れるかも)
しかし、名前だけがわかったところで、どうということもないと思いますけど。
Formの名前に好きな娘の名前でも書いていない限りは平気だと思いますよ。(笑)


きき  2003-04-01 09:11:28  No: 106443

メモ帳でも見れることをはじめて知りました。
labelのcaptionや変数の中身の半角アルファベットはばれてしまうんですね。メモ帳をそのまま保存して実行しても元どうりには動かないんですね。

どうもLoreleyさん貴重なお時間有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加