お世話になっております。
Visual Basic 6にてあるプログラム(ソフト)を作成し、
動作確認して、安定して使えるようになった後、
実行ファイル(EXEファイル)作成しようとしております。
普通にVB6の機能で実行ファイルを作成予定。
このソフトをいろいろな人に配布する場合を考えます。
この場合、ソフトを受け取った第三者はコードを閲覧することは一般的に言って不可能に近いでしょうか。その点を知りたいと思っております。
おそらく不可能ではないと思いますが、通常のソフト環境で通常の努力では不可能なのかどうかを知りたいのです。
当方でこしらえているツール(プログラム)は特殊なノウハウもなく、見られても問題もないのですが、閲覧ができてしまうのかどうか、見られるというのはあまり気持ちのよいものではないだろうという意味です。
一方では、良いソフトを手に入れた場合、どのようにコード記述しているのか知りたい、容易にコード閲覧できれば便利だろうというのもあります。
つまり、コード閲覧の困難さの程度が知りたいのです。
よろしくお願いいたします。
No.3
- 回答日時:
>コード閲覧の困難さの程度が知りたい
一般には#1,#2さんが答えておられるとおりですが
実は、VB6.0にはdecompiler(逆コンパイラ)が存在します。(私が見つけたものは有料ですが)
ご丁寧にも、その逆コンパイラでも解読しづらいように改造してくれるツールも存在しますが、これを通しているソフトはそうそう無いでしょうから、意外と簡単に解読できるかもしれません。
サンプルを見る限りだとコメントや変数名などは再現できないようですが、基本的なロジックは再現できているようです。
URLを紹介したいのはやまやまなのですが
・自分で試したわけではない(有料だったので)
・自分もプログラマなので、そういうツールは欲しいけど(笑)
あまり人に勧めるのは気が引ける
(ソースを見せていいなら同梱するでしょうし)
・質問の内容が「コードが逆引きできるかどうか」
なので、「できる(かも)」という答えで十分・・・と思った
ということで、Googleあたりで検索してみてください(^^;
ちなみに.NETだと(decomplierを)MS自身で出してたと思います。
No.2
- 回答日時:
一般に、実行コード(EXEやCOM)から、BASICやCなどの高級言語のソースを取り出すことは不可能です。
コンパイラは、高級言語で記述されたロジックを、もっとも効率よく(とは言ってもコンパイラのでき次第ですが)実行できるよう、組み直しをしています。
ただし、デバッグ情報を埋め込んだ実行コードでは、ある程度のソース情報が確認できるかもしれません。
デバッグバージョンの場合、あまり最適化を行うと、エラー箇所の特定がむつかしくなるため、ソースのロジックにわりと忠実にコンパイルするため、元の計算ロジックを推測できるかもしれません。
ただし、コメントや、マクロ文(VBにもあったっけ?)などは、残りません。コメントは削除されますし、マクロ文は展開されてしまいます。
この状態で、元のソースを復元できるわけはありませんので、安心していいと思います。
その昔、プログラムがアセンブラで書かれていた時代、逆アセンブラというのがあって、これを使うと元のアセンブラコードが解ったりしました。このころでも、コメントは削除されていましたので、解析は容易ではなかったと思います。
No.1ベストアンサー
- 回答日時:
コード閲覧といったときの「コード」とは何を言っておられるかによって異なります。
EXEファイル自体のコードは、バイナリエディタやダンプ出力プログラムがあれば、誰でも容易に見ることができます。但し、それの意味がわかるのは、機械語の知識がある人に限られます。機械語の知識がある人が時間をかけてコードを見れば、そのプログラムのアルゴリズムを知ることはできます。ただし、非常に面倒な作業ですので、よほどの価値がなければ、あるいはよほどの好奇心がなければ、そのようなことをする人は非常に限られるでしょう。
元のVisual Basicのコードを見れるかどうかというと、これは、一般論としては、完全に元通りのコードを復元できるとは限りません。
但し、いわゆるリバースエンジニアリングの技術を使えば、ある程度は、そのプログラムのアルゴリズムを高級言語に変換することは可能です。そのコードを読めば、機械語を直接解読するよりはプログラムのロジックを理解することは比較的容易です。
例えば、リバースエンジニアリング技術の具体例は、リバースコンパイラ(日本語では逆コンパイラとも呼ばれる)といったツールです。「逆コンパイラ」で検索すればいろいろ出てきます。
市販ソフトの中には、使用許諾契約においてリバースエンジニアリングの適用を禁じているものもあります。但し、このような契約条項が有効かどうかは法律的に微妙であると聞いたことがあります(このあたりの詳しい法律論まではわかりませんが)。
なお、「見られるというのはあまり気持ちのよいものではないだろうという意味です。」と書かれていますが、コンピュータプログラマの中には、自分の書いたコードを積極的に見せたがる人もいます。プログラムを書くことも、表現活動の一種ですので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(セキュリティ) 役所など、情報系システムのセキュリティが弱くても業務システムに問題ないか 3 2022/11/02 16:38
- グループウェア slackについて取り急ぎ教えて頂きたいことがあります 2 2022/04/08 09:05
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- 作詞・作曲 或る曲の楽譜のコード進行の中に"F onA"なるものがありました。これはどんな和音ですか? 7 2023/05/22 00:34
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- その他(セキュリティ) Yahoo! JAPANのID取得について 1 2022/11/30 23:00
- その他(ソフトウェア) 録画ソフト Bandicamについて教えて下さい。 2 2022/04/17 22:32
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- Windows 10 別ユーザーでログインした際、表示されないのソフトの探し方 1 2022/07/15 10:26
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
sqlに記述できない文字
PostgreSQL
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
-
5
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
6
MSDNのコレクションがありません。MSDNを再インストールしてください。
Visual Basic(VBA)
-
7
実数の整数部,小数部の取得
Visual Basic(VBA)
-
8
DLLやOCXなどの格納先は必ず「C:\\WINDOWS\\system32」?
Windows Vista・XP
-
9
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
10
Viewにインデックスは張れますか?
Oracle
-
11
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
12
MSDNは何でしょうか?
Visual Basic(VBA)
-
13
VB6.0での小数点の扱いについて
Visual Basic(VBA)
-
14
Spreadの選択行の取得について
Visual Basic(VBA)
-
15
VB5の逆コンパイルについて
Visual Basic(VBA)
-
16
VBの「As String * 128」とは?
Visual Basic(VBA)
-
17
ILSpyで、デコンパイルできない。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonにてseleniumを使うも、...
-
Exel VBA 別ブックから該当デ...
-
chatgptでつくってもらったコー...
-
ExcelのVBAコードについて教え...
-
パイソンプログラム
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
vb6.0の実行時エラー'3075'につ...
-
Gitのクローンについて
-
特定行の背景色を変えたいのですが
-
Excel VBA素人です。VBAで図形...
-
コンパイルエラー 変数が定義...
-
access2003 クエリSQL文に...
-
楽観的排他処理のためViewState...
-
プレースホルダー
-
CFormViewでの印刷について
-
変数名「cur」について
-
文字コードについて
-
Excel VBAについて
-
SQL
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
Exel VBA 別ブックから該当デ...
-
pythonにてseleniumを使うも、...
-
ExcelのVBAコードについて教え...
-
ExcelのVBAコードについて教え...
-
chatgptでつくってもらったコー...
-
欠番の抽出について
-
JANコードとPOSコードは同じ?
-
JavaScriptの定数名が取り消し...
-
1、Rstudioで回帰直線を求める...
-
特定行の背景色を変えたいのですが
-
変数名「cur」について
-
PreviewKeyDownイベントが2回...
-
将来AIが進歩してくるにつれて...
-
ACCESSユニオンクエリでORDER B...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
Nullの使い方が不正です。
おすすめ情報