seccomp bpf filter 관련해서 문제 만들고 있는데, bpf 필터 우회가 안먹혀서 위 강의에 잠깐 설명으로 나온 예제 파일로도 익스 시도해봤는데 안됩니다..ㅠㅠ (0x40000000 or 해서 하는 우회입니다)
https://learn.dreamhack.io/280#9 <-여기 조금 내리면 있는 예제에
https://learn.dreamhack.io/280#10 <-에 나온 익스파일 복붙해서 했는데 계속 죽어요ㅜㅜ
이 예제 말고 https://learn.dreamhack.io/11#32 <- 이 예제도 익스 안먹어요
우분투 문제인가 싶어서 우분투 16.04,18.04,20.04 다해봤는데 다 죽습니다.. 따로 커널 관련 설정을 해야하는 걸까요?
function not implemented 라고 뜨는걸보니 뭔가 이상하네요
https://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit
혹시 32bit 로 컴파일한 바이너리가 잘 실행 되시나요?
printf ("hello world");
하는 바이너리를 gcc -m32 a.c 로 컴파일 해보고 실행해보세요
앗 링크 주신거 따라해봤을때 printf("hello world")는 잘 실행됩니다!
그런데 얘는 똑같이 이렇게 뜨네요ㅠㅠ 0x40000000 | 0x3b 으로 rax에 넣어줬고 아래 보니까 그 syscall이 execve인 것도 인식(?) 하는 것 같은데 계속 저렇게 뜹니다ㅠㅠㅠㅠㅠ
[ Process PID=250478 runs in x32 mode. ]
execve#64(0x404110, 0, 0) = -1 ENOSYS (Function not implemented)
혹시 바이너리를 컴파일 할 때 -m32 조건을 붙여서 해야하는 걸까요..?
혹시 맥북에서 실습을 진행하시는 걸까요? Rosetta2를 기반으로 돌아가는 VM의 경우 x86-64 바이너리에 대한 동작이 실제 x86-64 머신이나 full emulation 환경과는 다르기 때문에 나타나는 문제일 수도 있을 것 같습니다 (이 실습은 system call 표준을 따르지 않기 때문에 특히 그럴 것 같습니다).