2011-12-21 10 views
0

私は、フリーでオープンなクライアントを作成するために独自のプロトコルをリバースエンジニアリングしています。独自のクライアントプログラムを実行してトラフィックを監視することで、これまでのところほとんどのプロトコルをマップしました。ただし、認証はSSLで暗号化されています。それは私の次の目標です。実行時にメモリ内のSSL証明書を検索して置換する

私は、すべてのトラフィックを私のコントロール下にあるプロキシ経由でルーティングするのが一般的であることを知っています。そのため、自分で署名したSSL証明書を受け入れるには問題のプログラムが必要です。ここで私は未知の領域に挑戦します:このプログラムはAdobe Flashで書かれており、AIRランタイムを使用しています。私はプログラムファイルにSSLフィンガープリントを見つけることに成功していません。もし私がこれを行うことができたとしても、私はFlashについて何も知らないし、プログラムをバイナリでパッチするときに何か問題を引き起こすでしょう。私は実行時にメモリを変更するオプションが残っています。プログラムのメモリをダンプすることにより、署名機関の名前がいくつかの場所に存在することが確認されます。

メモリ内でSSL証明書のように見えるものを自動的に見つける方法を知っている人はいますか?誰も私のための一般的なヒントを持っていますか?

私はLinuxを使用しているので、Wineの下でGDBを使ってプログラムを実行していますが、/ proc/n/memも調べていますが、Windows固有のヒントもあります。

答えて

1

通常、サーバー側の証明書の検証は、証明書バイナリ(これを代用できる)を比較するのではなく、提示された証明書を複雑に分析することによって行われます。したがって、最も簡単なアプローチは、証明書の妥当性に関する最終的な判定が行われる場所を見つけることです(スクリプトではなくAIRランタイム内にある可能性が高いです)。

関連する問題