gdb
나에게 제대로 작동 하지 않는 내가 무엇을 잘못했거나하지 않았 습니까?
root@6be3d60ab7c6:/# cat minimal.c
int main()
{
int i = 1337;
return 0;
}
root@6be3d60ab7c6:/# gcc -g minimal.c -o minimal
root@6be3d60ab7c6:/# gdb minimal
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
.
.
.
Reading symbols from minimal...done.
(gdb) break main
Breakpoint 1 at 0x4004f1: file minimal.c, line 3.
(gdb) run
Starting program: /minimal
warning: Error disabling address space randomization: Operation not permitted
During startup program exited normally.
(gdb)
(gdb) print i
No symbol "i" in current context.
답변
Docker를 사용하는 경우 --security-opt seccomp=unconfined
옵션이 필요할 수 있습니다 (및 ptrace 활성화).
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
답변
어떤 이유로 든 사용자 계정에는이 프로세스에 대한 커널의 주소 공간 레이아웃 무작위 화를 비활성화 할 권한이 없습니다. 기본적으로 gdb는 디버깅을 더 쉽게 해주기 때문에이 기능을 해제합니다 (특히 프로그램을 실행할 때마다 스택 객체의 주소가 동일 함을 의미합니다). 여기에서 자세한 내용을 읽어보십시오 .
에서 gdb의이 기능을 비활성화하여이 문제를 해결할 수 있습니다 set disable-randomization off
.
사용자에게 ASLR을 비활성화하는 데 필요한 권한을 부여하려면 /proc/sys/kernel/randomize_va_space
. 여기에서 자세한 내용을 읽어보십시오 .
답변
바탕 wisbucky의 대답은 여기에 (! 감사합니다) 도커의 작성에 대해 동일한 설정입니다 :
security_opt:
- seccomp:unconfined
cap_add:
- SYS_PTRACE
보안 옵션 seccomp:unconfined
이 address space randomization
경고를 수정했습니다 .
Docker 문서 에 SYS_PTRACE가 “기본적으로 부여되지 않은”기능이라고 명시되어 있지만 기능 SYS_PTRACE는 눈에 띄는 영향을 미치지 않는 것 같습니다 . 무엇을 찾아야할지 모르겠습니다.