본문 바로가기

memory

[C] 0x0F 포인터(Pointer) From Evernote: [C] 0x0F 포인터(Pointer) 오늘은 C언어의 꽃이라고 할 수 있는 포인터에 대해서 알아보도록 하자 C언어가 H/W 제어권을 움직일 수 있는 강력한 언어가 된 이유라고 할 수 있다. 포인터는 다른 말로 메모리의 주소라고 할 수 있다. C 소스 코드에서는 '주소를 저장하는 변수'라고도 할 수 있다. 아래의 예제 코드를 살펴보자 int main() { int a = 7; double d = 3.14; char c = 'a'; return 0; } 일반 변수와 다르게 포인터 변수는 int*p ( = int * p = int* p = int *p ) 는 모두 동일한 변수선언이다. 즉, 공백을 무시하기 때문에 어떻게 선언을 하든 상관이 없는 것이다. int형 a나 double형.. 더보기
[System Security] push ebp / mov ebp,esp 0x08048420 :push ebp 0x08048421 :mov ebp,esp => passwd.test 를 DeskTop 에서 gdb 로 읽어들인 결과 상위 두 줄에도 역시 push ebp 를 확인할 수 있다. 이전에 ebp, esp 가 뭐냐고 물어 보신다면 여기로 가셔서 해당 용어를 한 번 읽어보고 오시면 좋을 것 같습니다. 클릭이 귀찮은 분들을 위해 ebp, esp 만 간략하게 이야기 하자면 EBP (Extended Base Pointer) - 현재 스택에 가장 바닥을 가리키는 포인터 (함수 내에서 스택상에 저장된 값을 참조할 때 기준) - 새로운 함수가 호출될 때마다 EBP 레지스터 값이 지금까지 사용했던 스택 꼭대기의 위에 위치하게 되고 새로운 Stack이 시작 - 따라서 EBP는 새로운 함수.. 더보기