難読化 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 るきお  (社会人) 投稿日時 2012/12/14 12:57:10
ほとんどの場合、解析されたくないような斬新なアーキテクチャやアルゴリズムを採用することはないのでブログにアップするプログラムの難読化は必要ないように思います。

ひょっとして、プログラムの中に重要なパスワードのようなものを埋め込んでいるのでしょうか?
投稿者 ヴァン  (社会人) 投稿日時 2012/12/4 17:11:43
>うーん……。MSILレベルの知識が要求されると思いますが……。

難読化なので読むのを難しくするだけだからそこは根性で...

バイナリーデータ内から法則を見つけ、データ解析よりましかなと...

投稿者 YuO  (社会人) 投稿日時 2012/12/4 15:39:34
> 難読化していても読めますし。

うーん……。MSILレベルの知識が要求されると思いますが……。

ReflectorやILSpyでの逆コンパイルを出来なくする程度は有償製品ならできると思います。
つまり,その時点でVBやC#ではなく,ILで読まなければなりません。

さらに,各メンバの名称も変更されますし (aとか),酷いことに複数の無関係なメソッドを同一名にオーバーロードしたりします。
ついでに,ILでは戻り値だけの違いによるオーバーロードもできます。
もちろん,文字列の暗号化もなされます。

読めるか,といわれたら,私は「読めない」と答えますけれどね……。
投稿者 ヴァン  (社会人) 投稿日時 2012/12/4 10:14:01
こんにちは。

VisualStudioがプロフェッショナルなら難読化プログラムが付いているはずです。
難読化ですが、どこまで行うかが結構問題です。
下手にやりすぎるとプログラムが正常に動作しなくなります。

自分は難読化はしません。
ぽこたさんが言うようにコストの割に効果がないと思うからです。

ある程度技術のある人の場合、逆コンパイルしてまで得るものは無いでしょうし、
難読化していても読めますし。
技術が無い人は使えるものがあるかもしれませんが、なぜそうなっているかまでは判らず、
それ以上の事が出来ないと思っているからです。

本当に流出を防ぎたいのであればC++での開発をお勧めします。
投稿者 ぽこた  (社会人) 投稿日時 2012/12/4 02:04:23
コードの難読化で期待できることは、アルゴリズムの解析を遅らせるだけですよ。
いつかはバレます。それも比較的早いうちに。

ですから、超重要なプログラムであれば、スパイの暗号のようなコードを書いて
敵(?)の目をくらませることができるのですが、労力の割には効果が薄いので、
たとえばパスワード認証の部分だけわけわからなくさせるようなコードにするとか、
要所で行うのが良いと思います。

難読化とは、要するに、人間は読みづらいコードなんだけどコンパイラでは通るコード
のことをいいます。スパゲッティプログラムが簡単な例です。
投稿者 ikakawaiidesu  (中学生) 投稿日時 2012/12/3 19:01:26
ブログに自作ソフトをアップしたいのです。それで
コンバート対策をとりたいと・・・・
投稿者 ヴァン  (社会人) 投稿日時 2012/12/3 09:41:49
こんにちは。

「VB 難読化」で検索してみてください。

あと、難読化に何を期待していますか?
投稿者 ikakawaiidesu  (社会人) 投稿日時 2012/12/2 21:27:11
難読化のやり方を教えてください。お願いします