전체 글328 [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. [PUSH PUSH] 게임 구조 파악 및 설계 - AssortRock 10일차 오프라인 수업_220920 1, 게임 전반적 흐름을 관리할 관리자 객체 만들기 새 필터 -> HighLevel_Interface를 만들고 클래스 Application 추가 //Application.h #pragma once class Application { public: Application(); ~Application(); bool Initialize(); void Update(); void Rendering(); void Destroy(); private: }; //Application.cpp #include "Application.h" Application::Application() { } Application::~Application() { } bool Application::Initialize() { return tru.. 2022. 9. 21. 이전 1 ··· 66 67 68 69 70 71 72 ··· 82 다음