오늘 Xcode 8.1이 설치되었습니다. 여기에는 360.1.65 버전의 lldb가 포함됩니다. lldb를 사용하여 iOS 7.1.2에서 armv7 바이너리를 디버깅 할 때. 엄지 코드를 자동으로 재검색 할 수 없습니다. 이것은 disas 명령을 사용한 나의 결과입니다. lldb-360.1.65 (xcode8.1) 결과 오류가있는 disas 명령
(lldb) disas -s 0x709d8 -e 0x709e0
networkd`_mh_execute_header:
0x709d8 <+39384>: b 0xff3aca20
0x709dc <+39388>: .long 0xf64c6940 ; unknown opcode
내가 lldb-350.0.21.9 (엑스 코드 7.3.1)에서 동일한 코드를 테스트, 그것은 아무 문제가 없습니다.
(lldb) disas -s 0x479d8 -e 0x479e0
networkd`___lldb_unnamed_function192$$networkd:
0x479d8 <+352>: blx 0x57f74 ; symbol stub for: xpc_data_get_bytes_ptr
0x479dc <+356>: ldr r0, [r0, #0x14]
0x479de <+358>: movw r0, #0xc800
아무도 도와 줄 수 있습니까? 고맙습니다.
내가 '분해'할 때 '엄지'를 사용할 때. 결과는 엄지 손가락 만입니다. 첫 번째 암 코드 (0x..9d8)를 처리 할 수 없습니다. lldb에서 thumb & arm auto를 전환 할 수있는 방법이 있습니까? – LinuxPad
아니요, lldb에는 "이 명령 스트림이 팔이 아닌 엄지 손가락처럼 보이기 시작합니다"유형의 휴리스틱이 없습니다. 그렇게 할 수는 있지만 ARM의 코드에는 데이터가있는 경우가 많기 때문에 항상 올바른 방법을 찾는 것이 까다로울 수 있습니다. 그것은 가치가있는 것보다 더 많은 문제가 될 가능성이 큽니다. 그리고 당신은 일반적으로 상징에서 알기 때문에 대부분의 시간은 필요하지 않습니다. –
해체하려는 바이너리의 심볼을 더 이상 볼 수없는 이유를 알아내는 것은 흥미로울 것입니다. –