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…

What is this?BadNotes is a jailbreak tweak for iOS that unlocks GoodNotes Pro by spoofing the app's subscription check.
How do I get this running on my device?You build the tweak (the repo ships a GitHub Actions workflow, buildIPA.yml, that produces an IPA) and install it on a jailbroken device via the usual tweak installer, since it patches GoodNotes' behavior at runtime rather than being a standalone app.
Do I need a jailbroken iPhone for this?Yes - BadNotes hooks NSURLSession inside the live GoodNotes app at runtime, which only works on a jailbroken iOS device capable of loading tweaks.
Does it unlock every GoodNotes Pro feature, including AI tools?No. It only fakes the local subscription check, so anything that actually depends on GoodNotes' servers, like AI features and collaboration, still won't work.
How does BadNotes actually fool GoodNotes into thinking I'm Pro?GoodNotes checks subscription status by calling a GoodNotes-proxied RevenueCat API ('/v1/subscribers/') on every launch. BadNotes intercepts that specific network response and swaps in a crafted JSON payload claiming you have an active Pro subscription.
Why doesn't it just patch the app's code directly?Because the Pro check is decided by a server response, not local code, so intercepting and rewriting that one API response at the networking layer is enough to flip the app's Pro status, without needing to touch GoodNotes' actual logic.
Creator
c22dev
Size
<0.1 MB
Stars
149
Age
1mo
Commits · 90 Days