리버스엔지니어링(역공학)/치트엔진

치트엔진 튜토리얼 4단계 사용할 수 없는 값

CodeHS 2019. 1. 30. 13:28

1.사용할수 없는값

어떠한 값을 작동하지않도록 하는것을 배울것이다.

이것은 쓸모없는것을 작동하지않게 하기위해서 매우 유용하다.

예를 들어 몬스터가 나오는 코드가있는데 그것을 작동하지않게하면

몬스터는 나오지않는다. 하지만 이번강의에서는 어셈블리어라는 저급언어를 약간알아보게 될것이다.


일단 처음에는 진값을 찾아서 테이블로 옮겨놓는다 이것은 기초적인거여서 생략하겠다. 이제까지 글들을 잘보고 실습을했다면 바로 할 수 있을것이다.


테이블에 값을 선택한후 우클릭을 하여 find out what writes to this address 즉 이 주소가 어디에 사용되는지 볼수있도록 알려주는것이다. 이것을 선택하게되면 창이 하나 뜬다.


그후 체인지 벨류를 눌러서 값을 바꿔보자 그러면 2번과 같이 하나가 뜨는데 값이 어디로 이동되는지 보여주는 것이다.


mov [eax],edx 라는 명령어를 볼수있는데 여기서 eax와 edx는 레지스터이다.

이것은 어셈블리어를 배우면 이해가 된다.

즉 edx의 값을 eax에 대입하라는 뜻이다 c언어로보면 eax=edx 즉 대입하라는 것이다.(여기서=은 같다가아니라 대입이다. ==이 c언어에서 같다라는 표현이다.)


Replace를 눌러서 값이 이동하지 못하도록 NOP 어셈블리어 명령어를 적어준다.여기서 NOP는 아무것도 하지않음을 뜻한다. 즉 NOP가되면 값을 사용하지못한다.

그후 OK를 누르면 사용하지 못하는 값으로 바뀐다.

한번 Change Value를 눌러보자 값이 안바뀌는것을 확인할 수가 있다. 그리고 Next버튼이 활성화 됨으로 다음 단계로 넘어갈 수 있다.