
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
Win32 の DLL は解読が難しいですが、.NET のマネージドDLLとなると話がまた変わってきます。
2002 以降のバージョンの Visual C++ では従来の Win32 の DLL に加えて、.NET Framework 上で動作するマネージドDLLというものを作ることができます。この場合は dll ファイルは(マシン語レベルまでコンパイルされたものではなく) MSIL という中間言語で書かれたものになります。
MSIL 自体がマシン語よりもはるかに解読しやすい上、Reflector のようなツールを使って、ソースをかなり忠実に再現することができます。コンパイラにより最適化された部分やコメントはもちろん見えませんが、それでもロジックは丸見えになると思った方がよいです。
http://www.atmarkit.co.jp/fdotnet/tools/dotfusca …
上記ページで紹介されている難読化ツールのようなものを使って対処することになると思います。
もちろん、2002以降のバージョンでも、Win32 の DLL を作ることは可能なので、どうしても解読されたくない場合は、そちらを使うという選択肢もあるかと思います。

No.2
- 回答日時:
リバースエンジニアリングの分野(別にプロテクト外しとかそういうアンダーグラウンドな意味ではなく)では、実行コードを C 風な擬似コードに戻すことが出来るソフトなども学術的には開発されています。
しかし、最新のコンパイラによって最適化された複雑なコードを満足のいくように元に戻せるものはまだないようです。ソースレベルではなくアセンブリ言語レベルへの復元ならば、C/C++ ランタイムライブラリや Windows API コールなどを認識して可読性の高い逆アセンブルリストを生成できる IDA という製品があります。
ちなみに、DLL 全体を解読するのは大変ですが、apricot111 さんが保護したいと考えているコードがごく一部であるなら、その内容によっては、アセンブリ言語を知っているそこそこの技術者なら該当部分をわりと簡単に解読できる可能性はあります。
いずれにしても、「素人」というのがプログラミングの素人を意味するのであれば、実行コードの解読は事実上無理と言っても良いでしょう。
No.1
- 回答日時:
変数名などの情報は残らないので、ソースそのものはわかりませんが、解読は可能なので、ロジックはわかります。
ただ、復元はかなり大変で、しかもそこから意味をくみ取るのも大変です。その手間を掛けるだけの内容でない限り、誰も読もうとはしないでしょう。1MBのDLLがあるとして、100万円くれると言われてもしません。1億ならします。
そのくらい手間がかかるものなのですね^^;
あるCベースの言語があり、それは解読用のソフトがあって解読可能なんです。
ただしDLLも使えるのでコアロジックをDLLで書けば問題ないかなと考えました。
的確な回答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Cのコンパイルでコメントアウトをそのままオブジェクトに保持したい 7 2023/08/01 22:22
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# エラー: ‘inval’ の記憶サイズが不明です。 union semun inival; というエ 2 2023/01/16 22:04
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- その他(OS) OBSが起動できません 3 2022/03/30 12:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
c言語です コンパイルした時に...
-
C++ と、
-
gcc バージョン違いによるコン...
-
パソコンソフトを作るには?
-
hello worldの表示の仕方
-
dos.hについて
-
c++のtemplateでエラーが出ます
-
debian/gnu Linuxで並列計算し...
-
アプリケーションでBasicとC++...
-
gccコンパイル時のエラーメッセ...
-
Solaris8.9にGCCをインスト...
-
CMakeでfortranをコンパイルしたい
-
Cygwinで使用しているgccをダウ...
-
Fortran77 (intel fortran)
-
Visual Basic.NETの処理速度は6...
-
すべてのリビルド: 0 正常、 0 ...
-
共有ライブラリの内容確認について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
シリアル通信の受信待ちについて
-
ビープ音が鳴りません・・・
-
C#で char型とstring型の比較で...
-
c言語です コンパイルした時に...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
64ビットのlinuxで32ビットメモ...
-
C言語で作ったらWindowsでもMac...
-
MS-BASICの逆コンパイルについて
-
<math.h>ヘッダを入力している...
-
ヘッダーファイル『windows.h』...
-
プレコンパイルの意味を教えて...
-
Verilog_HDLでのdefineとifdef
-
[COBOL] ソースの復帰
-
gcc バージョン違いによるコン...
-
同じEXE・同じファイルで解析結...
おすすめ情報