본문 바로가기

게임 보안8

7. 게임 플로우 조작하기 본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다. 따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다. 문제 시 비공개 처리하도록 하겠습니다. 후킹이란? 코드가 수행되는 과정에 개입해 프로세스를 변경하고 모니터링을 수행한 후 이를 원상태로 돌아가지 않게 방지하는 기술 프로세스의 모든 코드를 삭제하거나 실행 순서를 변경해 주입된 함수를 실행하도록 하는 것 NOP을 통해 코드 삭제하기 NOP을 사용해야 하는 경우? 투명화된 적을 상대해야 하는데 그 적이 체력바도 보이지 않아 접근하는지조자 알 수 없을 때 for (int i = 0; i < creatures.size(); i++.. 2022. 10. 4.
함수 포인터가 함수를 직접 가리키지 않는다!? 함수 포인터가 가진 주소가 함수 주소가 아니다 오늘 nop코드 덮어쓰기 실습 도중 알게 된 사실인데 함수 포인터에 함수 주소가 바로 담기는게 아님 함수의 주소는 별도 메모리에 존재하고 그 함수의 시작점으로 jmp하도록 offset이 있는 배열이 있음 함수 포인터 외에도 함수의 주소에 접근하는 연산들은 (함수포인터를 DWORD로 바꿔서 담는다던가) 모두 이 offset 배열의 특정 인덱스를 가리키도록 되어 있고, 함수 포인터로 함수를 호출하면 이 인덱스로 점프 -> 인덱스에서 다시 함수로 점프 drawCreatureHealthBarExample이 함수의 이름이고 조사식에서 함수의 실제 주소를 의미함 그리고 함수를 가리키는 함수포인터 mem이 있는데 함수랑 주소가 다름 함 수 : 0x00b770f0 함수 포.. 2022. 10. 2.
6. 코드 인젝션 본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다. 따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다. 문제 시 비공개 처리하도록 하겠습니다. 코드 인젝션이란 프로세스가 수행되는 메모리 공간과 실행 환경에서 외부 코드를 수행하도록 강제하는 것 코드 인젝션 방법 코드 케이브를 만들고 스레드를 주입하는 방법 직접 외부 바이너리를 이식하는 것 스레드 인젝션으로 코드 케이브 주입하기 다른 프로세스에 코드를 주입하는 첫 단계는 셸 코드 셸 코드란? 위치와 상관없이 수행 가능한 어셈블리 코드를 바이트 배열 형태로 작성한 것 셸 코드를 작성해 코드 케이브를 만들 수 있고, 코드 케이브는.. 2022. 10. 1.
5. 게임 메모리 읽고 쓰기 본 게시글은 메모리에 대한 깊은 이해를 위해 에이콘 출판사의 "봇을 이용한 게임 해킹" 서적을 보고 필기한 자료입니다. 따라서 디테일한 부분에서 본 서적의 실제 내용과 다를 수 있고 글쓴이의 주관이 들어가 있음을 참고해주시기 바랍니다. 문제 시 비공개 처리하도록 하겠습니다. 코드를 작성할 때 메모리가 어떻게 동작하는지 늘 염두에 두고 있어야 한다. 게임 프로세스 식별자 알아내기 게임 메모리에 무언가 쓰려면 프로세스 식별자 (PID)를 알아야 한다. PID는 활성화된 프로세스를 구별할 수 있는 고유 번호 시각적으로 확인 가능한 창이라면 GetWindowThreadProcessId()로 PID를 구할 수 있다. 첫 번째 파라미터로 창의 핸들을 가짐 두 번째 파라미터로는 PID를 받을 DWORD 변수의 포인터.. 2022. 9. 29.