본문 바로가기

전체 글330

1. Template Instantiation 본 글은 코드누리의 Template Programming 강좌를 개인 학습 목적으로 정리한 글 입니다. https://www.ecourse.co.kr/course-status/ 템플릿 템플릿은 함수를 만드는 틀 특정 함수에 대해 많은 함수 오버로딩이 필요한 경우 유용하다. 템플릿 인스턴스화 템플릿은 말 그대로 함수를 만드는 틀이기 때문에 그 자체는 함수가 아니다. 클래스처럼 필요할 때 인스턴스를 만드는 개념 이런 인스턴스는 명시적 인스턴스화, 암시적 인스턴스화로 나뉜다. 암시적 인스턴스화는 통상 평소에 사용하는 것처럼 square a; 이런 식으로 사용하는 것 명시적 인스턴스화는 사용하기 전에 위에서 사용할 것이라고 미리 선언해준다. 암시적 인스턴스화 #include #include using names.. 2022. 9. 26.
2. 코드에서 메모리로 - 기본 원리 본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다. 따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다. 문제 시 비공개 처리하도록 하겠습니다. . 근본적으로 게임 코드, 데이터, 입력값과 출력값과 같은 개념들은 메모리 바이트를 변형시킨 개념들 게임 해커들은 게임 데이터를 조작함으로써 게임에서 사람에게 도움이 되는 이익을 챙긴다. 이를 위해선 개발자의 코드가 컴파일되고 실행될 때 사람이 어떻게 인지하고 어떤 영향을 미치는지 이해해야 함 컴퓨터처럼 사고하기 위해서 숫자와 텍스트, 간단한 구조체와 복합체들이 어떻게 메모리에 바이트 단위로 표시되는지 알아야 함 숫자 데이터 플레이어.. 2022. 9. 24.
[PUSH PUSH] 게임 로직 구현 - AssortRock 11~12일차 오프라인 수업_220921-22 본 글은 어소트락에서 배운 내용을 나름 정리하여 기존 코드를 안보고 제 방식대로 다시 코딩한 것이므로, 디테일한 부분은 학원에서 진행한 부분이 아닌 제 개인적인 코드이 들어갔음을 먼저 밝힙니다. 1. 메인 로직 // main.cpp #include "pch.h" int main() { std::locale::global(std::locale(".UTF-8")); Application::GetInstance().Initialize(); while (Application::GetInstance().GetStatus()) { Application::GetInstance().Update(); Application::GetInstance().Rendering(); } Application::GetInstance(.. 2022. 9. 23.
7-2. API Hooking API Hooking이란? API의 호출을 가로채는 기술 예를 들면, A라는 함수를 호출했는데 내가 만든 B라는 함수를 호출하는 것. IAT Hook, DLL 함수의 호출 원리 DLL이 로드되는 위치를 알고 있고, 그 DLL이 가진 함수의 Offset을 알고 있다면? 어셈블리 명령으로 call 0x주소로 호출할 수 있을 것이다. 그러나 컴파일/링크 시 DLL 안의 함수 주소는 알 수 없다 (ASLR 때문) ASLR(Address space layout randomization)이란? ASLR은 실행 시 exe, dll, stack, heap등의 주소를 임의로 변경하는 보안 기법 ASLR을 끄고 MessageBoxA의 주소 덮어쓰기 #include #include using namespace std; ty.. 2022. 9. 21.