Memory Hacking (6) 썸네일형 리스트형 Cheat Engine/hero siege # Game Hacking - Cheat engine을 써먹어 보고자, 심심할 때 했던 hero siege의 메모리를 수정해 보았습니다. - 데이터 구조체까지 전부 뜰 수 있는데 아직 부족해서 포인터는 못 찾았습니다. 찾는대로 방법을 올려보도록 하겠습니다. # CT 파일 치트엔진 - tutorial step 9 Shared Code # 문제 상황- 데이브와 에릭은 제 편이고, 컴퓨터편인 홀과 키트가 있습니다.두 팀이 대결을 하는데 에릭과 데이브는 체력이 100이고 홀과 키트는 500이라서 항상 질 수 밖에 없는 게임을 이기게 해줘야 합니다. # 접근 방식- 다른 방법이 존재하지만 체력을 깎는 곳 어셈블리어를 수정했습니다.- 원래 어셈블리어 코드는 esi,eax이지만, eax를 체력을 500을 한번에 깎을 수 있는 500값을 주었습니다.- 아래 이미지는 수정한 어셈블리어 코드 입니다. LINE : Tutorial-i386.exe+2653B 레지스터 기준으로 오프셋을 잡아, esi,[eax+20] 형식으로 500값을 포인터로 주고 싶었지만, 게임을 다시시작 하게 되면 주소가 바뀌기 때문에 쓸 수 없었습니다. - 플레이어 네명 모두 체력.. 치트엔진 - tutorial step 8 Multilevel pointer 튜토리얼 풀면서 제일 고민 많이하고 풀었다. 문제의 포인터는 포인터가 4중인데, 포인터에 연산되는 주소와 오프셋 값을 찾아내서 주소값과 오프셋 값을 연결 시켜 값을 고정시키는게 목표다. 초기 값인 3206를 검색하면 01824818 이라는 주소를 찾았다. F5를 눌러 이 주소에 접근하는 것들을 봐야함. Change value를 눌렀을 때 이 주소 접근하는게 있을 텐데, 눌르면, 아래 코드가 나옴. ㄴ 더블 클릭해서 Extra info를 확인하면, esi 값은 현재 01824800이고 이를 오프셋 값과 계산한 1824818에 931이 담기게 된다. 그러므로 [ ] 안에있는 오프셋과 레지스터 값중 레지스터 값은 이전 포인터가 가지고 있는 주소값 임을 확인 할 수 있다. EAX 레지스터의 3E1 값은 3206.. 치트엔진 - tutorial step 7 - code injection 우선 해석하는데 어려웠던 단어 정리 먼저. reroute 위 문장을 통해 뭔가 재설정하는 것으로 해석. 문장 Code injection is a technique where one injects a piece of code into the target process, and then reroute the execution of code to go through your own written code. 근데 해석하다가 문제를 풀어보니 해석할 필요가 없었다. 단순히 1씩 subtract되던 health를 2씩 add시키게 만드면 클리어. 게임에서보면 몬스터가 내 체력을 깎지않고 힐을 해주는 상황인 것. :D 처음 health 값 100을 검색해 주소를 찾은다음. F6 를 눌러 opcode를 확인하고, 1씩 .. 치트엔진 - tutorial step 6 포인터! 치트엔진을 이용해 리버싱에서의 포인터를 실습해본건 처음이다. 가장 기본적인 포인터 구조는 [ 와 ] 사이에 존재 [ 와 ] 에는 주소값이 들어간 레지스터가 들어간다. edx라든지.. 아마 edx가 데이터 저장용 레지스터 이므로 다른 레지스터는 들어가지 않을 것 같다. ( 리버싱 경험이 부족 .. ) step - 6 에서 edx는 주소값 (01866950)을 가지고 있었고 그 주소의 eax 연산 결과를 저장했다. 문제에 Change Pointer라는 버튼이 있고, 버튼을 누르면 값의 주소가 바뀌게 되는데, 이렇게 되면, 값을 고정시켜도 주소가 바뀌기 때문에 값의 주소를 가리키는 포인터의 주소값을 찾아서 주소의 값을 고정시켜 줘야한다. 문제에서는 단순히 주소값이 10씩 올라가는 로직이였으므로 맞추기는 쉬웠다.. 치트엔진 - 값의 주소가 변경 될 때. value(값)을 찾아서 고정하려 했으나, value의 location(주소)가 계속 변경될 때 location의 변경을 멈춰주는 Find out what writes to this address를 이용하자. 우선 찾은 value에 마우스 커서를 올려 놓고 오른쪽 마우스 버튼을 클릭하고 Find out what writes to this address를 선택. 아래 창이 뜬다. 값을 변경하면 아래의 창에 변경될 때의 어셈블리코드 라인이 보여지게되고, Replace를 눌러 수정하거나 변경되는 라인을 멈춰주는 Stop을 눌러주면 변경이 되지않는다. 그렇게 stop을 시키고, value를 고정시켜주면 value가 변할 때 location이 바뀌지않고 value가 고정이 된다. 참고 cheat engine tu.. 이전 1 다음