본문 바로가기

c

쉘코드 인코딩(Shellcode Encoding) 이 포스팅은 서적 '윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇'을 기반으로 작성한 포스팅입니다. 관련 포스팅 보러가기 쉘코드(Shellcode) 기초(1)쉘코드(Shellcode) 기초(2)범용 쉘코드(Universal Shellcode) (1)범용 쉘코드(Universal Shellcode) (2)메타스플로잇(Metasploit)을 이용한 쉘코드작성 쉘코드르 작성하는 방법을 포스팅을 다뤘었는데, 한가지 유의할 점이 있다. 실제 쉘코드를 작성하고 공격했을 경우 쉘코드가 정상적임에도 불구하고 이상하게 공격이 실행되지 않는 경우가 있다. 우리가 입력한 값을 프로그램 내부에서 처리하는 과정 중에 대문자가 소문자로 변환되기도 하고, 소문자가 대문자로 변하기도 하며, 유니코드로 변환되며 쉘코드 중간에 널.. 더보기
메타스플로잇(Metasploit)을 이용한 쉘코드 작성 이 포스팅은 서적 '윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇'을 기반으로 작성한 포스팅입니다. 이전 포스팅 보러가기 쉘코드(Shellcode) 기초(1) 쉘코드(Shellcode) 기초(2) 범용 쉘코드(Universal Shellcode) (1) 범용 쉘코드(Universal Shellcode) (2) 이전 포스팅 범용 쉘코드(Universal Shellcode) (2)를 보면 함수의 주소를 구할 때 어떠한 과정을 통해서 동적으로 구할수 있는지 확인하였다. 하지만 중요한 문제가 있다. 지금까지 다루었던 쉘코드는 단순히 cmd 명령을 실행시키는 코드였다. 이에 반해 실제 공격에 사용되는 쉘코드는 조금 더 다양하고 강력한 기능을 수행하게 된다. 조금더 다양하고 강력한 기능을 수행하기 위해서는 더.. 더보기
오버워치 에임핵(Overwatch Aimbot) 먼저 이 글은 게임산업진흥에 관한 법률 제32조 제1항 8호를 침해할 목적이 전혀없으며, 이를 통한 문제 시 언제든지 글을 삭제할 것을 미리 알립니다.개인의 학습을 위하여 제작하였으며, 해당 프로그램의 소스코드 및 실행 파일의 배포는 절대 하지 않습니다. 제32조(불법게임물 등의 유통금지) 누구든지 게임물의 유통질서를 저해하는 다음 각호의 행위를 하여서는 아니 된다.8호. 게임물의 정상적인 운영을 방해할 목적으로 게임물 관련사업자가 제공 또는 승인하지 아니한 컴퓨터 프로그램이나 기기 또는 장치를배포하거나 배포할 목적으로 제작하는 행위 서문 한동안 작성자 본인이 참으로 즐겁게 했던 게임이다. FPS를 기반으로 한 게임에 캐릭터마다 고유 능력과 스킬을 부여하므로써 신선하게 다가온 FPS였다. 게임을 하던 중.. 더보기
관망해석 프로그램 Hardy-Cross 관망 계산법 Hardy-Cross 관망 계산법을 이용한 프로그램을 만들어봤다. 단순한 재미로 만들었기에 폐합회로가 1개인 경우에 해당하며 무수한 노가다를 방지하기위해 오차범위를 0.001%이 내일 경우 반복문을 종료하는 형태로 프로그램을 만들었다. 더보기
메모리의 동적 할당 ◇ 메모리의 동적 할당 함수의 반환형은 void형 포인터고 인자는 정수가 들어간다. 예시로 int main(void){void * ptr1 = malloc(4); // 4바이트가 힙 영역에 할당void * ptr2 = malloc(12); // 12바이트가 힙 영역에 할당 . . . . free(ptr1); // ptr1이 가리키는 4바이트 메모리 공간 해제free(ptr2); // ptr2이 가리키는 4바이트 메모리 공간 해제 . . . . } 다음과 같은 소스코드에서 malloc함수의 활용을 확인해보자. malloc(4);malloc(12); 함수는 힙 영역위의 메모리 공간에 4바이트 만큼의 공간을 확보하고 확보된 메모리 공간의 주소값을 반환한다. 힙 영역위의 메모리 공간에 12바이트 만큼의 공간을 .. 더보기
함수 포인터 ◇ 함수 포인터의 이해 변수만 메모리 공간에 저장되는 것이 아니다. 프로그램의 실행의 흐름을 구성하는 함수들도 바이너리 형태로 메모리 공간에 저장되어서 호출 시 실행이된다. 이렇게 메모리상에 저장된 함수의 주소 값을 저장하는 포인터 변수가 '함수 포인터 변수'이다. 배열의 이름이 배열의 시작 주소값을 의미하듯, 함수의 이름도 함수가 저장된 메모리 공간의 주소값을 의미한다. 이러한 함수의 주소 값 저장을 위한 포인터 변수를 별도로 선언할 수 있으며, 이러한 용도로 선언된 포인터 변수를 가리켜 '함수 포인터 변수'라 한다. ◇ 함수 포인터 변수의 선언 함수 int SimpleFunc(int num) { . . . . } 위 함수의 반환형과 매개변수 선언은 각각 다음과 같다. · 반환형 int · 매개변수 선.. 더보기
두 가지 형태의 문자열 표현 ◇ 두 가지 형태의 문자열 표현 char str1[ ] = "My String"; char *str2 = "Your String"; str1은 그 자체로 문자열 전체를 저장하는 배열 str2는 메모리상에 "Your String"을 저장하고 첫번째 문자를 가리키는 포인터 변수이다. 배열이름 str1은 계속해서 문자 M이 저장된 위치를 가리키는 상태이어야 하지만 포인터 변수 str2는 다른위치를 가리킬수 있다. ◇ 두 가지 형태의 문자열 표현의 예시 #include int main (void) { char str1[ ] = "My String"; //변수 형태의 문자열 char *str2 = "Your String"; //상수 형태의 문자열 printf("%s %s \n", str1, str2); str2 .. 더보기
컴퓨터 프로그래밍 설계 과제#3_HW03 #include #include #include int main(void) { float f_num = 0.0f; int arr[4]; int binary_arr[32] = {0,}; //배열을 0으로 초기화한다. int test_num = 0; unsigned char *ucp; int iCnt; int i=0; int j=0; while(1) { for(i=0 ; i 더보기