이전 분석 게시물
이 글에서는 앞서 작성한 지뢰 찾기 게임 게시글과는 다른 방법으로 핵 프로그램을 만들었다.
지뢰 테이블 세팅 함수(sub_ 100367A)
게임 시작 시 지뢰를 세팅해주는 함수이다.
앞 글에서 분석한 내용과 같이, 지뢰 테이블 세팅 시 8F는 숨겨진 지뢰이고, 8A는 표시된 지뢰이다.
‘or byte ptr ds:[eax], 80’ 를 ‘xor byte ptr ds:[eax], 85’로 패치하여 결과값을 8A로 만든다.
그러면 지뢰 테이블에 지뢰가 8A로 설정되고, 첫 이미지가 출력되면 지뢰를 출력한다.
Lua Script 코드 패치 스크립트
[ENABLE]
//code patch : 0x10036fb
label(hack)
registersymbol(hack)
aobscan(hack_address, 08 80 FF 0D 30 53 00 01 75 C2 8B 0D 38 53 00 01 0F AF 0D 34 53 00 01)
hack_address:
hack:
db 30 85 FF 0D 30 53 00 01 75 C2 8B 0D 38 53 00 01 0F AF 0D 34 53 00 01
[DISABLE]
hack:
db 08 80 FF 0D 30 53 00 01 75 C2 8B 0D 38 53 00 01 0F AF 0D 34 53 00 01
unregistersymbol(hack)
치트엔진에서 lua script를 이용하여 0x10036fb 부분을 헥사 값으로 후킹하여 메모리 값을 바꿔준다.
바꿀 값은 2바이트지만, 비교하는 길이가 작으면 프로그램 상에서 이상한 부분이 선택될 수 있다.
따라서, 뒤 바이트들은 동일하지만, aobscan 함수에서는 길게 찾아준다.
해당 스크립트를 F5 키로 지정하여 작성해놓은 lua script가 실행되면서, 메모리 주소를 변조한다.
F5는 토글키로 enable과 disable이 가능하다. 위 그림처럼 exe 파일로 만드는 방법은 다음 글을 참고하면 된다.
F5를 눌러 Auto Search를 enable하고 스마일 이모티콘을 눌러 게임을 재실행하면, 바로 지뢰가 나타나게 된다.
실행 영상