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......??._?.......??._?
....
(I 해봤 다른 형식) 같은 것을 보여줍니다 필요한 인수를 포함
func auth(_ bytes: Array<UInt8>) throws -> Array<UInt8>
기본적으로 원하는 것은 주소 0에 저장된 '바이트'변수를 얻는 것뿐입니다. x181ba4174.
또한 나는 '인증'방법은 다음과 같이 인수와 함께라는 것을 알고
let key = "somekey".utf8
let result = auth(key)
가 이상적으로 키를 다시 싶어.