Open
Description
I ran into the issue described in frida/frida#3424 when testing on iOS 18.4
Doing a quick look into this, the signature for _libdyld_initialize has changed, so the injector is failing to detect this as a dyld4 environment.
In iOS 18.3 (from IDA)
__text:00000001A8E9DF30 ; dyld4::APIs::_libdyld_initialize(dyld4::LibSystemHelpers const*)
__text:00000001A8E9DF30 __ZN5dyld44APIs19_libdyld_initializeEPKNS_16LibSystemHelpersE
in iOS 18.4 (from IDA)
; __int64 __fastcall dyld4::APIs::_libdyld_initialize(dyld4::APIs *__hidden this)
__ZN5dyld44APIs19_libdyld_initializeEv
Apparently the LibSystemHelpers pointer has been dropped in iOS 18.4. So the code here is failing in this case since it's not also checking for the newer function: https://github.com/frida/frida-core/blob/main/src/fruity/injector.vala#L828
private async void ensure_libsystem_initialized (Cancellable? cancellable) throws GLib.Error {
if (libsystem_initialized)
return;
var dyld_symbols = yield fetch_dyld_symbols (cancellable);
yield restore_main_thread_state (cancellable);
uint64? libdyld_initialize = dyld_symbols["__ZN5dyld44APIs19_libdyld_initializeEPKNS_16LibSystemHelpersE"];
if (libdyld_initialize != null)
yield ensure_libsystem_initialized_for_dyld_v4_and_above (libdyld_initialize, dyld_symbols, cancellable);
else
yield ensure_libsystem_initialized_for_dyld_v3_and_below (dyld_symbols, cancellable);
Metadata
Metadata
Assignees
Labels
No labels