badnotes README

The project's README from github.com/c22dev/badnotes. As one markdown file: README.md.

BadNotes

An iOS tweak that unlocks Goodnotes Pro

How does this work ?

Goodnotes uses RevenueCat to manage subscriptions. Every time the app starts, it sends a request to a GoodNotes proxied RevenueCat's API (/v1/subscribers/<user_id>) to check your subscription status

BadNotes hooks NSURLSession's dataTaskWithRequest:completionHandler: at runtime ; and when the app makes a request to that endpoint, the tweak intercepts the response and replaces the JSON body with a crafted payload that tells the app u are Pro

That's basically it !

Limitations

Some features are server-side and won't work (AI features, collaboration, etc...)

Building

xcrun clang -arch arm64 -shared -fobjc-arc -install_name @executable_path/BadNotes.dylib -framework Foundation -o BadNotes.dylib Tweak.m

badnotes (c22dev/badnotes)

Searching Database…

Что это?BadNotes — твик для джейлбрейкнутого iOS, который открывает GoodNotes Pro, подделывая проверку подписки приложения.
Как заставить это работать на своём устройстве?Вы собираете твик (в репозитории лежит GitHub Actions workflow buildIPA.yml, который собирает IPA) и устанавливаете его на джейлбрейкнутое устройство обычным установщиком твиков: он патчит поведение GoodNotes на этапе выполнения, а не является отдельным приложением.
Для этого нужен джейлбрейкнутый iPhone?Да — BadNotes подменяет NSURLSession внутри живого приложения GoodNotes во время выполнения, а это работает только на джейлбрейкнутом iOS-устройстве, способном загружать твики.
Открывает ли он все функции GoodNotes Pro, включая ИИ-инструменты?Нет. Он подделывает только локальную проверку подписки, поэтому всё, что реально зависит от серверов GoodNotes, — например ИИ-функции и совместная работа — по-прежнему работать не будет.
Как BadNotes на деле обманывает GoodNotes, заставляя считать меня Pro?GoodNotes проверяет статус подписки, вызывая при каждом запуске API RevenueCat через прокси GoodNotes («/v1/subscribers/»). BadNotes перехватывает именно этот сетевой ответ и подставляет подделанный JSON, утверждающий, что у вас активная подписка Pro.
Почему он просто не патчит код приложения напрямую?Потому что решение о Pro принимает ответ сервера, а не локальный код: перехвата и переписывания одного этого API-ответа на сетевом уровне достаточно, чтобы переключить статус Pro, не трогая реальную логику GoodNotes.
Creator
c22dev
Size
<0.1 MB
Stars
150
Age
1mo
Commits · 90 Days