전체 글328 5-4. Stack Memory 스택이란? 지역 변수, 매개 변수를 주로 보관하는 메모리 스택의 특징 스레드 당 한 개의 스택 생성(프로세스는 생성 시 1개의 주스레드를 가짐) 스택은 아래로 자란다 (높은 주소에서 낮은 주소 방향으로 커짐) 스택의 동작 방식 스레드가 만들어지면 1M 가상 공간을 예약한다. 그리고 1개를 확정해 놓고 다음 페이지도 같이 확정하는데 다음 페이지는 확정 시 PAGE_GUARD 보안 옵션을 같이 걸어놓음 PAGE_GUARD는 최초 접근 시 예외를 발생시키는 옵션 (윈도우가 처리) 그래서 현재 페이지를 다 쓰고 다음 페이지에 접근하면 예외가 발생하고 그 시점에서 다시 다음 페이지를 PAGE_GUARD 옵션으로 할당한다. 1M는 총 256페이지를 일컫는데, 곧 0~255개의 페이지를 의미한다. 253번까지 확정하.. 2022. 9. 19. 5-3. Heap Memory VirtualAlloc의 특징 메모리의 시작 주소는 64K의 배수여야 한다. 메모리 크기는 PAGE 크기의 배수여야 한다. 힙 메모리의 역할 VirtualAlloc에서 할당한 메모리를 필요한 만큼 떼어다가 주는 것 필요할 땐 빈 공간을 떼어다 주고, 반납하면 사용가능하도록 다시 처리해주는 알고리즘 힙 메모리의 특징 기본 힙은 1MB로 예약 되고, 크기는 모자라면 자동으로 증가한다. 힙은 필요하면 또 만들 수 있음 힙을 사용할 때는 기본 힙에서 할당할 지, 새로 만든 힙에서 할당할 지 결정해야 한다. 힙 사용하기 기본 힙 핸들 얻기 : GetProcessHeap(); 힙에서 메모리 할당 : HeapAlloc() 힙에서 메모리 해지 : HeapFree() HeapAlloc hHeap : 할당할 힙의 핸들 d.. 2022. 9. 18. 1. 해킹 도구 본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다. 따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다. 문제 시 비공개 처리하도록 하겠습니다. 치트 엔진 게임 내의 메모리를 스캔할 수 있는 도구 메모리에는 HP, 공격력, 레벨 등 캐릭터에 민감한 데이터들이 올라와 있다. 목표로 하는 메모리의 값을 임의적으로 변화시키면서 오류를 줄여나가고 결국 해당 메모리 값을 추출할 수 있다. 포인터 스캐닝 포인터 체인을 사용하는 이유는 대규모 동적 메모리 할당이 발생할 때 게임 코드가 이를 참조할 수 있는 정적 주소가 대응되어야 하기 때문 게임 해커들은 포인터 체인을 찾아서 메모리에 접근.. 2022. 9. 18. CPP_1. AssortRock 8일차 오프라인 수업_220916 함수 포인터에 대한 이야기 함수 포인터는 반환타입(*함수포인터명)(인자타입) 으로 사용한다. 서버로부터 특정 명령을 받은 경우, 서버는 보통 숫자와 같은 글자들을 보내줌 그런 값들을 상황에 맞게 처리하기 위해 함수 포인터 사용 콜백 함수 템플릿에 대한 이야기 함수 오버로딩으로 만들 함수들이 너무 많다면 템플릿으로 만들면 편하다. 빌드 속도가 느려지지만 편리함이 더 좋음^_^ 템플릿 특수화 템플릿을 만들고 특정 타입에 대해 다르게 동작하도록 하는 방법 템플릿을 쓰는 이유가 편리함인데 타이핑이 늘어나는건 좀 손해같은 느낌 : 2022. 9. 18. 이전 1 ··· 69 70 71 72 73 74 75 ··· 82 다음