전체 글339 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. 5-2. Virtual Memory Allocation 가상 메모리를 사용하는 방법 유저 영역엔 다양한 dll, exe 그리고 힙, stack이 할당된다. 그럼 나머지 비어 있는 곳은? VirtualAlloc이라는 함수를 통해 사용이 가능하다. lpAddress : 예약을 원하는 주소(64k의 배수), 관례적으로 0을 넘김 (0을 넘기면 사이즈에 맞는 주소를 찾아준다) dwSize : 예약할 주소의 크기 (PAGE 크기(4K)의 배수) flAllocationType : 예약할건지, 예약하고 할당할건지 (MEM_RESERVE : 예약 / MEM_COMMIT : 할당) flProtect : 페이지 보호속성 (PAGE_READWRITE 등) 예약과 할당 이 함수의 3번째 인자가 예약인지 할당인지 정하는 옵션이 있는데, MEM_RESERVE는 원하는 가상 메모리 크.. 2022. 9. 18. 이전 1 ··· 72 73 74 75 76 77 78 ··· 85 다음