13

私はアプリケーションを持っていて、最近 Cydia に投稿しました。他の誰かによってクラックされ、トレント サイトに投稿されました。内部にバイナリ チェックサム検証メカニズムがあり、バイナリに加えた変更に基づいて新しいチェックサム ファイルを作成することができました。彼らは 2 つの関数を編集して逆コンパイルし、torrent に投稿しました。

関数とクラスの実際の実装を見ることができることがわかりました。しかし、関数を編集するには、その関数のアドレスを見つけて、HEX EDITOR で編集する必要があります。私はそれを「ハッキング不可能」にしたくはありませんが、彼らがどのようにハッキングしたかを知りたいのです。

iOS バイナリの関数を編集して再コンパイルするにはどうすればよいですか? たとえば、クラスの 1 つに次のメソッドがあります。

- (id) getSomething {

   return @"Something";
}

この関数の戻り値を編集したい。それは可能ですか?

4

1 に答える 1

6

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

于 2012-05-14T07:44:51.810 に答える