2012-01-27 24 views
2

このアプリケーションは、サイトhackthissite.orgでの最初のアプリケーションの課題です。リバースエンジニアIDA Pro 5を使用したシンプルなアプリケーション

アイデアはシリアルを見つけることです。シリアル番号を入力して[OK]を押すと、正しい場合はチャレンジのパスワードが表示されたメッセージボックスが表示され、正しくない場合はメッセージがポップアップします。 この問題を解決するには、バイナリのパスワードを平文で0x1670FEに設定する必要があります。

あなたが入力した文字列がバイナリのシリアルと比較されるIDA Proを見つけようとしていました。

比較対象の場所を見つけて間違ったパスワードを受け入れるようにジャンプを変更できるようにするか、パスワードを受け入れるように変更したいと考えています。

私はこれを行うように見えません。メッセージボックスがどこに表示されているのかを見つけました(メッセージボックスを検索し、ブレークポイントを追加することによって)、 "Sorry"または "Correct"文字列のアドレスをスタックにプッシュします。

これらの文字列のアドレスとシリアル自体にブレークポイントを追加しようとしましたが、動作していないようです。 IDAはこれらを文字列として認識していないようですが、突き出しウィンドウには表示されません。

私はまた、この機能を元に戻そうとしましたが、私はそれ以上何も戻っていないようです。

ヘルプ、情報、ヒントについては、お気軽にお問い合わせください。私は本当にこの種の問題を理解する方法を知りたい。

申し訳ありませんが、非常に基本的な質問です。

ありがとうございました。

+1

もっとよく知られているソースから入手できると思われるバイナリへのリンクを投稿するのはなぜですか? – Steve

+0

@paxdiablo - 「編集」を+1できたら、あなたは+1を得るでしょう。 – Steve

+0

私はサイトに登録が必要だと思っています。 – iabdalkader

答えて

2

私はIDA Proを使ってこの問題を解決できませんでしたので、Ollydbgを使って試しました。

シリアルを "TEST"のように設定すると、Authenticateを押すと、その文字列をメモリまたはシリアル自体で見つけることができました。

シリアルメモリアクセスにブレークポイントを設定することで、逆方向に作業して2つの文字列を比較するcomparestring関数を見つけることができました。

少し後にedxが2より大きいかどうかをチェックしてジャンプを実行します。私はこれを無条件のジャンプに設定した後、文字列が同じ長さであるかどうかを再度チェックするように見えますが、これは常に真実に設定されています。

ここで入力した内容に関係なく、プログラムはパスワードを与えます。

興味深いことに、5/6の有効なシリアルがあり、メモリ内のものから生成するか、または別の場所から取得する可能性があります。無効なシリアルを入力すると、一致するものが見つかるまで各シリアルと比較され、成功または失敗のメッセージボックスが表示されます。

私はIDA Proでこれに対する答えを見つけることができませんでしたが、ollydbgは仕事のためのより良いツールだと思います。

私がIDAに戻って再び見た場合、私はおそらくこのチェックを見つけることができます。

1

ヒントがあります。気付かなかったかもしれません。そのパスワードは平文形式であると言っています。
バイナリの中の文字列を知る方法をもっと探してみることができます。
リバースエンジニアリングは、ディスアセンブラまたはデバッガで開くことを必ずしも意味しません。
文字列、16進ダンプなどのコマンドがあります。
希望すると助かります。 :)

関連する問題