Я заинтересован в демонстрации printf
уязвимостей через приложение NDK. Чтобы было ясно, я знаю, что для входа в консоль мы можем использовать __android_log_print(ANDROID_LOG_DEBUG, "LOG_TAG", "Print : %d %s",someVal, someStr);
. Я попробовал это, и я знаю, что это работает. Но я явно хочу продемонстрировать уязвимости printf()
, в частности использовать спецификатор %n
для записи в указанное место.
Есть ли способ заставить printf()
работать с этим эффектом, или это возможно сделать через __android_log_print()
? Я попытался сделать это с заголовком android/log.h
, но это не сработало.
Я могу заставить приложение аварийно завершить работу, выполнив что-то вроде printf(%s%s%s%s%s%s%s%s%s%s)
. Но опять же, я не могу манипулировать указателями.
Для общих знаний, почему printf()
не работает в первую очередь и как __android_log_print()
предотвращает эти подвиги?