프로그램/C/C++/OOC 31

Visual Studio Random Stack Address option off 랜덤 스택 보안 옵션

Address space layout randomization Visual Studio에서는 고정되어있는 stack 시작 주소를 랜덤화하여 임의주소로 바꾸는 옵션을 켜 놓았음.이 기술을 Address Space Layout Randomization(ASLR)라고 함. 관련 MSDN : https://msdn.microsoft.com/ko-kr/library/bb384887.aspx 이걸 끄려면 아래 그림에 따라 /DYNAMICBASE 를 off로 바꾸면 됨. 또한 cl로 컴파일 시에도 넣을 수 있는데 사용 법은 다음과 같음 cl main.c /link /DYNAMICBASE:NO 리눅스의 경우 관련 정보는 아래 링크를 참조http://wisecat.tistory.com/1091

Linux gcc ASLR 해제 ( 랜덤 스택 Random Stack 보안 옵션)

ASLR : Address Space Layout Randomization프로그램 실행 시 주소 할당을 무작위로 배치시켜 실행 할 때 마다 프로그램 내부에서 사용하는 주소를 다르게 만드는 메모리 보호기법의 일종. 특정 주소를 공략하는 해킹/크래킹 같은 프로그램을 무력화할 수 있는 기법 중의 하나.최근 컴파일러, 라이브러리, 운영체제 레벨에서 비슷한 기법을 거의 다 동원하고 있는 추세.Visual Studio도 컴파일러 차원에서 이를 도입하고 있으며 관련한 해제 방법은 아래 링크를 참조.http://wisecat.tistory.com/1092 gcc의 경우는 커널 차원에서 On/Off가 가능. Root 권한에서 아래를 수행 sysctl -w kernel.randomize_va_space=0 이후 출력 되는..

Hexaview : MSDFunction(void *, unsigned int) 초간단 Hexa viewer 만들기(void*/No Use Buffer)

#include #define ROW_LINE 16 // 메모리 출력 행 수 void MSDFunction(void *, unsigned int); int main() { int iNum = 0x12345678; MSDFunction(&iNum, 10); return 0; } void MSDFunction(void *vAddr, unsigned int print_line) // Memory Status Display Function /******************************************************************************* 기능 : 인수로 넘겨받은 주소로부터 ROW_LINE개 단위를 1줄로 print_line의 숫자 만큼 화면에 출력 인수 : 출력할 대..

Hexaview : MSDFunction(void *, unsigned int) 초간단 Hexa viewer 만들기(No Use Buffer)

#include #define ROW_LINE 16 // 메모리 출력 행 수 void MSDFunction(void *, unsigned int); int main() { int iNum = 0x12345678; MSDFunction(&iNum, 10); return 0; } void MSDFunction(void *vAddr, unsigned int print_line) // Memory Status Display Function /******************************************************************************* 기능 : 인수로 넘겨받은 주소로부터 ROW_LINE개 단위를 1줄로 print_line의 숫자 만큼 화면에 출력 인수 : 출력할 대..

Hexaview : MSDFunction(void *, unsigned int) 초간단 Hexa viewer 만들기

#include #define ROW_LINE 16 // 메모리 출력 행 수 void MSDFunction(void *, unsigned int); int main() { int iNum = 0x12345678; MSDFunction(&iNum, 10); return 0; } void MSDFunction(void *vAddr, unsigned int print_line) // Memory Status Display Function /******************************************************************************* 기능 : 인수로 넘겨받은 주소로부터 ROW_LINE개 단위를 1줄로 print_line의 숫자 만큼 화면에 출력 인수 : 출력할 대..

OOC First Programming in Windows.....Cygwin Base

난 일단 복잡한 건 딱 질색이다. 리눅스에서 OOC를 공부할 수도 있지만 현실에서 윈도우를 더 많이 쓰게 되므로 이 강좌는 윈도 기반으로 진행할 것이다. Cygwin을 설치하면 리눅스 기반 툴들을 어느 정도는 잘 쓸수 있기 때문에 도전해 본다. 아이폰을 공부하기 전에 OOC를 먼저 공부해야 겠다는 생각을 먹은지 어언... 몇년인지 모르지만... 암튼 이제 끄적여 본다. 우선 Cygwin을 설치한다. www.cygwin.com에서 무료로 설치 가능하다. 다운받고 설치하면 리눅스 처럼 독특한 온라인 다운 방식을 사용한다는 것을 알 수 있다. 아무튼 설치 중간에 반드시 체크해야 하는 옵션이 있다. Devel에 install을 체크하는 것이다. 이것을 체크하면 대부분의 리눅스 개발 툴들을 사용해 볼 수 있다. ..

File Hexa Viewer : 저수준 파일 입출력 사용, C

#include #include #include #define LEN 16 int main(int iParam, char *cpParam[]) { int iCnt; int iFile; unsigned char ucBuf; unsigned char ucaStr[LEN+1]=""; if(2 != iParam) { fprintf(stdout, "파일 이름을 쓰세요\n"); return 0; } iFile = open(cpParam[1], O_RDONLY); if(0 > iFile) { fprintf(stdout, "[%s]파일을 찾을 수 없습니다\n", cpParam[1]); return 0; } printf( "┌────────┬────────────────────────────────────────────..