2013-08-07 4 views
1

현재 출시 된 새로운 게임은 바인딩을 위해 IP 주소/포트를 구성 할 수있는 옵션이없는 서버 파일과 함께 제공됩니다. 불행하게도 이것은 "12345"포트에 하드 코딩되어 있기 때문에 머신 당 하나 이상의 인스턴스를 실행할 수있는 능력을 제한합니다.실행 파일의 하드 코드 된 값 변경

몇 년 전에 저는 하드 코딩 된 값을 변경하기 위해 C++ 및 16 진수 편집기를 사용했으며 그 지식은 오랫동안 잊혀져 왔지만 런타임에이 값을 변경하는 보조 응용 프로그램을 작성하여이를 향상시킬 수 있습니까?

답변

1

하드 코드 된 상수를 변경하려면 16 진수 편집기를 사용할 수 있습니다.

또 다른 방법은 적절한 OS가 제공하는 디버그 API를 사용하는 것입니다. Windows에서는 WriteProcessMemory 함수입니다.

다음과 같이 보입니다. 실행 응용 프로그램은 수정 된 응용 프로그램을 디버그 모드로 실행합니다. 변경 사항을 일정하게 유지 한 다음 실행합니다.

물론 수정 된 응용 프로그램은 안티 디버깅 기술을 사용할 수 있습니다.이 경우 솔루션은 사소하지 않습니다.

두 경우 모두이 값이 메모리 (실행 파일)에있는 위치를 알아야합니다. 이 방법으로 일부 리버스 엔지니어링을 제공해야합니다.

마지막 질문을 편집 한 후 참고 사항 :이 모든 대답은 원시 실행 파일에 대한 것입니다. 관리 코드의 경우 아마 더 복잡 할 것입니다.

+0

제 질문에 대한 업데이트를했지만, 저의 답변을 변경하기 전에 귀하의 대답이 적용될 수 있었기 때문에 (아마도 새로운 질문을 게시했을 것입니다), 나는 이것을 받아 들일 것입니다. 고맙습니다! –