함수 포인터가 가진 주소가 함수 주소가 아니다
- 오늘 nop코드 덮어쓰기 실습 도중 알게 된 사실인데 함수 포인터에 함수 주소가 바로 담기는게 아님
- 함수의 주소는 별도 메모리에 존재하고 그 함수의 시작점으로 jmp하도록 offset이 있는 배열이 있음
- 함수 포인터 외에도 함수의 주소에 접근하는 연산들은 (함수포인터를 DWORD로 바꿔서 담는다던가)
- 모두 이 offset 배열의 특정 인덱스를 가리키도록 되어 있고,
- 함수 포인터로 함수를 호출하면 이 인덱스로 점프 -> 인덱스에서 다시 함수로 점프

- drawCreatureHealthBarExample이 함수의 이름이고 조사식에서 함수의 실제 주소를 의미함
- 그리고 함수를 가리키는 함수포인터 mem이 있는데 함수랑 주소가 다름
- 함 수 : 0x00b770f0
- 함수 포인터 : 0x00b713f7
- 함수 포인터가 가리키는 주소로 가보자

- 함수 포인터는 e9 f4 5c 00 00 이라는 뭔지 모를 5바이트를 가리키고 있다.
- 그래서 저게 뭔지 알아보니..

- 현재 주소에서 offset하여 점프하는 기계어 코드였다.

- 현재 주소 + offset을 더해보니 실제 함수 주소가 나온다...!!
'게임 보안 > [서적] 봇을 이용한 게임 해킹' 카테고리의 다른 글
7. 게임 플로우 조작하기 (1) | 2022.10.04 |
---|---|
6. 코드 인젝션 (1) | 2022.10.01 |
5. 게임 메모리 읽고 쓰기 (1) | 2022.09.29 |
4. 고급 메모리 포렌식 (0) | 2022.09.28 |
3. x86 어셈블리 크래시 코스 (1) | 2022.09.28 |
댓글