You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With the first beta of macOS 12.1, FeatureUnlock.kext started having patching issues with with regards to enabling AirPlay to Mac support on pre-Skylake machines.
Upon further inspection, we found the issue to be our iMac patch set:
The cause of this issue is due to the page size limitation of cs_validate_page, as patching data on the edge of the array can result in issues when sections of the dyld grow or shrink.
Work-Arounds
Currently with OCLP 0.3.2, I've added a new build of FeatureUnlock that splits the iMac patch set into 3 portions:
This means that whenever we receive a patch failure for iMac14,x, only that model family is affected. Unfortunately this still means iMac14,x users will not have AirPlay to Mac on 12.1 and newer.
Additionally we have attempted to patch out the model check in AirPlaySupport.framework within the dyld, but have been unsuccessful.
It may be beneficial to work on the virtual memory level instead of pointers to individual pages.
XNU provides a vm_shared_region_vm_map function, which may be used to obtain a vm_map_t for a given shared region.
As, on Big Sur and newer, the shared cache is static and may not change (through Signed & Read-only System Volume and dylib binaries no longer on disk), every process will, in virtually all cases, use the same shared region.
XNU also provides a vm_shared_region_get function, which may be used to obtain a vm_shared_region_t for a given Mach task, for which we can use launchd after obtaining its task with its pid.
After all of this, vm_map_(write|read)_user may be used to scan the shared region for our find and replace.
However, my fear is that the shared region pager may prevent this. Specifically, the page-out handler.
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
With the first beta of macOS 12.1, FeatureUnlock.kext started having patching issues with with regards to enabling AirPlay to Mac support on pre-Skylake machines.
Upon further inspection, we found the issue to be our iMac patch set:
Specifically the early iMac14,x family:
The cause of this issue is due to the page size limitation of
cs_validate_page
, as patching data on the edge of the array can result in issues when sections of the dyld grow or shrink.Work-Arounds
Currently with OCLP 0.3.2, I've added a new build of FeatureUnlock that splits the iMac patch set into 3 portions:
This means that whenever we receive a patch failure for iMac14,x, only that model family is affected. Unfortunately this still means iMac14,x users will not have AirPlay to Mac on 12.1 and newer.
Additionally we have attempted to patch out the model check in AirPlaySupport.framework within the dyld, but have been unsuccessful.
Additional Testing
The text was updated successfully, but these errors were encountered: