Files
Tweaks/GoodnotesPro/index.md
2026-09-02 12:58:30 +02:00

1.6 KiB

GoodnotesPro

Unlocks GoodNotes Pro features — port of BadNotes by c22dev (Constantin Clerc).

How it works

GoodNotes uses RevenueCat (proxied via */v1/subscribers/<user_id>) to check subscription status. The tweak hooks NSURLSession -dataTaskWithRequest:completionHandler: at runtime, strips cache headers (If-None-Match, X-RevenueCat-ETag), and replaces the JSON response with a crafted payload that grants:

  • entitlements.apple_access + crossplatform_access → com.goodnotes.pro_7dt_1y_3599 (expires 2099-12-31)
  • subscriptions → both com.goodnotes.pro_7dt_1y_3599 and legacy com.goodnotes.gn6_one_time_unlock_3999
  • quotas.ai → 525/month
  • current_plans.base → pro

It also patches NSBundle -localizedStringForKey:value:table: to show BadNotes labels (yearly period + subtitle).

Some server-side features (AI, collaboration) may still not work.

make clean && make package THEOS_PACKAGE_SCHEME=rootless DEBUG=0
cyan -i com.goodnotesapp.x-7.1.18.ipa \
     -o com.goodnotesapp.x-7.1.18_patched.ipa \
     -f packages/xyz.nohamr.goodnotespro_1.0.0_iphoneos-arm64.deb \
     -u