본문 바로가기

분류 전체보기439

리버싱 스터디3 2016. 10. 11.
리버싱 스터디2 3.6 함수 리버싱 3.6.1 콜링 컨벤션 ⓵콜링 컨벤션이란? 함수가 어떻게 인자를 전달받고 자신을 호출한 함수에게 리턴값을 어떻게 다시 돌려주는지 에 대한 약속된 함수 호출 규약이다. - __cdecl 인자 전달 방법: 스택, 스택 해제 방법: 호출한 함수 sum() 함수의 호출 규약을 __cdecl로 정의 push 명령어를 이용해 높은 주소에서 낮은 주소로 데이터를 스택에 쌓아갑니다. __cdecl 호출 규약은 호출한 함수에서 스택을 해제 하기 때문에 호출된 함수에서는 스택 해제에 대해 신경을 쓰지 않습니다. - __stdcall 인자전달방법: 스택 스택 해제 방법: 호출된 함수 sum()함수의 호출 규약을 __stdcall 호출규약으로 정의한 것 __stdcall의 인자입력도 __.. 2016. 10. 11.
엔지니어링 스터디1 리버스 엔지니어링 우리말로 역공학이라는 의미다. 공학이 과학적 원리, 지식, 도구를 활용해 새로운 제품, 도구를 만드는 것이라면, 리버스 엔지니어링은 만들어진 제품, 도구를 분해해서 분석하거나 재조합하는 것이다. 줄여서 '리버싱'이라고도 사용. 리버싱 사용 사례 -컴퓨터 원리와 구조 이해 -프로그램 유지보수(실무에서 사용 중에 발견되는 버그를 리버싱으로 쉽게 찾는 경우가 많음) -개발에 활용(컴팩이 리버싱을 사용해 IBM의 바이오소스를 분석해 똑같은 기능을 가진 바이오소스 개발해냄) -보안 점검 및 취약점( 소스코드가 없는 프로그램의 버그를 정확히 알기 위해서는 리버싱 필요) -악성코드 분석 기초 지식 1.중앙연산처리장치 =>CPU는 외부로부터 명령어를 입력받아 해석하고 연산해서 실행하는 역할을 함 -C.. 2016. 10. 11.
버퍼오버플로우 -버퍼 오버플로우란? 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점이다. 컴퓨터 보안과 프로그래밍에서 이는 프로세스가 데이터를 버퍼에 저장할 때 프로그래머가 지정한 곳 바깥에 저장하는 것이다. 벗어난 데이터는 인접 메모리를 덮어 쓰게 되는데 다른 데이터가 포함되어 있을 수도 있는데, 손상을 받을 수 있는 데이터는 프로그램 변수와 프로그램 흐름 제어 데이터도 포함된다. >시스템 해킹분야에서의 버퍼오버플로우는 메모리 오류를 이용해 타겟 프로그램의 실행흐름을 제어하고 최종적으로 공격자가 원하는 임의의 코드를 실행하는 것 * c언어에서는 변수에 값을 할당할 때 값의 크기가 변수의 메모리 경계를 벗어나지 않는지 검사하는 내부 과정이 없기 때문에 프로그래머의 실수나 에러로 충분히 취약점이.. 2016. 10. 11.