忘れる前に覚書。優しい文章を目指します。
ザ・覚書 ザ・覚書
出来るだけ子供にも、わかりやすいように書いて行きたいと思います。

PCバージョンでサイトを表示しています。
【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?
ザ・覚書のトップページに戻る今のページの関連ページのリストへ

C#のEXEは、中のソースコードのロジックを簡単に見られてしまうかも知れない

☆C#のEXEは、中のソースコードのロジックを簡単に見られてしまうかも知れない

C#のプログラム(Microsoft Visual Studio 2012 ExpressのC#)で試しに遊んでみて、
問題を感じた事を書いておきます。

C言語とかでプログラムソースコードをコンパイルして、
EXEになると、機械語になって、処理を表示するにもアセンブラコードみたいなをダンプする事になり、
容易にリバースエンジニアリング(再プログラムソース化)できないと私は思っていました。

逆コンパイル自体も、ほとんどプログラム商品やフリーソフトのEXEも禁止されていると思います。

今回、C#のプログラムでちょっと遊んでみて、
どうやら今までの私の常識とは違う事を知りました。
丁度、他の事で逆コンパイルについて調べていて良かったです。

C#は作成したEXEから簡単にソースコードをリバースエンジニアリング・逆コンパイルされてしまうような。
C#は、どうやらEXEにするとき、機械語にはならなくて、マルチプラットホームを意識しているのか、
中間状態・中間言語のものになるだけらしいです。
(少なくてもMicrosoft Visual Studio 2012 Expressで普通に作ったC#プログラムは。)

逆コンパイルで有名なフリーソフトがあるらしく(触っていませんが、商用ソフトもあるらしい)、
試しに”自分が”作成したC#のEXE
(内容はフォームにボタンが1つあり、そのボタンを押すとファイルオープンとかする)
を読ませ、逆コンパイルすると、プログラムコードのロジックがあらわになってしまいました。

通常のAPIを用いてビシバシ書くC言語で作ったEXEは、そのツールでは
逆コンパイルされませんでした。


C#の例:


・コンパイルする前のEXEになる前のソースの一部

// 一応BACKUP
System.IO.File.Copy(@"list.txt", @"バックアップlist.txt", true);

//--------------------------
//--- オープンと読み込み ---
//--------------------------
int icounter = 0;               // 何行目を読んでいるか?
string stZenbu = string.Empty;  // 出力内容を格納
string stBuffer;                // バッファ

// 一応BACKUP
System.IO.File.Copy(@"list.txt", @"バックアップlist.txt", true);

// ファイルオープン 今回はUTF-8で
StreamReader srFILE = new StreamReader(
     @"list.txt", Encoding.GetEncoding("UTF-8"));
・・・・
if (icounter == 7) // たとえば7行目の後
・・・・

こんな感じのソース



・逆コンパイル後のソースの一部

int num = 0;
string text = string.Empty;
File.Copy("list.txt", "バックアップlist.txt", true);
StreamReader streamReader = new StreamReader("list.txt", Encoding.GetEncoding("UTF-8"));
・・・・
if (num == 7)
・・・・





変数名こそ変わるが、コードのロジックは、ほぼ再現されてしまいました。
ファイル名とかも。
ロジック丸見え・・・。


これだと、C#で遊びで自分用のプログラムを作成するのは、問題ないですが、
ソースコードはあげたくないけど、EXEだけ公開するという事が、
ちょっと出来ないなあと思いました。

こういう事が簡単に出来てしまうと、
C#で作ったEXEを商品として売るとか、納品するのも、どうなんだろうなと思います。

やっぱり通常通りC言語でWindowsAPIを使ってビシバシ書くのが良いのかなあ。


記述:2015年08月頃






Twitter Facebook Google+ はてな Pocket LINE




一言掲示板です。なにかありましたら以下に書いて書き込みボタンを押して下さい。
管理人による書き込みの確認後、荒らし書き込みでない場合に表示させていただきます。
悪意ある書き込みや挑発的な書き込みと思われる内容は、表示させません。
その為、ちょっと書き込みから表示までに時間がかかってしまいます。ご了承下さい。

お名前

コメント




【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?

今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ