お世話になります
開発環境:VS2010
OS:Windows7
ヘッダーファイルなどに文字列やBinary配列を定義しておくと、EXEファイルをBinaryエディタで見ると、そのまま見えますよね?
それを回避する方法は、ソース内での使い方や暗号化をするしかないのでしょうか?
例えば、コンパイルオプションなどで、文字列等を見えなくするようなものがあるのでしょうか?
もし、コンパイル時の設定で対応出来る方法があるのであれば教えて頂きたいと思います。
申し訳有りませんが、御教授宜しくお願いします。
リンク後 EXE を難読化ツールに掛けるといい、と思われる。
http://d.hatena.ne.jp/wwwcfe/20100513/obfuscator
http://www.obsidium.de/
難読化までしなくても単に圧縮するだけでも効果ありそう。
UPX って x64 EXE まで対応してるんだっけ?
ほかにもいろいろあるので探してみると良い。
すみません。ちゃんと書くべきでした。。。
→ 開発環境:VS2010
使用言語:C++ ※紛らわしくて申し訳無いです。
です。リンク先を見たのですが、.NET系でしたね。
おそらくVC++では利用出来ないのでは?
何度もすみません。協力宜しくお願いします。
既出 UPX では要求を満たせないのかな?
http://upx.sourceforge.net/
リンク後 EXE を食わせるだけ (ビルド後イベントに追加するだけ) だけど。
圧縮するだけ=暗号化するわけではない、んだけどね
やってみました!
確かにEXE,DLLを変換することで、見えなくなりました!
ちょっとこれで検討してみます。
・・・Netでは、正常に動かないこともある的なことを書いてあるサイトも
あったので、、、、、
ちなみに、「*.lib」に対しては、手段は無いですよね?
静的リンクをしようとしたい場合のためです。
もしあれば、教えていただけたらと思います。。。
native *.lib の難読化は心当たりないなぁ・・・原理的に困難そうだし。
.lib を渡すってことは .h つまりソースの一部も渡すってことだ。そもそも
.lib を渡す相手は開発者=PCの知識も深い=小細工しても見破られる可能性大。
.exe を渡す相手はエンドユーザ=小細工だけで手も足も出なくなる可能性大。
っつことで、俺ならその辺は割り切っちゃうだろう。
まあでも最近の Windows ソフトなら多言語化対応とか必須そうだし、
ソースコードに文字列直接埋め込むってあまりやらないと思うぞ。
俺もやらないし(使い捨てツールなら別だけど)
リソース DLL に追い出して LoadString とか使うべきだと。
なるほど、参考になります!
>.lib を渡す相手は開発者=PCの知識も深い=小細工しても見破られる可能性大。
>.exe を渡す相手はエンドユーザ=小細工だけで手も足も出なくなる可能性大。
そうですね。
怖いのは、.libを使う人が.dllや.exeに組み込むときに意識するか
しないかだと思うんです。
提供が.dllであれば、UPXは有効かと。
.libを組み込んだあとは、その開発者によるというのが怖いくらいですね。
開発者への提供の方法を変えるか、内部で暗号化するしかないか・・・・
>リソース DLL に追い出して LoadString とか使うべきだと。
僕個人的に、、、、ファイルが複数ってのが好きじゃないだけですw
セキュリティって奥が深いので、突き詰めればきりがないという
結果になるので、terapodさんの言うとおり、どこで割り切るかを
見極めないといけないですね。
難読化、、、セキュリティ、、、、、奥深い。。。。
参考になる情報ありがとうございます!
特にUPXという技術があったんですね。。。。勉強になる。。
どうもありがとうございました!!
ツイート | ![]() |