私の友人が、彼がコーディングした小さなプログラムをハックするよう私に挑戦しました。基本的には画像を表示するexeファイルですが、そのためにはパスワード付きのキーファイルが必要です。
ollydgb でリバース エンジニアリングを開始したところ、key.txt という名前のファイルが存在し、パスワードが含まれている必要があることがわかりました。私が気付いたもう 1 つのことは、私の友人がパスワードを使用してメモリ アドレスを計算し、それを呼び出していることです。そのため、間違ったパスワードを使用すると、アプリケーションがランダムなアドレスにジャンプするため、おそらく違反が発生してアプリケーションがクラッシュします。
彼は基本的にパスワードを EBX に保存します。彼は固定値 EAX を置きます。次に、ADD EAX、EBX、最後に CALL EAX を実行します。
したがって、これらすべてを知っていて、次に実行するアドレスがわかっている場合は、EAX に格納されている固定値からアドレスを差し引くだけで、パスワードに対応する HEX 値を取得できます。
私の問題は、次に実行されるアドレスをどのように知ることができるかということです。私はクラッキングにかなり慣れていません...
CALL の後に次のアドレスを指定しようとしましたが、うまくいきません。使用しているライブラリも確認しましたが、確かにopengl32が表示されますが、そのライブラリにジャンプする必要があるかどうかはわかりません。
私の質問は、実行される次のアドレスをどのように把握できますか?