iPod touch (Installer4) に root アプリがあり、MobileSubstrate をロードして、バグを修正するための微調整を開始できるようにしたいと考えています。ルートアプリには、アプリがクラッシュすることなく6755のアクセス許可を設定できる中間実行可能ファイルがあることを知っています。インストーラーの場合、Scytheという名前です。execve() で MobileSubatrate をロードする新しいものを作成しようとしましたが、成功しませんでした。アプリはクラッシュせず、ルートのままですが、MobileSubatrate はロードされません :/ (Activator が機能しないため、これはわかっています)。
これが私の Scythe.c です (Icy の Trichlorotrifluoroethanol.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);
}
ご覧のとおり、execve() で dylib をロードする方法を調べたところ、LD_PRELOAD と LD_LIBRARY_PATH が見つかりましたが、どちらも機能していません。そして、dlopen("/Library/MobileSubstrate/MobileSubstrate.dylib", RTLD_LAZY) を実行するためのインストーラーのソース コードを持っていません。
誰かが問題を解決してくれることを願っています。