
batton drop (CVE-2022-21894)의 armv7 (MSM8960)용 구현
Qualcomm 시스템에서 policyhax(일명 golden key)의 수정이 실제로 작동한다는 점을 감안하여, 작동하지만 부품용으로 판매된 Dell XPS 10을 구해 MSM8960용으로 baton drop을 포팅했습니다.
결과는 다음과 같습니다.
image.7z를 GPT fat32로 포맷된 USB 장치에 추출하고, 서명되지 않은 EFI 부트 애플리케이션을 \boot.efi에 복사한 후, MSM8960 Windows RT 장치를 부팅하면 됩니다.
모든 페이로드 소스(MS CRT의 divide.obj 포함, stage2에서 필요)가 포함되어 있습니다. 빌드 시 MSVC 크로스 컴파일러 명령 프롬프트를 사용하십시오. make_cert.bat를 실행하여 자체 서명 인증서를 생성하고, build_mcupdate.bat를 실행하여 stage1을 빌드하며, build_stage2.bat를 실행하여 stage2를, build_boot.bat를 실행하여 hello world boot.efi를 빌드합니다.
0xA000_0000입니다. 단순히 UMCI 탈옥을 위해 baton drop을 사용하려면 나중에 설정할 수도 있을 것입니다(baton drop 익스플로잇 시 고급 옵션 메뉴에 nointegritychecks 옵션이 나타납니다). win8.x에서 익스플로잇하려면 osdevice가 BitLocker 암호화 볼륨이고 키 플래그 비트 0이 설정되어 있어야 합니다(payload.vhd의 경우 수동 설정 가능하지만 일반적으로 TPM에 의해 VMK가 봉인되어 무결성 검증을 위해 보안 부팅과 함께 설정됨).
0xC000_0000으로 설정하면 baton drop이 페이로드를 로드하는 데는 작동하지만, 듀얼 부팅 상황에서는 NT 부팅이 실패할 수 있습니다.hal.dll은 가져오기 목록에 mcupdate.dll을 추가하기 위해 패치되었으며 자체 서명되었습니다.mcupdate.dll은 efiesp:\stage2.dll과 efiesp:\boot.efi를 로드하고, stage2에 필요한 모든 포인터를 얻은 후 stage2 진입점을 호출합니다.BlpArchSwitchContext를 호출하여 펌웨어 컨텍스트로 전환한 후 EFI 서비스를 호출합니다.