сниффер
Добавлено: 02 май 2017, 10:36
Создал "sniff"исполняемый файл в нем вызывается библиотека Сии "libcap" которая работает напрямую с ядром
Все происходит в virtualbox Android X86
положил файл adb push
Все прекрасно все запускается в консоли
и через adb
на консоль выводится собственно то что нужно т.е пакеты сетевые.
И даже когда через андроид приложение запускаю в коде
sniff запускается
но здесь уже останавливается на поиске устройств
так как для доступа к функциям ядра необходим эфективный uid рутовский т.е. "0"
но у моего андроид приложения uid = 10087
этот код выдает на консоль эклипса
"uid=10087(u0_a87) gid=10087 (u0_a87)"
т.е. для запуска исполняемого файла sniff с правами rwxrwxrwx у андроид приложения
хватает разрешений а для работы с функциями ядра в самом коде уже нет.
если так
то в консоль эклипс ни чего не выводиться так как
мы имеем " in = child.getInputStream();" от первого процесса
а при выполнениии команды su создается уже новый процесс с root правами
но от него мы уже не имеем ссылки на поток "in"/
ВОПРОС как мне добраться до нового потока
либо как мне еще можно запустить исполняемый файл из андроид приложения
так же у файла sniff ,был изменен БИТ suid
что тоже ни как не повлияло на поведение sniff при запуске из андроид приложения
Все происходит в virtualbox Android X86
положил файл adb push
Код: Выделить всё
adb push sniff /system
Код: Выделить всё
ANDROID root@x86 : / # /system/sniff udp
Код: Выделить всё
adb shell
$ su
# /system/sniff udp
И даже когда через андроид приложение запускаю в коде
Код: Выделить всё
runtime.exec( /system/sniff udp)
sniff запускается
но здесь уже останавливается на поиске устройств
так как для доступа к функциям ядра необходим эфективный uid рутовский т.е. "0"
но у моего андроид приложения uid = 10087
Код: Выделить всё
child = Runtime.getRuntime().exec("id");
out = child.getOutputStream();
in = child.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
String line;
String result = "";
while ((line = bufferedReader.readLine()) != null)
result += line;
System.out.println(result);
"uid=10087(u0_a87) gid=10087 (u0_a87)"
т.е. для запуска исполняемого файла sniff с правами rwxrwxrwx у андроид приложения
хватает разрешений а для работы с функциями ядра в самом коде уже нет.
если так
Код: Выделить всё
child = Runtime.getRuntime().exec("su -c /system/sniff udp");
мы имеем " in = child.getInputStream();" от первого процесса
а при выполнениии команды su создается уже новый процесс с root правами
но от него мы уже не имеем ссылки на поток "in"/
ВОПРОС как мне добраться до нового потока
либо как мне еще можно запустить исполняемый файл из андроид приложения
так же у файла sniff ,был изменен БИТ suid
Код: Выделить всё
chmod 6777 /system/sniff