У меня есть приложение root на моем iPod touch (Installer4), и я хочу, чтобы оно загружало MobileSubstrate, чтобы я мог начать вносить изменения, чтобы исправить его ошибки.Я знаю, что у корневых приложений есть промежуточный исполняемый файл, позволяющий устанавливать разрешения 6755 без сбоев приложения, в случае установщика он называется Scythe.Я попытался сделать новый, чтобы загрузить MobileSubatrate с execve () безуспешно.Приложение не аварийно завершает работу, и оно все еще является пользователем root, но MobileSubatrate не загружается: / (я знаю это, потому что Activator не работает).
Вот мой Scythe.c (основан на Trichlorotrifluoroethane.cЛедяной):
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <dlfcn.h>
int main(int argc, char * argv[], char * envp[]) {
char fullpath[1024];
strncpy(fullpath, argv[0], strlen(argv[0]) - strlen("Scythe"));
strcat(fullpath, "Installer");
char* newArgv[] = { fullpath, NULL };
char* newEnvp[] = { "LD_PRELOAD=/Library/MobileSubstrate/MobileSubstrate.dylib", NULL };
return execve(fullpath, newArgv, newEnvp);
}
Как вы можете видеть, я исследовал, как загрузить dylib с помощью execve (), и я нашел LD_PRELOAD и LD_LIBRARY_PATH, но оба они не работают.И у меня нет исходного кода установщика, чтобы сделать dlopen ("/ Library / MobileSubstrate / MobileSubstrate.dylib", RTLD_LAZY), в любом случае, если бы он у меня был, я бы не задавал этот вопрос.надеюсь, что кто-то выяснит проблему.