2012-03-10 3 views
0


Я делаю приложение Cydia, у которого есть разрешение на установку файлов. Мне нужно иметь возможность получить root-доступ к/Applications для этого. Я посмотрел here, но было немного неясно. Может ли кто-нибудь объяснить это немного лучше?Предоставить доступ к корневой папке Cydia

Спасибо!

+0

Проверьте этот ответ тоже (http://stackoverflow.com/a/8796556/119114) – Nate

ответ

1

вы можете использовать этот

setuid(0); 
system("/path/to/script.sh"); 

, где путь к сценарию является сценарий в вашем приложении, который будет устанавливать файлы

или

setuid(0); 
system("cmd"); 

где ЦМД команды, такие как

setuid(0); system("echo Hello World"); 

Вы также можете зайти на страницу в каталог /tmp или в другое место.

setuid(0); system("echo Hello World >> /tmp/install.log"); 

setuid (0); дает ему доступ корня и system (cmd); фактическая команда

Будьте осторожны, как вы используете это как корень имеет доступ к везде.

2

Никогда не используйте систему с setuid! Если, например, злоумышленник должен был изменить PATH на /tmp:$PATH, и этот человек добавил свою собственную программу в/tmp и назвал ее «ls», тогда даже запуск этого простого кода предоставит им root-доступ к вашему устройству:

setuid(0); system("ls"); 

Вместо этого вы должны использовать семейство функций exec, но не execvp/execlp.

+0

Другой способ решения этой проблемы - полностью квалифицировать команду, которую вы передаете 'system()', например '/bin/ls' вместо 'ls'. – Nate

+0

@Nate: не совсем. 'export IFS = /' – C0deH4cker

+0

Если вы утверждаете, что 'export IFS = /' превратит команду '/ bin/ls' в' bin ls', которая может запускать вредоносный скрипт с именем 'bin', помещенный где-то в PATH ... нет, не будет. Я попробовал это на взломанном iPhone. Также попробовал 'export IFS = '/''. Это довольно старый эксплойт, и похоже, что у взломанной оболочки iOS это исправлено. – Nate

Смежные вопросы