이미 나와있는 코드인데 업데이트가 되어서 코드가 먹통이 될때
업데이트되면서 실행파일이 개조되면서 코드위치가 밀리거나 땡겨져서 그런겁니다.
원래있던 코드위치 바이너리값 복사해서 찾기해서 코드위치만 살짝 변경시키면됩니다.
올리디버거 < 없으면 구글에 그냥 저렇게만 쓰면 맨위블로그에 셋팅되어있는거 구할수있습니다.
기타셋팅관련은 피시님 강좌게시글 참고하시면되는데 딱히 변경위치만 알려고할경우 그냥 써도 됩니다.
FATAL ZERO ACTION 이라는 게임을 봐봅시다.
오리지날 버전.
주소부분에 빨간색색으로 브레이크 걸어놓은 부분 49b5a0 이 코드 부분입니다.
101패치버전.
49b9e0 이 코드부분입니다.
코드 주소범위는 틀리지만 함수자체는 똑같죠.. 이게 패치로 인해 밀린경우입니다.
이런경우 코드 주소만 변경된곳으로 변경하고 기존코드에 있던 인자값 필터 설정 그대로쓰시면됩니다.
대충 기존코드에서 주소부분만 변경해서 쓰면된다는 애기죠.
올리처음 하시는분도 쉽게 할수있습니다.
패치전 실행파일 > 코드주소가서 > 마우스로 적당히 드래그한다음 우클릭 > 바이너리 >바이너리카피 >
해서 메모장에 붙여넣기 하신다음에.
패치된 실행파일 > CRT+B (바이너리 서치단축키) > 메모장에 붙여넣기한 바이너리다시 붙여넣기하고 서치하면됩니다.
해보면 아실듯 .. 겁내지말고 해보는게 중요하죠.
예제에 있는 파탈제로 옮겨심기과정..
함수시작부터 PUSH EBP 까지 드래그해서 바이너리 카피했음
83 EC 10 83 7E 08 00 53 55
그런다음 패치된 실행파일가서 요 바이너리값으로 찾기를 했죠. 그리고 올려놓은 코드에서 주소만 변경시키고 테스트했죠.
만약에
FATAL ZERO ACTION 이 또 업데이트되서 코드 먹통이되면 위 바이너리값으로 서치하면 금방 알수있겠죠.
중요한점은 드래그할때 드래그범위에 주소참조 부분이 있으면 피해주시는게 좋습니다. 크게 상관은없지만 혹시 모르니.
그리고 디버깅 방지에 패킹되어있는건 요방법이 안됩니다. 참고하시길.