CornerFix now includes a small launcher-style injector, cornerfix-inject, and can also be used with an external loader. cornerfix-inject launches a target app with DYLD_INSERT_LIBRARIES; it is useful for non-hardened apps and testing, but it is not equivalent to a full system-wide injector.
Preflight without launching:
./build/cornerfix-inject --app ./build/CornerFixTestApp.app --checkLaunch by app path:
./build/cornerfix-inject --app ./build/CornerFixTestApp.appLaunch by bundle identifier:
./build/cornerfix-inject --bundle-id com.apple.TextEditUse the installed tool:
/usr/local/bin/cornerfix-inject --bundle-id com.apple.TextEditImportant limits:
- launch-only, not attach-to-PID injection
- may be blocked by SIP, hardened runtime, or Apple-protected apps
- Safari and other system apps may ignore this method even when the command succeeds
- the included
CornerFixTestApp.appis the recommended first validation target
- Build CornerFix:
make- Install the library and controller somewhere stable:
make install PREFIX=/usr/local- Configure your loader to inject:
- library:
/usr/local/lib/cornerfix/libcornerfix.dylib - blacklist:
/usr/local/share/cornerfix/libcornerfix.dylib.blacklist
- Use the controller after injection is active:
cornerfixctl --preset sharp
cornerfixctl --app com.apple.Safari --radius 4
cornerfixctl reload- the loader only targets GUI apps you actually want to modify
- the loader respects the blacklist
- the controller path is on
PATH - changing
cornerfixctlsettings affects already-running injected apps - if using
cornerfix-inject, verify the launched process actually loadedlibcornerfix.dylibwithvmmap <pid> | grep -i cornerfix
- If config changes seem ignored, run
cornerfixctl doctor - If you are testing in a constrained environment, use
CFX_SETTINGS_PATH=/tmp/cornerfix-settings.plist - If one app behaves badly, add it to the loader blacklist first