2011-11-20 3 views
1

iPod touch (설치 프로그램 4)에 루트 앱이 있으며 MobileSubstrate를로드하여 버그 수정을 시작할 수 있습니다. 나는 root 앱이 충돌없이 앱에 6755 권한을 부여 할 수있는 중간 실행 파일을 가지고 있음을 알고있다. 설치 프로그램의 경우 Scythe라는 이름이다. 성공적으로 execve()를 사용하여 MobileSubatrate를로드하기 위해 새로운 것을 만들려고했습니다. 응용 프로그램이 다운되지 않고 루트로 유지되지만 MobileSubatrate가로드되지 않습니다./(Activator가 작동하지 않기 때문에이 사실을 알고 있습니다). 당신이 볼 수 있듯이, 내가는 execve (와 dylib를로드하는 방법을 연구했다)와 내가 찾은setuid iPhone 앱에서 MobileSubstrate로드하기

#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); 
} 

: 여기

는 (얼음에서 Trichlorotrifluoroethane.c 기준) 내 Scythe.c입니다 LD_PRELOAD 및 LD_LIBRARY_PATH가 있지만 둘 다 작동하지 않습니다. 그리고 dlopen ("/ Library/MobileSubstrate/MobileSubstrate.dylib", RTLD_LAZY)을 수행하기위한 설치 프로그램의 소스 코드가 없습니다. 어쨌든이 질문을하지 않을 것입니다.

누군가가 문제를 파악하기를 바랍니다.

답변

2

설치 프로그램이나 다른 Cydia 대안에 관해서는 완전히 반대합니다. 나는 사람들이 비슷한 일을 할 때 무엇을해야 할지를 알기 위해 이것을 게시하고 있습니다.

그래도 MobileSubstrate는 루트 앱에 확장을로드하지 않습니다. 루트 앱 내부에서 dlopen MobileSubstrate 확장자를 가져야합니다 (예 : Cydia가 Activator를로드합니다).

그러나 그렇게하는 것은 매우 위험하므로 많은 것을 깨뜨릴 수 있으므로 (설치 프로그램, bleh를 사용하는 것처럼) 일반적으로 이것을 우회하려고하지 말아야합니다.

+0

일부 안전 문제가있는 경우 일반 APP Store 응용 프로그램에서 MobileSubstrate로드 dylib을 방지하는 방법을 알고 싶습니다. 어떤 아이디어? –

+0

Apple은 수정하고 싶지 않기 때문에 MobileSubstrate 로딩 dylib을 막기를 원합니다. – Matoe

+0

나는 앱이 탈옥 된 장치에 ms 확장을로드하지 못하게하는 방법을 의미합니다. –