본문 바로가기

전체 글330

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.
[PUSH PUSH] 게임 로직 구현 - AssortRock 17일차 오프라인 수업_220929 로직 변경 사항 Ball을 밀었을 때 그 위치가 Ball 혹은 벽이면 그 위치로 이동하지 못하게 하는 로직 추가 House에 Ball을 넣었을 때 House가 반짝거리게 하는 효과 넣기 (Pen의 도입) 숙제 (플레이어가 제일 마지막에 그려지도록 하기) 이동불가 로직 // Player.cpp if (map->GetPixel(ballPos) == L'▩' || map->GetPixel(ballPos) == L'●') { ballPos = prevBallPos; mPos = prevPos; } 만약 다음 볼이 움직인 위치를 가져와서 그 위치가 벽이거나 Ball일 경우 움직이기 전 위치로 세팅해준다. House에 볼을 넣었을 때 효과 처리 Ball이 들어갔는지 아닌지 여부에 따라 해당 칸에 bool 값으로 표.. 2022. 9. 30.