2012-05-14 1 views
12

私は、Googleと多くの時間をかけた後、ここでこの質問をすることにしました。しかし、私はまだ私の質問の答えを得ることができませんでした。以下はその詳細です:iOSバイナリを編集して再コンパイルすることはできますか?

私は最近Cydiaに申請して投稿しました。それは他の誰かによってひびが入っていて、それをトレントサイトに投稿しました。興味深いのは、内部にバイナリチェックサム検証メカニズムがあり、その全体をハックすることができ、バイナリに加えた変更に基づいて新しいチェックサムファイルを作成したことです。彼らは2つの機能を編集し、それを逆コンパイルしてトレントに投稿します。

私はIDA Proを使っていくつかの研究を行い、関数とクラスの実際の実装を見ることができることを知りました。しかし、関数を編集するには、関数のアドレスを見つけてHEX EDITORで編集する必要があります。これは私にとって混乱している部分です、誰かが私にこれを助けてくれるのですか?私はそれを "unhackable"にしたくありません:)。そう簡単ではないと思います。 :)しかし、私は本当に彼らがどのようにハックするかを知りたいですか? :)

私の質問は、iOSバイナリで関数を編集して再コンパイルする方法です。例えば私は私のクラスの一つに次のメソッドを持っています。

- (id) getSomething { 

    return @"Something"; 
} 

この関数の戻り値を編集したいと思いますか?

答えて

6

通常、「再コンパイル」しません。 IDAにファイルをフィードするだけで、文字列、関数呼び出し、探しているものを探し、16進エディタなどを使用してアセンブリレベルでファイルを編集します。ほとんどの場合、条件付きジャンプを無条件ジャンプまたはnop(無操作)に変更するだけで十分です。戻り値を変更したい場合は、もう少し努力しなくてはなりませんが、定数や初期値として指定されている場合は、バイナリファイル内でcharシーケンスを編集するか、完全に新しい関数を作成し、そのアセンブラコードを元のファイルに「コピー」します。あなたは、新しい機能が元のものよりもスペースを取らないようにする必要があります。あるいは、すべてがより複雑になっています。 私はそれがあなたが求めているものだと願っています。そうでなければ、あなたが話しているアプリを教えてください。それではもっと深く見ることができます:)

+1

私の質問に答えるためにこのページに時間を費やしてくれて.. :)そう会社で働いているようにその名前を明らかにすることはできず、製品は会社のために開発されています。申し訳ありません。私はアセンブラコードの置き換えに関するもう1つの質問があります。私はIDA Proの試用版を使用していたので、コードを置き換えるためにフルバージョンについて話していますか? – IndoThaiGeek

+0

他のアプリケーションを使用していますか? – IndoThaiGeek

+0

トライアル版とフル版の違いは分かりませんが、IDAをバイナリファイルの編集に使用したことはありません。 Windowsでは、私はHiewを使用しています。 – jimpic

関連する問題