원래 약 20년 전에 작성된 업데이트된 코드를 다시 릴리스했습니다.
어떤 경우에는 32비트 버전과 64비트 버전의 DLL이 모두 필요하다는 점을 명심하십시오.
프로젝트는 Delphi XE2 이상에서 컴파일됩니다. XE2는 작은 바이너리 설치 공간으로 32비트와 64비트 모두에 대해 컴파일되므로 선택되었습니다.
'uiAccess'를 포함하는 Delphi Berlin용 매니페스트 파일이 제공됩니다. 최신 IDE에는 이 옵션이 내장되어 있습니다. 디버깅은 'uiAccess'를 포함하지 않는 매니페스트를 사용하여 수행하는 것이 가장 좋습니다. 'LinkManifests.cmd'는 제공된 매니페스트에 대한 심볼릭 링크를 생성합니다.
Windows 10.1903.18362.295부터 Sandbox VM은 코드 서명 없이 디버그 테스트를 허용했습니다.
DLL 이름을 변경하고 Mapfile 파일 이름을 변경한 후 다음 단계를 수행하는 것이 가장 좋습니다.
이 연결이 없으면 'uiAccess' 앱이 실패하고 앱이 잠길 수도 있습니다.
저널 후크의 녹음 및 재생. 코드는 EXE 또는 DLL 내부에 있을 수 있으며 추가 버전 없이 32/64비트 모두에서 작동합니다. 그러나 내가 이것을 읽는 방식은 네이티브 비트가 아닌 앱이 결국 썽킹 메커니즘을 통해 코드를 로드하게 되므로 DLL을 사용하는 것이 가장 좋다는 것입니다.
PostMessage를 통해 게시된 모든 메시지를 연결합니다. 가장 좋은 것은 시청해야 할 내용을 구체화하고 나머지는 흐르게 하는 것입니다. 현재 데모에서는 시스템 메뉴를 클릭하면 원래 앱에 메시지를 다시 게시합니다.
처리할 키보드 메시지(WM_KEYUP 또는 WM_KEYDOWN)가 있는 경우 모든 GetMessage 또는 PeekMessage 함수를 후크합니다. 현재 데모에서는 ALT+Numkey_1을 사용할 때 원래 앱에 메시지를 다시 게시합니다.
PID를 사용하여 프로세스에 DLL을 삽입합니다. 여기서 DDetours 호출은 기본적으로 API를 리디렉션합니다.
이 방법은 단일 프로세스에 특정한 Hook 프로세스를 사용하여 시스템의 부하를 줄일 수 있습니다.
가장 쉬운 테스트 방법:
요구사항: Delphi Detours Library