Windows : 사용자 정의 AppCompat Shims (응용 프로그램 수정)를 만드는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1711665

  •  19-09-2019
  •  | 
  •  

문제

Windows에는 적용 할 수 있습니다 응용 프로그램을 잘못 행동하는 데. 심은 API 호출을 가로 채고 변경하는 데 사용됩니다. 예를 들어, 심은 다음에 사용될 수 있습니다.

  • 들어오는 매개 변수를 변경하십시오
  • 반환 값에 대해 거짓말을하십시오
  • 다른 것을 부르려면 변경하십시오

그만큼 응용 프로그램 호환성이 취해졌습니다 자신의 잘못 행동 응용 프로그램에 적용 할 수있는 기존 심이 있습니다. 다음은 API 호출을 무시하고 대신 완전히 다른 API를 호출하는 예입니다.

alt text

Microsoft가 이미 쓴 수백 개의 심 중 하나가 아닌 심이 필요합니다. 커스텀 심이 필요합니다.

제 경우에는 전화를 가로 채고 싶습니다.

GetSystemMetrics(0x1000)

다시 돌아옵니다 0. Windows에 내 자신의 DLL을 제공하는 방법에 대한 정보를 찾을 수 없습니다. 필요한 수정 사항이 있습니다. 나는 당신이 모른다 ~할 수 있다 커스텀 심를 만듭니다.

Windows는 맞춤 용해를 지원합니까?

도움이 되었습니까?

해결책

나는 AppCompat Shim을 구현하는 Microsoft 이외의 다른 사람의 방법을 모릅니다.

당신은 조사하고 싶을 수도 있습니다 우회, 원하는 기능을 제공 할 수 있습니다.

다른 팁

Raymond Chen의 관점에서 이것을 생각해야합니다. Microsoft 이외의 다른 사람이 호환성을 작성하는 것이 가능하다고 상상해보십시오. 그런 다음 Microsoft가 깨지는 변화를 만들 때마다 다른 모든 호환성 작업 외에도 잘못된 일을 한 타사 파티에 대한 심을 써야합니다. 뒤로 호환성을 유지하는 것은 충분히 어렵습니다.

가능하지만 작업이 필요합니다.

당신은 심을 적용 할 자신의 런처 프로그램을 사용하여 응용 프로그램을 생성합니다. 런처가 메모리를 편집하기에 충분한 권한으로 프로세스를 만들도록하여이를 수행합니다. 대부분의 API 기능은 2 바이트 NOP로 시작하여 더 많은 NOP가 시작됩니다. 2 바이트 NOP를 짧은 점프로 바꾸고 앞 NOP를 원하는 곳에서 멀리 점프 할 수 있습니다.

과거에 사용한 대체 솔루션은 실행 파일을 DLL로로드하는 것이지만 응용 프로그램이 얼마나 까다로운 지에 따라 더 많은 작업을 유발할 수 있습니다. 내 상황에서 나는 실행 파일을 데이터 전용 DLL로로드하고 내 자신의 모든 가져 오기를 수행해야했지만 불행히도 이전 솔루션은 나에게 옵션이 아니 었습니다.

또한 한 번도 비슷한 원리를 사용하는 후크 DLL을 작성했지만 DLL을로드하기 위해 소스를 수정하거나 프로세스가 DLL 플러그인을 지원하는 경우에만 옵션입니다.

항상 리버스 엔지니어링을 사용하여 고정 할 수 있습니다. :), 도움이 필요한지 알려주세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top