2020년 9월 30일 수요일

[치트엔진]PPSSPP 1.9.3 포인터 작업(메탈슬러그XX) 완료

[본 게시글은 2020. 4. 10. 02:38에 작성된 글을 아카이브화를 목적으로 하여 작성되었음을 분명히 밝힙니다]


우선 필자의 컴퓨터가 64bit에 8gb ram을 장착한 성능인 탓일까.

32비트 버전의 PPSSPP의 포인터는 찾기는 했으나, 고정시키기는 실패했다.

처음에는 멋도 모르고 분석에 들어갔기에 내가 못건드리거나 알지도 못해서 잘 모르나 보다 해서 더 파봤는데 이상한 점이 발견되었는데, 바로 정적 주소는 그대로인데 오프셋 주소값이 계속 바뀌는 경우였던 것이다.

다음은 필자가 발견했던 PPSSPP 32비트 버전의 메탈슬러그XX 일본판 버전의 디버그 메뉴 해금 어드레스이다.


여기서 레지스터 값(eax)은 그대로 유지되고 있었다.다만 오프셋 값들이 계속해서 수정되고 있기때문에 포인터를 찾기는 했으나, 오프셋값이 실행할때마다 바뀌기 때문에 치트엔진의 메모리 주소의 고정이 불가능한 것이었다.


08d00000 + 0C004930 = 14D04930‬
08d00000 + 0C404930 = 15104930‬
08d00000 + 0C804930 = 15504930
08d00000 + 0CC04930 = 15904930

08d00000 + 0D004930 = 15D04930
08d00000 + 0D404930 = 16104930
08d00000 + 0D804930 = 16504930
08d00000 + 0DC04930 = 16904930


즉, 400000비트씩 옮겨가면서 오프셋 값이 바뀌는 것이다.

이것이 8GB의 램을 최대로 사용할 수있는 64비트의 환경에서 4GB까지만 사용하는 32비트의 특성으로 자기 꼴리는대로 위치에 자리잡아서 그러는 건지 특정한 이유를 알 수는 없지만 확실한 건 저 오프셋의 값을 고정시키는 방법이 없는한 이 컴퓨터에서 32bit의 포인터를 잡는 것은 불가능한 상태라는 것은 알 수 있었다.


그렇다면 64비트는 어떠한가?

다행히도 64비트는 오프셋이 바뀌는 일이 없어 포인터를 잡는데 성공했다.

치트엔진을 통해 레오나 하이데른을 강제로 해금한 상태

따라서 치트엔진의 포인터를 잡을때는 64비트의 컴퓨터는 64비트 버전의 프로그램의 포인터만 잡을 수 있으며,

32비트는 32비트의 운영체제에서 포인터 작업을 해야한다는 결론이 도출되었다.


화면상의 치트엔진 테이블은 1.4X대 버전으로 상당히 오래된 버전의 에뮬레이터로 작성되었는데

만약 디버그 메뉴의 해금이 필요한 유저들은 1.9.3(현 시점에서 최신버전)의 디버그 포인터를 다시 잡아놓아서 올려놨으니 아래 게시글을 참조하면 되겠다.

https://chamcham425.tistory.com/entry/%EC%B9%98%ED%8A%B8%EC%97%94%EC%A7%84%EB%A9%94%ED%83%88%EC%8A%AC%EB%9F%AC%EA%B7%B87XX%EB%94%94%EB%B2%84%EA%B7%B8-%ED%8F%AC%EC%9D%B8%ED%84%B0PPSSPP-193-CT%ED%8C%8C%EC%9D%BC


[치트엔진]메탈슬러그7,XX디버그 포인터(PPSSPP 1.9.3) CT파일

일본판 유럽판 북미판 다음은 MelonDS 0.83버전 기준의 메탈슬러그7 치트테이블이다. 디버그등의 필요한 내용들을 다 작업해놓았으니 원하는 국가의 버전을 사용하면 되겠다. 한국판(korea ver) 일본판(japan..

chamcham425.tistory.com



댓글 없음:

댓글 쓰기