rsp+
(스택 상에)
rsp+
(스택에서)
(lldb) 명령어 | 설명 |
run (r) | 중단점이 만나거나 프로세스가 종료될 때까지 계속 실행을 시작합니다. |
continue (c) | 디버깅 중인 프로세스의 실행을 계속합니다. |
nexti (n / ni) | 다음 명령을 실행합니다. 이 명령은 함수 호출을 건너뜁니다. |
stepi (s / si) | 다음 명령을 실행합니다. nexti 명령과 달리, 이 명령은 함수 호출 내부로 진입합니다. |
finish (f) | 현재 함수("프레임")의 남은 명령을 실행하고 중지합니다. |
control + c | 실행을 일시 중지합니다. 프로세스가 실행 중이거나 계속되고 있으면 현재 실행 중인 위치에서 프로세스를 중지시킵니다. |
breakpoint (b) | b main # main 함수 호출 b <binname>`main # 바이너리의 main 함수 b set -n main --shlib <lib_name> # 지정된 바이너리의 main 함수 b -[NSDictionary objectForKey:] b -a 0x0000000100004bd9 br l # 중단점 목록 br e/dis <num> # 중단점 활성화/비활성화 breakpoint delete <num> |
help | help breakpoint # 중단점 명령어 도움말 help memory write # 메모리 쓰기 도움말 |
reg | reg read reg read $rax reg read $rax --format <format> reg write $rip 0x100035cc0 |
x/s <reg/memory address | 메모리를 널 종료된 문자열로 표시합니다. |
x/i <reg/memory address | 어셈블리 명령으로 메모리를 표시합니다. |
x/b <reg/memory address | 바이트로 메모리를 표시합니다. |
print object (po) | 매개변수로 참조된 객체를 출력합니다. po $raw
Apple의 대부분의 Objective-C API 또는 메서드는 객체를 반환하므로 "print object" (po) 명령을 통해 표시해야 합니다. 의미 있는 출력이 생성되지 않는 경우 |
memory | memory read 0x000.... memory read $x0+0xf2a memory write 0x100600000 -s 4 0x41414141 # 해당 주소에 AAAA를 씁니다 memory write -f s $rip+0x11f+7 "AAAA" # 해당 주소에 AAAA를 씁니다 |
disassembly | dis # 현재 함수의 어셈블리 코드 표시 dis -n <funcname> # 함수의 어셈블리 코드 표시 dis -n <funcname> -b <basename> # 함수의 어셈블리 코드 표시 |
parray | parray 3 (char **)$x1 # x1 레지스터의 3개 구성 요소 배열 확인 |
(lldb) 명령어 | 설명 |
run (r) | 중단점에 도달하거나 프로세스가 종료될 때까지 계속 실행을 시작합니다. |
process launch --stop-at-entry | 진입점에서 중단하며 실행을 시작합니다. |
continue (c) | 디버깅 중인 프로세스의 실행을 계속합니다. |
nexti (n / ni) | 다음 명령어를 실행합니다. 이 명령어는 함수 호출을 건너뜁니다. |
stepi (s / si) | 다음 명령어를 실행합니다. nexti 명령어와 달리 이 명령어는 함수 호출로 들어갑니다. |
finish (f) | 현재 함수(“프레임”)의 나머지 명령어를 실행하고 반환 후 중단합니다. |
control + c | 실행을 일시 중지합니다. 프로세스가 실행(run)되었거나 계속(continue)되었으면, 현재 실행 중인 위치에서 프로세스가 중단됩니다. |
breakpoint (b) |
breakpoint delete <num> |
help | help breakpoint # 중단점 명령어 도움말 help memory write # 메모리에 쓰기 도움말 |
reg | reg read reg read $rax reg read $rax --format <format> reg write $rip 0x100035cc0 |
x/s <reg/memory address> | 메모리를 null로 종료된 문자열로 표시합니다. |
x/i <reg/memory address> | 메모리를 어셈블리 명령어로 표시합니다. |
x/b <reg/memory address> | 메모리를 바이트로 표시합니다. |
print object (po) | 이 명령어는 매개변수로 참조된 객체를 출력합니다. po $raw
대부분의 Apple의 Objective-C API 또는 메서드는 객체를 반환하므로 “print object” (po) 명령어를 통해 표시해야 합니다. po가 의미 있는 출력을 생성하지 않으면 |
memory | memory read 0x000.... memory read $x0+0xf2a memory write 0x100600000 -s 4 0x41414141 # 해당 주소에 AAAA 쓰기 memory write -f s $rip+0x11f+7 "AAAA" # 해당 주소에 AAAA 쓰기 |
disassembly | dis # 현재 함수의 디스어셈블리 dis -n <funcname> # 함수의 디스어셈블리 dis -n <funcname> -b <basename> # 함수의 디스어셈블리 |
parray | parray 3 (char **)$x1 # x1 레지스터의 3개 구성 요소 배열 확인 |
image dump sections | 현재 프로세스 메모리의 맵을 출력합니다. |
image dump symtab <library> | image dump symtab CoreNLP # CoreNLP의 모든 기호 주소 가져오기 |