어셈블리 코드에서
movl 12(%ebp), %eax
라는게 나오더군요
제가 알기로는 %eax값을 %ebp에서 12만큼 더한 주소값에 복사한다 라는거 같은데
왜 책에는 %ebp에서 12만큼 더한 주소값의 내용을 eax에 복사한다 라고 되어있는지 알 수가 없네요 ...
왜 이런지 알려주시면 감사하겠습니다.
Eclipse에서 프로그램을 실행 시켜보면 실행에 필요한 이미지 파일이나 폰트 파일을 읽지 못했다고 나오면서 프로그램이 중단되네요. 그런데 직접 프로그램 실행 파일이 있는 폴더에 가서 실행해 보면 잘되구요. 리소스파일들의 위치를 별도로 지정해 줘야 하는건가요?
안녕하세요.
바로 밑에 제가 쓴 글에 연관한 문제입니다. 예를 들어 아래와 같은 4개의 비트 필드의 각 비트가 세팅된 횟수를 누적해서 구하려면 여러분은 어떻게 하시겠습니까?
수백에서 수천개의 플래그를 담을 데이터 구조를 생각하다 일종의 String형을 비트 필드로 쓰기로 했습니다. 예를 들어 10000개의 플래그 엔트리를 가지는 비트 필드를 사용하기 위해 1250바이트짜리 문자열형을 사용한 것입니다. 비트는 가장 왼쪽부터 사용합니다.
char str[] ="a1" "b2" "c3";
버퍼 오버플로어에 대해 공부를 하는데 shellcode를 실행시키는 소스 중에 이런 식으로 된 코드가 있던데, 그럼 메모리상에 어떤 식으로 저장되나요?
str[3][3] = {"a1", "b2", "c3"} 와 같은 식으로 저장될까요?
unsigned int dims_1[10], dims_2[10] 이 두 배열에 값을 초기화 하는 과정은 현재 이렇습니다.
for(i=0, j=1; i<10; i++, j++) { addr = getaddr(i); temp = addr << 8; temp |= addr; dims_1[i] = temp; addr = getaddr(j); temp = addr << 8; temp |= addr; dims_2[i] = temp; }
질문은 소스 크기의 증가없이 성능,
좀 유치하고 자극적인 질문같지만 주목을 끌 수 있을 거라는 짧은 생각에 그렇게 써봅니다. 컴을 한대 샀습니다. 리눅스를 설치하고 홈 서버 겸 웹 서버로 사용할 생각이예요. 주로 제 공부가 목적입니다. 공부 주제는 머 리눅스예요.
질문이 있어서 이렇게 글올립니다.
제가 알기로는 gcc 2.96상위버전에서는 스택에 할당되는 버퍼의 크기를 16바이트 단위로 할당하고
뒤에 이어서 8바이트의 dummy바이트를 추가하는 것으로 알고 있습니다.
예를 들어
char buf[10]; char buf2[10];이라면
[ret][sfp][dummy8바이트][6바이트+buf 10바이트][4바이
커널 컴파일 이후,
printk() 함수등으로 커널에서 출력을 하거나 커널의 부팅 과정이 출력될 때 즉, 커널에서 출력이 될 시에 항상 [17179569.184000], [17179728.596000], [17179580.800000]와 같은 메시지가 계속 메시지앞에 출력됩니다
이 메시지는 왜 나타나고 있으며 무엇을 의미하는 것이고 어떻게 하면 안나