linux 어셈블리 코드 관련 질문드립니다.
조회수 455회
안녕하세요, 시스템 콜에 대해서 공부하고 있는데,
fork()
{
movl 57, %eax
int $0x80
}
이런식으로 함수에 대한 어셈블리어 코드는 어떻게 찾을 수 있나요?
제가 받은 정보는 Glibc 코드가 인터넷에 있으니 검색해서 쓰면 된다고 되어있는데 찾을 수가 없었습니다. 일단 Glibc코드라고 해서 libc-2.27.so파일을 봤는데(실습 환경이 Glibc 2.27) 함수 이름밖에 안나왔습니다.
물론 구글링으로 뒤져보니깐
section .bss
buffer: resb 1
section .text
global _start
_start:
mov eax, 3 ; system call number (sys_read)
mov ebx, 0 ; file descriptor (stdin)
mov ecx, buffer ; buffer to keep the read data
mov edx, 1 ; bytes to read
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
mov ebx, 0 ;exit status
int 0x80 ;call kernel
이렇게 소스코드를 찾긴 했는데, 이건 그냥 컴파일링 한 뒤에 다시 disassemble한건가요?
이런 asm코드를 찾고싶으면 어떤 파일을 봐야하나요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
32bit linux calling convention 과 syscall 호출 방식에 대해서 알아보시는게..
https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md 여기 드가시면... 호출번호와 소스코드(c) 있으니 참고부탁드려요..
댓글 입력