1
私はリリース構成で構築されたアプリケーションの1つをリバースエンジニアリングしようとしています。LLDBプリントスワイプアレイは16進アドレスのみを知っています
スレッド情報は次のようになります。
* thread #21: tid = 0x876cb, 0x000000010133856c SomeLibSwift`SomeLibSwift.Auth.auth (Swift.Array<Swift.UInt8>) throws -> Swift.Array<Swift.UInt8>, queue = 'com.apple.root.utility-qos', stop reason = breakpoint 1.6
* frame #0: 0x000000010133856c SomeLibSwift`SomeLibSwift.Auth.auth (Swift.Array<Swift.UInt8>) throws -> Swift.Array<Swift.UInt8>
レジスタX0(アドレス0x181ba4174)は
メモリの読み取りは、私はその認証funcがこのような定義
を持っていたmemory read -s1 -fC -c1000 --force 0x181ba4174
0x181ba4174: ...??._?.......??._?0......??._?
0x181ba4194: P......??._?p......??._?.......?
0x181ba41b4: ?._ְ......??._??......??._?....
0x181ba41d4: ...??._?0......??._?P......??._?
0x181ba41f4: p......??._?.......??._ְ......?
0x181ba4214: ?._??......??._?.......??._?P...
0x181ba4234: ...??._?p......??._?.......??._?
....
(私が試した、異なるフォーマット)のようなものを示して必要な引数が含まれています
func auth(_ bytes: Array<UInt8>) throws -> Array<UInt8>
したがって、基本的には、アドレス0で格納された「バイト」変数を取得するだけですx181ba4174。
また、私は「AUTH」メソッドは、このような引数で呼び出されたことを知っている:
理想的let key = "somekey".utf8
let result = auth(key)
私は鍵を取り戻すしたいです。