본문 바로가기

전체 글330

4. 고급 메모리 포렌식 본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다. 따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다. 문제 시 비공개 처리하도록 하겠습니다. 근성 있는 해커라면 지속적인 해킹 방어에 대응하기 위해 혹은 메모리의 복잡한 데이터 구조를 파악하고 특정 데이터 위치를 찾아내기 위해 최고 수준의 메모리 포렌식 기법을 배워야 한다 목적 추론하기 캐릭터의 체력값을 찾는 방법 struct PlayerVital { int current, maximum; }; PlayerVital health; printString("Health: %d of %d\n", health.current, hea.. 2022. 9. 28.
3. x86 어셈블리 크래시 코스 본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다. 따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다. 문제 시 비공개 처리하도록 하겠습니다. 프로그램의 소스 코드가 바이너리로 컴파일 될 때 불필요한 모든 부분이 제거되고 기계어로 바뀐다. 기계어는 오직 바이트로만 구성됨 기계어는 프로세서에 직접 피드백을 제공하고, 명령한다. 0과 1로 트랜지스터의 상태를 변경하는 과정을 이해하는 건 어렵기 때문에 좀 더 쉽게 소통하기 위해서 어셈블리와 같은 기계어로 작업을 수행함 어셈블리 언어 니모닉스라고 부르는 짧은 형태의 명령어와 피연산자로 표현하며 문법이 매우 간단 게임 해커에게 가장.. 2022. 9. 28.
CPP_1. AssortRock 15일차 오프라인 수업_220927 std::pair 구현 pair는 map을 구성하는 요소 map과 pair는 항상 같이 쓰임 namespace ya { template class pair { public: public: T1 first; T2 second; }; } pair의 기본 모양 템플릿으로 타입 2개를 받아서 그 타입에 대응하는 값의 쌍으로 만들어짐 외부에서 first와 second에 접근할 수 있으므로 데이터를 public으로 뺌 pair() : first(T1()) , second(T2()) {} // 생성자 pair(const T1& f, const T2& s) : first(f) , second(s) {} // 이동 생성자 pair(T1&& f, T2&& s) : first(f) , second(s) {} 기본 생성자와 .. 2022. 9. 28.
5. 템플릿 기본 문법 - typename, template 본 글은 코드누리의 Template Programming 강좌를 개인 학습 목적으로 정리한 글 입니다. https://www.ecourse.co.kr/course-status/ typename 키워드에 대한 개념 #include #include using namespace std; using namespace boost::typeindex; class Test { public: enum {value1 = 1}; static int value2; typedef int INT; using SHORT = short; class InnerClass {}; }; int Test::value2 = 3; int main() { Test::INT i = 3; Test::SHORT s = 5; int a = Test::.. 2022. 9. 28.