DelphiまたはC++でコンパイルされた実行可能ファイルのソースコードを確認するにはどうすればよいですか?
私を助けてください。
編集後:
プログラムがあります。このプログラムを起動すると、ダイアログが表示され、パスワードの入力を求められます。このパスワードはソースコードに保存されています。このパスワードをすばやく簡単に取得したいと思います。
DelphiまたはC++でコンパイルされた実行可能ファイルのソースコードを確認するにはどうすればよいですか?
私を助けてください。
編集後:
プログラムがあります。このプログラムを起動すると、ダイアログが表示され、パスワードの入力を求められます。このパスワードはソースコードに保存されています。このパスワードをすばやく簡単に取得したいと思います。
できません。
コンパイラが人間が読めるテキストのソースコードを機械の実行可能コードに還元すると、膨大な量の情報が破棄されます。ローカル変数は、マシンコードに名前を付ける必要はありません。たとえば、ローカル変数は、命令オペコードのレジスタビットにすぎません。
これが、コンパイルされた実行可能ファイルをデバッグして元のソースファイルを1行ずつステップ実行できるのは、実行可能ファイルに対応するコンパイラデバッグシンボルがある場合のみである理由です。
マシンコードをソースコードにリバースエンジニアリングしようとするユーティリティがありますが、私の意見では、結果は元のマシンコードよりも人間には読みにくいです。マシンで生成された関数名、マシンで生成されたローカル変数と引数、そして多くの場合、ユーティリティは引数とローカル変数の正確なデータ型を推測する必要があります。(この引数はsignedintまたはunsignedintですか?それが単なるスタックスロットまたはマシンレジスタであるかどうかを判断するのは困難です)
Javaや.NETで行われているように、中間表現にコンパイルすると、元のコードの多くの型とシンボル名が保持されるため、はるかに可逆性が高くなります。たとえば、Reflectorは、人間が作成した元のソースコードに非常に近いC#ソースコードを出力できます。
できません。コンパイラはソースコードを取得し、それをマシン命令に変換して、元のソースコードの「トレースなし」を残します。
デコンパイラと呼ばれるプログラムがありますが、それらは基本的にリバースエンジニアリングを自動化するだけであり、元のソースコードに実際にアクセスすることはできません。
逆アセンブラまたは逆コンパイラを使用する。ただし、バイナリから元のソースコードを取り戻すことはできません。その情報は失われます。
DelphiまたはC++でコンパイルされたエグゼクティブファイルのソースコードを確認するにはどうすればよいですか?
コンパイルされたDelphi/C ++プログラムにソースコードが存在しないため、できません。
私はプログラムを持っています。このプログラムを開始するとき、ダイアログを表示してパスワードを尋ねます。このパスワードはソースコードに保存されています。このパスワードをすばやく簡単に取得したいです。
何かを割ろうとしているのですね
パスワードがソースコードに保存されていない可能性があります。パスワードにハッシュ関数を使用して、パスワードをソースコードに保存せずに有効かどうかを確認できます。ハッシュを見つけたとしても、そこからパスワードを取得するのは簡単ではありません。
逆アセンブラ(Ida Pro、OllyDBG、または同様のツール)を使用して、プログラムからアセンブラリストを取得できます。また、純粋なアセンブリが表示されますが、ソースコードがなくてもプログラムをデバッグできます。AFAIK、「逆コンパイラ」は存在しますが、私はそれらの1つを使用したことがなく、C ++ / Delphiコード(ネイティブアプリケーションにコンパイルするもの)に役立つかどうか疑問に思っています。
プログラムをハッキングしてパスワードチェックをバイパスすることを可能にするいくつかの簡単なテクニックがあります(いくつかの条件が満たされた場合、プログラムの作成者はセキュリティに興味がなかった、保護は簡単ですなど)が、これが許可されているかどうかはわかりませんディスカッショントピックstackoverflowで。
とにかく、法的な目的でリバースエンジニアリングに興味がある場合は、「リバース:リバースエンジニアリングの秘密」という本を試すことができます。
「実行可能」とは、「実行可能」という意味ですか?もしそうなら、逆コンパイルはあなたにアセンブリを与えるだけです。一部の逆コンパイラーは、アセンブリをより読みやすい形式に変換しようとしますが、実際にソースコードをファイルにコンパイルしない限り、exeからソースコードを取得する一般的な方法はありません。
まず、パスワードはソースコードに保存されません。コンパイルプロセスは一方向のみです。完成した製品は、そのソースを変更することはありません。(または、少なくともほとんどの場合、そのバイナリです。)パスワードは、データファイルのどこかに保存されている可能性があります。また、プログラムの作成者がまったく有能である場合、パスワードは何らかの方法でハッシュまたは暗号化されます。プログラムを逆コンパイルしてもあまり役に立ちません。
また、InsertNickHereが述べたように、ここではハッキングサイトではありません。私たちは、合法的なソフトウェアの構築に伴う複雑さを互いに助け合う名誉あるコーダーです。怪しげな質問は他の場所に持っていってください。