실리콘 맥에서는 아키텍처가 달라서 amd64 환경을 구축해서 디버깅하기 까다롭다.
qemu 기반으로한 colima라는 도커 런타임을 사용하는 방법이 있다.
colima 도커 런타임 구축
1. colima 설치
brew install docker brew install colima brew install docker-buildx
2. “x64”이름으로 64기가 디스크, 8코어, 4기가 램으로 qemu 기반 VM 설정해서 시작
colima start -p x64 -a x86_64 -c 8 -m 4 -d 64 --vm-type qemu
2-1. 제거
colima delete x64
2-2. 멈추기
colima stop x64
3. colima로 도커 런타임 변경됐는지 확인
docker context ls
4. AMD64 아키텍처의 Ubuntu 24버전 컨테이너 생성 및 실행, “ubutun22” 이름으로 생성
다음 컨테이너의 포트를 호스트의 포트로 포워딩
- 컨테이너 포트 -> 호스트 포트 포워딩
- 80 -> 8000
- 1234 -> 12345
- 8000 -> 18000
- 8001 -> 18001
- 8002 -> 18002
docker run -it --platform linux/amd64 \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --security-opt apparmor=unconfined \ -p 22222:22 -p 8000:80 -p 12345:1234 -p 18000:8000 -p 18001:8001 -p 18002:8002 \ --name ubuntu22 ubuntu:22.04
- ubuntu22 컨테이너 시작/종료
docker start ubuntu22 docker stop ubuntu22
- 쉘 진입
docker exec -it ubuntu22 bash
samba 세팅
맥에서 윈도우 winscp 대신 역할하기 위해 세팅.
vscode에서 쉽게 코드 수정하기 위함.
1. samba 설치
sudo apt install -y samba
2. “ubuntu” 이름을 가진 samba 계정 생성
sudo smbpasswd -a ubuntu
3. samba 포트 수정 및 공유 폴더 지정
sudo nano /etc/samba/smb.conf
[내용]
[global] smb ports = 8001 (...) [ubuntu] comment = samba shared directory path = /home/ubuntu read only = no writable = yes guest ok = no valid user = ubuntu create mask = 0777 directory mask = 0777
Dobby 후킹 프레임워크 설치/세팅
바이너리에서 어셈블리어 실행 중에 레지스터 후크할때 유용, 또한 다양한 OS 지원
1. git clone
git clone https://github.com/jmpews/Dobby.git
2. 옛날 버전으로 되돌리기
cd Dobby git checkout d353eea7594d1ac85db84065aeb4d1300d9f3248
3. 소스코드 수정 (https://github.com/jmpews/Dobby/issues/202)
nano ~/Dobby/source/MemoryAllocator/NearMemoryAllocator.cc
MemBlock NearMemoryAllocator::allocateNearBlockFromUnusedRegion, MemBlock NearMemoryAllocator::allocateNearBlockFromUnusedRegion 함수에 있는 코드 수정.
min_valid_addr = pos - search_range; // if pos < search_range, and min_valid_addr will be a large value,this maybe a bug max_valid_addr = pos + search_range;
이 다음에
min_valid_addr = pos >= search_range ? (pos - search_range) : 0;
내용 추가
4. Dobby 빌드 / 설치
mkdir build_for_host && cd build_for_host cmake .. make -j8 sudo cp libdobby.so /usr/local/lib sudo ldconfig sudo cp ~/Dobby/include/dobby.h /usr/local/include
==============================================
기존 컨테이너 유지한채 추가 옵션을 넣어 반영하려면?
1. 기존 컨테이너를 이미지로 저장
docker commit ubuntu22 ubuntu22_2
2. 새로운 옵션을 알아서 잘…. 적용하여 새 컨테이너 실행
docker run -it --platform linux/amd64 \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --security-opt apparmor=unconfined \ -p 22222:22 -p 8000:80 -p 12345:1234 -p 18000:8000 -p 18001:8001 -p 18002:8002 \ --name ubuntu22_2 ubuntu22_2