プロが教える店舗&オフィスのセキュリティ対策術

VC++などで作ったDLLの中身をバイナリーエディタなどで簡単にわからないように
中身を暗号化したいのですが、VC++などはコンパイル時にちゃんと暗号化されてるのでしょうか?

A 回答 (4件)

実行ファイル(EXE)ならパッカーと言われる圧縮ソフトで変換すると簡単には見れ難くできます。


UPXというソフトが有名ですね。
http://sourceforge.net/projects/upx/
http://ja.wikipedia.org/wiki/UPX

DLLにする方法もあるみたいですね。
http://ruffnex.oc.to/kenji/text/load_dll/
http://d.hatena.ne.jp/akiramei/20060514/p2

パスワードとかアドレスなどがバイナリーエディタで丸見えなのが嫌なら、文字列を特定のパターンでビット反転したり、ビットシフトするだけで、判別を難しくできますけど結局はデバッガで実行コードを追えば分りますね。

なおパッカーはウィルスなど悪質なソフト類がスキャンを逃れる手段として悪用されるケースもありますので、ベクターデザインなどのサイトでは掲載ソフトへの使用を禁止している所もあります。
    • good
    • 0
この回答へのお礼

丁寧なご説明と参照サイトを載せていただきありがとうございます。
結果デバッガを使ってしまえばわかってしまうのですね。
いろいろ勉強になりました。

お礼日時:2014/01/13 17:47

VC++だと機械語のままで暗号化されていません。


配布されているDLLでも販売するものならともかく今どき暗号化など施していないでしょう。
早さがポイントのVC++のDLLでパッカーなど施したら遅くなりメリットが薄れてしまいます。

あと下手なことをするとウィルスと判定されてしまいますよ。
vectorなどではパッカーを施したソフトの配布を禁止しています。
    • good
    • 0

暗号化されてません。

逆アッセン出来ます。暗号化してあり、そのままでは逆アッセン出来ないプログラムの解読なんて記事が昔のベーマガにありましたが。フロッピーディスクのプロテクト華やかなりし頃の話です。
    • good
    • 0

>>VC++などはコンパイル時にちゃんと暗号化されてるのでしょうか?



”ちゃんと”なんて書いたら、暗号化するのが普通のように思えてしまいますけど、それはどこから得た情報でしょう?
ほとんど全ての言語において、コンパイルした結果を暗号化なんてしません。結果として暗号のように見えるものもありますけど、それは別の理由からであり、暗号化を意図したものではありません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!