Я также сталкивался с этим, и я думаю, что причина сбоя в том, что функция, которую загрузчик возвращает в качестве dlsym для memcpy, на самом деле не настоящая функция, а заглушка для нее. Я сбросил адрес и байты, расшифровал libsystem_c и убедился, что эта следующая функция возвращается мне dlsym (RTLD_DEFAULT, "memcpy")
; void *memcpy_0(void *, const void *, size_t)
__picsymbolstub4:3947B37C EXPORT _memcpy_0
__picsymbolstub4:3947B37C _memcpy_0 ; CODE XREF: _strlcpy+22p
__picsymbolstub4:3947B37C ; _strlcpy+32p ...
__picsymbolstub4:3947B37C LDR R12, =(_memcpy_ptr - 0x3947B388) ; j__memcpy
__picsymbolstub4:3947B380 ADD R12, PC, R12 ; _memcpy_ptr
__picsymbolstub4:3947B384 LDR PC, [R12] ; _memcpy
__picsymbolstub4:3947B384 ; End of function _memcpy_0
__picsymbolstub4:3947B388 off_3947B388 DCD _memcpy_ptr - 0x3947B388
Как вы можете видеть, этот код относится к ПК и, возможно, поэтому MSHook не работает.
Если вы попытаетесь подключить реальную функцию, ту, которую вызывает эта заглушка, - она работает.