Skip to content

Instantly share code, notes, and snippets.

@dannote
Last active June 5, 2025 14:05
Show Gist options
  • Save dannote/17e0396fe2e19c6e60c915838376d267 to your computer and use it in GitHub Desktop.
Save dannote/17e0396fe2e19c6e60c915838376d267 to your computer and use it in GitHub Desktop.
Final Cut Pro X trial reset
#!/usr/bin/swift
// DISCLAIMER
// This script modifies an unencrypted file associated with the trial version of Final Cut Pro.
// Under the DMCA (17 U.S.C. § 1201), this modification does not qualify as circumvention of a technological
// protection measure (TPM), as it does not involve bypassing encryption, authentication, or similar protections.
// Distributing this code is therefore legal under the DMCA.
// This script is intended for educational and research purposes, such as exploring trial-related file structures,
// or for system troubleshooting in controlled environments with explicit permissions. It is not intended to be used
// in a manner that violates Apple's software license agreement.
// WARNING
// Using this script to reset or extend the trial period of Final Cut Pro without Apple's authorization likely violates
// the software license agreement. Such actions may lead to legal consequences. The responsibility for compliance with
// all applicable laws and agreements lies solely with the user. The author of this script assumes no liability for misuse
// or any resulting consequences.
import Foundation
let path = URL(fileURLWithPath: NSString(string: "~/Library/Containers/com.apple.FinalCutTrial/Data/Library/Application Support/.ffuserdata").expandingTildeInPath)
let data = try! NSData(contentsOf: path) as Data
let dictionary = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as! NSDictionary
let mutableDictionary = dictionary.mutableCopy() as! NSMutableDictionary
for (key, value) in mutableDictionary {
if value is NSDate {
mutableDictionary[key] = Date()
}
}
try! NSKeyedArchiver.archivedData(withRootObject: mutableDictionary, requiringSecureCoding: false).write(to: path)
print("You'd better buy it")
@FreeGuyAi
Copy link

Use this command:

defaults write com.apple.Finder AppleShowAllFiles true && killall Finder && rm /Users/$(whoami)/Library/Application\ Support/.ffuserdata 2>/dev/null && echo '.ffuserdata deleted' || echo '.ffuserdata not found'

If it doesn't work, change the date to 3 months back using Mac settings, then try again.

@santgodd
Copy link

works on Sequoia 15.2?

@elvischepin-github
Copy link

elvischepin-github commented Mar 4, 2025

For me what worked (just replace 'tom' to your username):
mv -v /Users/tom/Library/Containers/com.apple.FinalCutTrial/Data/Library/Application\ Support/.ffuserdata ~/.Trash/
Hope that helps.

Sequoia 15.3.1

@svikramajit
Copy link

For me what worked (just replace 'tom' to your username): mv -v /Users/tom/Library/Containers/com.apple.FinalCutTrial/Data/Library/Application\ Support/.ffuserdata ~/.Trash/ Hope that helps.

Sequoia 15.3.1

This worked for me. I couldn't find the "com.apple.FinalCutTrial" folder. So I searched for it in search bar. Multiple folders showed up. Somehow I managed to locate the ".ffuserdata" file and delete it. Trial has been reset. Thank you!

@TehBrian
Copy link

TehBrian commented Jun 5, 2025

Just a heads-up @elvischepin-github and @svikramajit, my gist at https://gist.github.com/TehBrian/bf82c7505b647d423da6d5abbe2b95a3 should work as well, and you won't need to modify it with your username.

@elvischepin-github
Copy link

Just a heads-up @elvischepin-github and @svikramajit, my gist at https://gist.github.com/TehBrian/bf82c7505b647d423da6d5abbe2b95a3 should work as well, and you won't need to modify it with your username.

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment