Загрузите MobileSubstrate в приложение setuid для iPhone - PullRequest
1 голос
/ 20 ноября 2011

У меня есть приложение 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), в любом случае, если бы он у меня был, я бы не задавал этот вопрос.надеюсь, что кто-то выяснит проблему.

1 Ответ

2 голосов
/ 06 августа 2012

Я полностью против того, чтобы что-либо делать с установщиком или любой другой альтернативой Cydia. Я просто публикую это, чтобы люди знали, что делать, когда дело доходит до подобных вещей.

Тем не менее, MobileSubstrate не загружает расширения в корневые приложения; вам нужно dlopen расширение MobileSubstrate из корневого приложения (например, Cydia загружает активатор из него).

Но учтите, что это очень рискованно и может сломать многие вещи (например, с помощью Installer, блеф), поэтому обычно не стоит пытаться обойти это.

...