



Scan Type을 Exact Value로 설정하고 초기값(100)을 입력한 후 First Scan을 시행함
→ Hit me를 실행하고 변화한 값을 Value에 입력하고 Next Scan을 시행해서 변수를 찾아냄

찾아낸 변수를 더블 클릭해서 List에 넣고, list에 있는 변수의 value 값 부분을 더블 클릭해서 1000으로 값을 변경함

초기값을 모르기 때문에 Scan Type을 Unknown initial value로 설정하고 First Scan을 한 후 Hit me를 누르고 Next Scan을 해서 변수를 찾아냄

범위가 0~500이라고 주어졌으므로 Value 값이 0~500인 변수를 찾아 list에 추가하고 값을 5000으로 바꿈

Health와 Ammo를 모두 5000으로 만들어야 하고, 각각의 Value Type이 지정되어 있음
Scan Type은 Exact Value, Value Type은 Float(→Health), Double(→Ammo)로 설정한 후 step 2와 같은 일을 반복해서 Value 값을 5000으로 변경함

step 2의 과정으로 변화되는 값에 대한 변수를 찾고, Find out what writes to the address를 실행함

'mov [eax], edx'라는 명령어는 edx 레지스터 값을 eax가 가리키는 메모리 주소에 저장하라는 의미
→ 이 명령어를 이용해서 value를 변경

Show disassembler에서 해당 명령어를 NOP으로 변경해서 값이 변하지 않도록 함

포인터가 변하지 않도록 하는 것이 목적
step 2에서 한 것처럼 Change value를 이용해서 변수를 찾아냄

변수에서 Find out what writes to the address를 실행한 후 Change value를 실행하면 해당 주소에 값을 쓰는 명령어를 찾아줌
→ mov [edx], eax이므로 eax에 있는 값을 edx의 주소에 저장

→ edx의 주소에 값이 저장될 것이므로 edx의 값을 구함

→ edx 값을 이용한 포인터 변수를 생성하고 active로 바꾼 후 Change pointer을 누르면 pointer가 바뀌지 않음

step 2의 과정으로 변수를 찾고 Find out what writes to this address를 실행함

sub dword ptr [ebx+000004A8], 01이므로, Hit me를 누를 때마다 값이 1씩 줄어들게 됨

add dword ptr [ebx+000004A8], 02로 바꿔서 Hit me를 누를 때마다 값이 2씩 증가하도록 바꿈
4중 포인터를 찾아내서 값을 5000으로 고정하는 것이 목적

맨 처음 value를 step 2의 과정으로 찾고, Find out what writes to this address를 실행해서 관련 명령어를 찾아봄
→ mov [esi+18], eax이므로 esi의 주소를 찾아서 Hex 값으로 검색해 첫번째 포인터 변수를 찾음

첫번째 포인터 변수에서 Find out what accesses to this address를 이용해서 명령어를 찾음
→ cmp dword ptr [esi], 00이므로 해당 변수의 address를 Hex 값으로 해서 검색해 두번째 포인터 변수를 찾음

→ cmp dword ptr [esi+14], 00이므로 esi의 주소를 찾아서 Hex 값으로 검색해서 세번째 포인터 변수를 찾음

→ cmp dword ptr [esi+0C], 00이므로 esi 주소로 Hex 값으로 검색해서 마지막 포인터 변수를 찾음

네번째 포인터에서 Add Address Manually를 이용해서 포인터 변수를 생성하고 Active를 누르면 포인터를 고정할 수 있다
autoplay 이후 우리 팀인 Dave와 Eric 중 하나라도 살아남으면 통과

step 2의 과정으로 변수를 찾고, Find out what writes to this address로 포인터 변수를 찾아봄

해당 포인터에서 Find out what accesses to this address를 실행해서 mov [ebx+04], eax라는 명령어를 찾음

Show disassembler - Tools - Auto Assemble - Template - Code Injection으로 코드를 편집할 수 있음

mov [ebx+04], eax 대신 add [ebx+04], 01로 Dave의 Attack을 누르면 1씩 Health가 1씩 증가하도록 변경함

Restart game and autoplay를 실행하면 모든 Player의 Health가 증가함 => 실패

위의 과정을 반복해서 포인터 변수를 찾고, Show disassembler를 이용해서 오프셋으로 Player의 이름이 시작하는 곳을 찾음
cmp byte ptr [ebx+15], 'D' → 플레이어의 이름이 'D'로 시작하는 경우에만 실행
⇒ 플레이어 이름이 'Dave'인 경우에 Attack이 실행되면 Health를 1씩 증가시키도록 변경

코드를 이렇게 변경한 후 Execute를 누르고 Restart game and autoplay를 하면 다른 플레이어는 Attack이 실행되면 Health가 감소하고, Dave는 Health가 증가하므로 승리할 수 있다