본문 바로가기

우분투에서 arm 크로스컴파일 및 디버깅 우분투에서 arm 크로스컴파일 및 디버깅 주의 : arm 종류는 굉장히 다양하고 안드로이드, ios 디바이스 등 여기에 맞게 크로스컴파일 해야함. (ELF 64-bit ARM aarch64, Mach-O 64-bit ARM aarch64 등 디바이스에서 돌아가게 하려면 맞춰줘야함) 여기서는 간단하게 ubuntu에서 단순히 arm 어셈블리 연습겸 크로스컴파일하고 qemu와 gdb-multiarch를 이용하여 디버깅 하는 방법을 다룸. 크로스컴파일러 설치 arm 32bit sudo apt-get install gcc-arm-linux-gnueabi sudo apt-get install g++-arm-linux-gnueabi arm 64bit sudo apt-get install gcc-aarch64-linu..
gcc 64비트 환경에서 32비트로 컴파일 gcc 64비트 환경에서 32비트로 컴파일 멀티 패키지 설치 sudo apt-get install gcc-multilib 64비트로 컴파일하기 gcc -o 목적파일명 소스파일명 -m64 32비트로 컴파일하기 gcc -o 목적파일명 소스파일명 -m32
Firmadyne 최종 Qemu 실행문 해석 [run.sh 파일 내 최종 qemu 실행문] ${QEMU} -m 256 -M ${QEMU_MACHINE} -kernel ${KERNEL} -drive if=ide,format=raw,file=${IMAGE} -append "root=${QEMU_ROOTFS} console=ttyS0 nandsim.parts=64,64,64,64,64,64,64,64,64,64 rdinit=/firmadyne/preInit.sh rw debug ignore_loglevel print-fatal-signals=1 user_debug=31 firmadyne.syscall=0" -nographic -net nic,vlan=0 -net socket,vlan=0,listen=:2000 -net nic,vlan=0 -net tap..
[오류] /bin/sh 실행 시 "no such file or directory" [오류] /bin/sh 실행 시 "no such file or directory" 나는 지금 Qemu에 firmware를 올려놓고 fimware RootFS의 root path를 새로운 root 경로로 chroot 한 상태이다. 여기서 펌웨어에 있는 /bin/sh를 실행시키려 하는데, 분명히 파일이 존재함에도 "no such file or directory"라는 문구가 뜬다. 왜? 이 진짜 의미는 "내가 지금 얘를 실행시킬 수가 없어, 뭔가가 없잖아!" 라는 뜻이다. library dependency를 충족시켜주자. ldd /bin/bash : 의존성 라이브러리를 확인. mount -o bind : 의존성 띄는 라이브러리가 있는 폴더를 마운트 시켜도 됨. (chroot가 아닌 원본에는 라이브러리가 있을테..