J'essaie d'inverser l'ingénierie d'une application construite avec une configuration de version.LLDB print swift array ne connaissant que l'adresse hexadécimale
L'information sur mon sujet ressemble à ceci.
* 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>
Inscrivez-X0 (adresse 0x181ba4174) contient l'argument nécessaire
lecture mémoire montre quelque chose comme (je l'ai essayé différents formats)
memory read -s1 -fC -c1000 --force 0x181ba4174
0x181ba4174: ...??._?.......??._?0......??._?
0x181ba4194: P......??._?p......??._?.......?
0x181ba41b4: ?._ְ......??._??......??._?....
0x181ba41d4: ...??._?0......??._?P......??._?
0x181ba41f4: p......??._?.......??._ְ......?
0x181ba4214: ?._??......??._?.......??._?P...
0x181ba4234: ...??._?p......??._?.......??._?
....
Je trouve que auth func a une telle définition
func auth(_ bytes: Array<UInt8>) throws -> Array<UInt8>
Donc, tout ce que je veux, c'est obtenir la variable 'bytes' stockée par l'adresse 0 x181ba4174.
Aussi je sais que la méthode « auth » est appelé avec un argument comme celui-ci:
let key = "somekey".utf8
let result = auth(key)
Idéalement je veux revenir clé.