1

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) を実行するためのインストーラーのソース コードを持っていません。

誰かが問題を解決してくれることを願っています。

4

1 に答える 1

2

私は、インストーラーやその他の Cydia の代替手段に関して何かをすることに完全に反対します。私はこれを投稿して、同様のことが起こったときに何をすべきかを人々に知らせています。

それでも、MobileSubstrate は拡張機能をルート アプリにロードしません。dlopenルート アプリ内から MobileSubstrate 拡張機能を使用する必要があります (Cydia がその中から Activator をロードするように) 。

ただし、そうするのは非常に危険であり、多くのものを壊す可能性があることに注意してください (インストーラーの場合と同様に)。通常、これをバイパスしようとしないでください。

于 2012-08-05T22:20:28.170 に答える