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

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


  スポンサーリンク


Amazonで『C#』を検索
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ

実戦で役立つ C#プログラミングのイディオム/定石&パターン

独習C# 第3版

作って覚えるVisual C# 2015 デスクトップアプリ入門

基礎からわかる C#

C#実践開発手法 (マイクロソフト公式解説書)

UnityではじめるC# 基礎編
amazonで検索
商品更新日時:
2017/03/24 05:22:26

【あす楽 送料無料】Cross tech2 クロステックツー ボールペン テック2父の日 クリスマス 誕生日 プレゼント おしゃれ 敬老の日 卒業 送料無料 還暦 筆記具 記念日 ペン 名入れ あす楽 名前入り 入学 あす楽対応 名入り 名入 名入れボールペン

【dotPad No.12】メール便送料無料 ブロック ロディア ドットパッド オレンジ dotPad BLOC RHODIA【8.5×12cm】

メール便 送料無料 【No.10】ブロック ロディア オレンジ BLOC RHODIA【5.2x7.5cm】メモ ノート 方眼 メモ帳 ミシン目 切り取り ToDo トゥドゥ フランス 罫線 輸入 海外 デザイン おしゃれ ブロックメモ ブロックノート

クロステック3 替芯 CROSS TECH3用替芯【商品と同梱で送料無料】【メール便送料無料】

【送料無料】スワロフスキー ボールペン SWAROVSKI 女性パリスビジュー チャームセット 父の日 クリスマス 誕生日 プレゼント おしゃれ 敬老の日 卒業 送料無料 還暦 筆記具 記念日 ペン 名入れ あす楽 名前入り 入学 あす楽対応 名入り 名入 名入れ無料

【貴方の言葉で伝えます】オリジナルメッセージカード【商品同梱】
楽天ウェブサービスセンター
商品更新日時:
2017/03/24 05:22:26

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

(新機能)URLの書き込みも可能にしましたが、内容と関係のないリンクの表示はしないと思います。
また自サイトへのリンクURL書き込みの場合、相互リンクもお願い致します。
お名前

コメント






本日、よく見られるページ
木材の引き戸の滑りを良くする方法
労働者が、会社を訴える時の手続き方法
家庭用の普通のコンセントは、何Wまで使えるのか?
テロとの戦い「有志連合」の参加国
コピペ用 都道府県一覧
春の旬野菜といえばなに?
衆議院・参議院 議員数の党別割合
パソコンや携帯電話を明かりをつけずに暗闇で操作するのは目に悪いのか?
国会の日程が分からない
秀丸正規表現 ある文字以下を削除する
  スポンサーリンク

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