반응형

포인터 3

bof를 이용하여 함수포인터 공략하기

/* * http://sosal.tistory.com/ * made by so_Sal */ 함수포인터를 블로그에 정리한적이 없었네요.. 이번기회에 함수포인터도 정리할겸~~ 포스팅합니다. 배열의 이름이 배열이 메모리의 어떤 공간에 저장되어있는지를 가리키듯, 함수의 이름은 함수의 내용이 메모리 어디에 적재되었는지 포인터가 되어 가리키고 있는것입니다. 주로 윈도우에서 DLL을 로드할 때, 함수포인터를 사용합니다. #include int foo(){ //func1 foo() printf("foo - function1\n"); return 1; } int boo(){ //func2 boo() printf("boo - function2\n"); return 2; } int main(){ int value; int ..

Linux/Linux_technic 2010.11.06

C programming :: Void형 포인터와 NULL 포인터

/* * http://sosal.tistory.com/ * made by so_Sal */ Void* NULL* Void * 포인터는 모두 주소를 저장하는 변수로 모두 4바이트의 같은 크기를 갖고있다. (물론 32비트 프로그래밍에서 이야기한다.) 주소값이 가지는 값들은 결국 컴퓨터에겐 단순한 숫자일 뿐이지만, 그 숫자가 의미하는것에 따라 의미를 부여하여 int, char, double 등 자료형을 만들었다. 위와 같이 일반적인 포인터는 자신이 가리키는 주소가 가지는 자료형과 같은 자료형을 쓴다. 하지만 포인터 자료형중에 void라는 특별한 놈이 있다. 이놈은 일반적인 포인터와 달리 데이터 자료형이 명시되지 않은 포인터이다. 포인터는 단지 주소에 접근하기 위함 뿐만 아니라 * 연산자를 이용해 값을 변경하고..

BOF - 01.buffer over flow? 메모리 구조, 레지스터

/* * http://sosal.tistory.com/ * made by so_Sal */ :: 버퍼 오버플로우 :: 어떤 메모리 공간에 사용자가 데이타를 입력할 수 있는 기회가 생겼을 때, 시스템이 원하는 메모리 공간 이상의 코드를 대입하여 ret라는 녀석을 조절하여 시스템에게 사용자가 원하는 행동을 하도록 합니다. 이게 무슨뜻이냐면.. 천천히 내려갑시다. 아래는 시스템 메모리 구조를 나타낸다. 환경변수, 프로그램 인자값중 문자열 환경변수, Argv 포인터 인자값의 수 스택 영역. heap 영역. 초기화 되지 않은 변수 초기화 된 변수 읽을 수 있는 부분이 있으나, 변조될 경우 Segfault 발생 인텔 80x86 CPU 레지스터 - 범용 레지스터 - AX - Accumulator :: 산술연산 BX ..

반응형