Sploitus

Exploit for dirtycow-replacer

kitploit · 2026-08-30

Exploit Code

MARKDOWN39 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DROIDVOIDER-DIRTYCOW-REPLACER
**ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО Я НЕ ПРОВОЖУ ФОРМАЛЬНОЕ ТЕСТИРОВАНИЕ ЭТОГО КОДА** ОН РАЗРАБАТЫВАЕТСЯ КАК ОБРАЗОВАТЕЛЬНЫЙ ИНСТРУМЕНТ

**Что это делает?** android-dirtycow-replacer использует эксплойт CVE-2016-5195 dirtycow для замены списка из более чем 1000 файлов. Вы можете увеличить его до 10000, но 1000 должно хватить. Сначала он проверяет, отличаются ли файлы; если нет, пытается заменить, и при ошибке останавливается. Ваша задача — предоставить файлы, отредактировав их, исправив selinux или что-то ещё. dirtycow заменяет только то, что может прочитать, поэтому этот инструмент не является финальным.

**Извините, если я сказал что-то дважды — у меня «голова кодера»** Этот код был протестирован на Note 5 и, похоже, работает корректно. Однако... Этот код в основном не протестирован и не является финальным проектом. Я разрабатываю toolbox.c, эксплойт dirtycow, который будет перезаписывать файлы, обычно недоступные для чтения, такие как init. Почему toolbox? Потому что я могу получить root + контекст, необходимый мне, эксплуатируя toolbox, а затем прочитать все нужные файлы.

**Требования** Linux, например последняя версия Ubuntu (бесплатно), а также Android SDK и Android NDK (тоже бесплатно).

**Инструкции** Создайте файл с именем files.txt с путями слева/справа от того, что вы хотите заменить. /system/build.prop /data/local/tmp/replace/build.prop Убедитесь, что ваши файлы существуют с обеих сторон уравнения — довольно просто, надеюсь! Я предлагаю попробовать вывести файл через cat, прежде чем добавлять его в список. Пример: adb shell cat /init **путь слева — заменяемый файл (обратите внимание на пробел), путь справа — файл, которым нужно заменить**

**Включен пример** Вместе с этим примером поставляется файл files.txt. Он указывает на тестовые файлы (отредактируйте его, чтобы увидеть) Также есть два каталога с тестовыми файлами: replace/ и replacewith/ Внутри каталога replace/ находятся 4 файла: beingpatched1, beingpatched2, ..3, ..4 beingpatched# text == unpatched001 — unpatched004 Файлы в replacedwith/ содержат текст patchingdon1 — patchingdon4 Когда вы вводите 'make push', происходит компиляция, и эти каталоги, files.txt и replacer отправляются в /data/local/tmp/ ..всё ещё со мной?, **Фактические инструкции для примера** Распакуйте в папку, щёлкните правой кнопкой и откройте два терминала в этой папке ......совет: если вы щёлкните сначала одно окно терминала, а затем другое, оба окна терминала останутся видимыми

В одном окне терминала введите: make log

В следующем окне терминала введите: make push <===Нет ошибок, верно?

adb shell затем cd data/local/tmp затем ./replacer

**Обзор основного проекта — не этого проекта** **Функция сравнения разрабатывается как триггер для toolbox.c** Функция сравнения сравнивает файлы побайтово, чтобы определить, различаются ли они. Это будет триггер для toolbox.c, чтобы попытаться перезагрузить /init. Затем toolbox.c запишет файл журнала (также следующий ключ-триггер) toolbox.c запишет результат попытки в другой файл журнала (финальный триггер), сообщая нам, что все функции были опробованы. Это позволит нам попробовать несколько контекстов для каждой фазы при неудаче, прежде чем сдаться — вероятно, необходимо.

**android-dirtycow-replacer** Моя цель — разработать автоматизированный инструмент замены на основе dirtycow.c, который можно будет использовать как эксплойт внутри toolbox.c или dumpstat.c android-dirtycow-replacer читает файлы для исправления из текстового файла, затем проверяет, различаются ли файлы, и только если они различаются, android-dirtycow-replacer исправит файлы, используя dirtycow.c. Повторюсь: этот код разрабатывается для слияния с toolbox.c / dumpstate.c как средство исправления неисправляемых файлов! Мой финальный код, скорее всего, будет переплетён с кодом обработки UID и контекста. Это форк моего собственного кода.

**Это приложение может иметь и другое применение** Но я не разрабатываю его для других целей в данный момент. Наиболее жизнеспособное применение, которое приходит на ум, — замена постоянного списка файлов после загрузки, например шрифтов или удаление разрешений для приложений на доступ в интернет, пока экран выключен. Или множество других настроек в /etc, которые будут восстанавливаться после каждой перезагрузки.

**ТРЕБУЕТСЯ**

  1. Вы должны иметь возможность прочитать файл на вашем Android-устройстве, чтобы исправить его. cat /init, например, выдало ли оно абракадабру?
  2. Убедитесь, что ваши заменяющие файлы имеют одинаковый размер, иначе произойдёт segmentation fault, и это приложение зависнет.
  3. В процессе не должно быть ошибок, иначе приложение спроектировано так, чтобы выйти.
  4. Добавьте больше обработки ошибок — я почти ничего не добавил.
  5. Убедитесь, что USB-отладка включена и вы можете выполнить adb shell на вашем устройстве.
  6. Всегда подключайте устройство перед вводом 'make'.



**Программное обеспечение в настоящее время не обновляется. ПО выложено как пример кода** Лично я считаю, что этот инструмент может получить root на любом устройстве в пределах области видимости в его текущем виде. Я также считаю, что это мощный организационный инструмент для достижения именно этой цели. Проблема для меня в том, что в данный момент я не заинтересован в получении root на моём личном мобильном телефоне. Я сломал достаточно вещей, что мой Note 5 просто потрясающий, и переустановка заново — сложная задача. **ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ, ЧТО Я НЕ ТЕСТИРУЮ ЭТОТ КОД НИГДЕ И НИКОГДА! ОН РАЗРАБАТЫВАЕТСЯ КАК ОБРАЗОВАТЕЛЬНЫЙ ИНСТРУМЕНТ**

**Если у вас возникла проблема** Пожалуйста, опишите проблему, и я исправлю её, когда смогу, если смогу сделать это безопасно на моём тестовом устройстве.