분류 전체보기337 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. 7-1. DllMain 기본 개념 DllMain DLL에는 DllMain이라는 함수를 만들 수 있는데 필수는 아님. hInstDLL - dll의 모듈 핸들, DLL이 프로세스 가상 메모리에 로드됐을 때 그 시작 주소 fdwReason - 어떤 이유로 DllMain이 호출되었는지에 대한 내용 lpvReserved - 명시적 링킹인지, 암시적 링킹인지를 구분짓는 매개변수임 (명시적 (LoadLibrary) 호출이면 0, 아니면 0이 아닌 값) fdwReason에 대한 상세 내용 DLL_PROCESS_ATTACH : DLL이 처음 프로세스에 매핑될 때 (LoadLibrary 등) DLL_PROCESS_DETACH : DLL이 프로세스에서 언로드될 때 (FreeLibrary 등) DLL_THREAD_ATTACH : 매핑된 프로세스에서 쓰레드를 .. 2022. 9. 21. 이전 1 ··· 68 69 70 71 72 73 74 ··· 85 다음