私は友人がJava '* .class'ファイルからソースコードファイルを取得するのを見てきました。彼はそれに何らかのソフトウェアを使用しました。
'*。exe'で同じことを行うことは可能ですか?はいの場合、どうすればよいですか?また、実行可能ファイルがコピー権のない小さなファイルであると考えると、そのようなことを行うことは倫理的ですか?
これは、開発者が使用した基礎となる言語によって異なります。
Javaおよび.NET言語の場合、ほとんどの場合、ソースコードを「逆コンパイル」することができます。これは、真の元のコードにはなりません(変数名は異なり、最適化はコンパイラはコードを再配置するなど)が、近いでしょう。
C/C++などの他の言語はそれほど簡単ではありません。
倫理に関する限り、あなたがただ遊んでみたい趣味のコーダーなら、それは問題ありません。しかし、あなたが専門家であり、アプリをコピーするためのソースコードを取得しようとしている場合、それは非常に非倫理的であり、大きな禁止事項です!
アプリケーションが.NET言語(VB/C#)のいずれかで記述されている場合、Red Gateのリフレクター reflector.red-gate.com を使用して、アプリケーションを対応するソースファイルに分解できます。ただし、すべてのアプリケーションがこのようなマネージ言語で記述されているわけではなく、C++アプリケーション、またはDelphiやその他の非マネージ言語で記述されたアプリケーションの逆コンパイルはそれほど簡単ではなく、実際に取得できるのは16進ダンプだけです。次に、実際のアプリケーションに再構築します。
あなたの.exe
コードはC/C++ですが、C#の場合は実行できます。そのための優れたツールはわかりませんが、ANTSプロファイラを使用する方法があります。 C#バイナリのすべてのオブジェクト、メソッド、引数が表示されます。
はい、 dcc Decompiler などのツールを使用して.exeを逆コンパイルすることは可能です。元のプログラムがCで書かれている場合、これは良い結果を生み出します。別の言語で書かれている場合は、その言語に適した別のツールを試す必要があるかもしれません。
ソフトウェアを逆コンパイルするときは、アセンブリ言語が多ければ多いほど、逆コンパイラが混乱したり、コードの一部が実際にアセンブリ言語で記述されていたりした場合に、低レベルのアセンブリから高レベルのコードを調べる必要があるため、より適切です。
逆コンパイルは、プログラムが最低レベルでどのように機能するかを研究するための優れた方法です。また、多くの場合、逆コンパイルされたプログラムはexeにコンパイルされますが、変数を説明するために使用される記号はまったく意味がありません。コードの意味と機能を実際に理解するには、探偵の仕事をしなければならない場合があります。
あなた自身の娯楽や教育のためにコードを逆コンパイルすることについて倫理的に間違っていることはないと思いますが、商用ソフトウェアを逆コンパイルして著作権メッセージを自分自身に変更したり、悪意のある悪用の脆弱性を探したりするなど、悪意がある場合は、非倫理的と見なされます。
ソフトウェアをメモリにアンパックするローダーを作成するか、明示的に逆コンパイラを混乱させるコードを作成するローダーを作成することにより、開発者が逆コンパイルを防ぐためにある程度努力したことがわかるかもしれません。これはすべて楽しみの一部です。
技術面:はい、コードを逆コンパイルすることは可能です...ある種。返されるのは元のソースコードではなく、実行可能ファイルが完全なデバッグシンボルを有効にしてコンパイルされていない限り、元のソースコードにそれほど似ていない可能性があります。ただし、実行可能ファイルを可能な限り小さく保ち、実行可能ファイルを調べる人に最低限以上の情報を提供しないようにするために、最終的な本番ビルドではデバッグシンボルが無効になっていることがよくあります。
法的側面:デジタルミレニアム著作権法に基づき、著作権所有者がこれから保護しようとしたソフトウェアを逆コンパイルまたはリバースエンジニアリングしようとします。これまでの法廷で解釈されたように、その試みがどれほど途方もなく微弱であるかは問題ではなく、それは依然として違法です。コードを保護するための技術的手段がない場合でも、実行可能ファイルを逆コンパイルまたはリバースエンジニアリングすることは許可されていないことを示すライセンス契約が存在する可能性があります。
原則として、私はこれらのことを完全に倫理的であると見なす傾向があります。ただし、他人に危害を加えることを意図していない限り、法律は同意しない傾向があります。
.classファイルからソースコードを取得するJavaは簡単ですが、.exeファイルからコードを取得するのは困難です。これを使用してください http://www.hiew.ru/ .exeファイルを逆アセンブルしますが、この生成されたコードは元のコードと同じにはなりません。コンパイラによって無視される多くの行が欠落しているため、読みにくくなっています。