'multilevel'에 해당되는 글 1건

  1. 2019.03.20 Cheat Engine으로 Multilevel pointers 찾기
반응형

Cheat Engine(CE)으로 포인터의 포인터를 찾아 보자.

 

CE을 실행하고 Help - Cheat Engine Tutorial 을 실행 한다.

 

Cheat Engine에서 Tutorial을 열어 준다.

 

Edit - Settings를 클릭하고 Cheat Engine settings 창이 열리면 Pointer adding: Append pointerline instead of insert를 체크 한다.

 

Tutorial에서 찾아야 하는 값인 3045를 First Scan 으로 찾아서 Address List에 추가 한다.

 

 

Address List에 추가된 주소는 첫 번째 포인터가 가리키는 주소와 그 주소에 저장된 값이다. 4 단계에 걸친 포인터를 모두 찾아 주어야 한다. 추가된 목록에서 우클릭 - Find out what accesses this address(F5)를 클릭 한다.

 

열려 있는 프로세스에 Cheat Engine의 debugger를 attach 한다는 메세지 박스가 나온다.

 

Yes 를 클릭하면 아래와 같은 창이 뜬다.

 

Tutorial 로 돌아와 Change value 버튼을 클릭 한다.

 

 

 

Find out what accesses this address 로 지정한 주소에 접근하는 opcode가 표시 된다.

 

More information 버튼을 클릭하면 추가 정보가 표시 된다. 내용을 확인해 보면 eax에 저장된 값을 rsi+18에 복사하고 있다.

rsi의 주소는 01587460이고 여기에 offset 값 18을 더하면 01587478로 위에서 CE으로 찾은 주소의 값과 일치 한다.

 

CE에서 Hex 체크 박스를 클릭하고 rsi 주소값을 입력한 다음 New Scan을 클릭하고 First Scan 한다. 아래와 같이 rsi 주소 값을 가지는 메모리의 주소(첫 번째 포인터)를 찾았다. 이 상태에서 Add Address Manually 버튼을 클릭 한다.

 

Add address 창이 뜨면 Pointer 체크 박스를 클릭 하고 위에서 찾은 메모리 주소를 입력한다. offset 값으로 18을 입력 하면 최종 값인 3559가 표시 된다.

 

 

OK를 클릭하면 CE에 아래와 같이 표시 된다.

 

이제 이 포인터의 포인터를 찾아 보자. 추가한 포인터에서 F5를 눌러 Find out what accesses this address를 실행하면 아래와 같은 메세지가 나온다.

Find out what accesses this pointer를 클릭한다.

 

Tutorial로 돌아가 Change value 버튼을 클릭하면 아래와 같이 포인터에 접근하는 opcode 목록을 표시해 준다. 첫 번째 opcode의 operand 인 rsi 값을 확인해 보면 07312500으로 위에서 찾은 포인터의 주소와 일치 한다.

 

rsi 값을 가지는 주소(포인터)를 찾아 보자. 015661E8에 같은 값이 저장되어 있는걸 확인 할 수 있다.

 

 

리스트에 추가된 포인터를 더블 클릭하고 Add Offset 버튼을 클릭하면 아래와 같은 화면으로 바뀐다.

 

하단 주소 입력 에디트 박스에 포인터 주소값을 입력해 주면 아래와 같이 표시된다. OK 버튼을 클릭한다.

 

별 다른 변화는 없어 보이지만 포인터의 포인터까지 찾아 놓은 상태이다.

 

다시 그 포인터의 포인터를 찾는 과정을 반복하면 아래와 같이 더 이상 포인터로 지시되지 않는 녹색 주소값이 나온다. (CE 에서는 static address가 녹색으로 표시 된다)

 

 

이 마지막 포인터를 추가해 준다.

 

마지막 포인터까지 추가되었으면 Active 체크 박스를 클릭해서 값을 고정 시키고 Value를 5000으로 수정 한다.

 

 

Tutorial로 돌아가 Change pointer버튼을 클릭하면 3초 후 Next 버튼이 활성화 된다. a pointer to a pointer to a pointer to a pointer to the health 값을 찾은 것이다.

 

 

반응형
Posted by J-sean
: