본문 바로가기

전체 글

(65)
Wesnoth 해킹하기 (6) DMA 파훼하기 게임을 해킹하다 보면 DMA로 인해 매번 원하는 정보가 있는 주소가 틀어진다. 예를 들어, 플레이어의 골드가 담겨있는 주소가 어제는 0x01CD0000 내일은 0x02CEABCD일 수 있다. 이를 파훼하기 위한 3가지 방법을 소개한다. 1번째 방법. Pointer Scan 아래 글에 방법이 자세히 소개되어 있다. https://bithub.tistory.com/29 Wesnoth 해킹하기 (2) Memory Scan 본 포스트는 wesnoth의 메모리를 스캔하고 수정함으로써 게임의 재화인 골드를 올리는 방법을 설명한다. Wesnoth 시작 Wesnoth를 실행해보자. Multiplayer - Local Game을 만들어보자. 게임이 시작된다. 현재 bithub.tistory.com 2번째 방법. Code..
Wesnoth 해킹하기 (5) Code Cave Wesnoth 해킹하기 (4) 편에서는 assembly어의 기능을 유추함으로써 인게임에서 terrain description, recruit, recall 등에 해당하는 assembly어를 찾을 수 있었다. Wesnoth 해킹하기 (5)편에서는 code cave를 만들고 terrain description 진입 시 code cave를 실행하도록 만들 것이다. 그리고 code cave에는 999 골드를 주는 코드를 넣어 terrain description 진입 시 999 골드를 받을 것이다. 바로 시작해보자. 주소 0x134360E 번지로 내려가보자. 위와 같이 아무 의미없는 코드가 분포되어 있다. 프로그램의 코드는 항상 이런 빈공간이 있는데 우린 이 공간을 활용하여 code cave를 만들 수 있다. W..
Wesnoth 해킹하기 (4) Assembly 유추하기 Wesnoth라는 게임에서 케릭터가 꼭 성에 있어야지만 병력 소집이 가능하다. 이번 포스트에서는 모든 지형에서 병력 소집이 가능하도록 해킹해보겠다. 3편에서 병력 소집 시 골드가 감소하는 코드를 찾았고 중단점을 설정하였다. 자, 처음으로 돌아가보자. 플레이어가 병력 소집을 하기 위한 interaction은 다음과 같다. 1. 성에서 우클릭. 2. 옵션창이 뜬다.(Recruit, Recall, Terrain Description... 등) 3. Recruit. function handle_options() { switch() { case A: recruit(); case B: recall(); case C: terrain_description(); } } function recruit() { reduce_..