Cover photo

An Infinite Free Trial of Pixelmator Pro

What was I supposed to do when Apple might be killing [another] product they acquired?

I fully intend to buy this software, I'm just making sure it doesn't go extinct first... As I'm not a fan of setting money on fire. No piracy (or whatever else) is endorsed here.

For ages I used Canva like a pleb... and eventually moved to using Affinity Designer on my iPad. For the longest time something felt missing though, there was a gap in the middle between the two as Canva was much too simple and the perpetually online browser use sucked. Affinity was great locally, but the layout of the tools was completely unintuitive for a simple user like myself that didn't need it for anything more than a little graphical editing / photo changes. About a month ago I discovered Pixelmator Pro and was blown away! It had all the features I needed, was easy to use, the produced graphics didn't look like they were made in Canva, and the UI made it feel like a default Apple tool. How could it get any better?

I went to their site right after my 7 day trial expired and intended to purchase it, which is done through the App Store. It was $50, which I was more than happy to pay, but some users on Reddit mentioned that they usually run a Black Friday sale so I decided to wait, as it was October and the Thanksgiving holiday was quickly approaching. To my horror, it's been recently announced that Apple is acquiring Pixelmator (and its associated other products)... which may not be good, to say the least.

Apple has an iffy history with acquisitions. Sometimes they go great, and the team continues to produce an amazing product that is brought under the Apple umbrella. Other times they end up killing it off without a second thought. This death blow has been dealt out to a previous photo editing app Aperture, and a similar blow to the weather service Dark Sky, leaving tons of users stranded.

The Pixelmator team released a blog post saying that there would be no material changes "at this time". Which makes me a little more concerned for this acquisition. What could become of the app? It's a one-time purchase, so maybe it will now change to a subscription model? Maybe they'll only support one year of versions for the single purchase, then leave those previous customers in the dust. Or they could discontinue the app entirely, and remove it from the App Store.

In the end, I still want to purchase the product, I just want to make sure they don't kill it first. So I had to ask: How is their trial enforced? I'm not some genius cracker or reverse engineer, but I figured I could give it a shot.


What Does the Trial Rely On?

Each time the trial app is open it will tell you how many days you have left, starting from 7. Once it reaches zero, the app won't open. To find out what it relies on, I made a list of things to check:

  1. Maybe redownloading the trial starts it over again?

  2. Maybe it reaches out to a server and sends the computer's user / details over to see if the trial is up?

  3. Could it include a list of computer details in each downloaded version of the trial app it checks against?

  4. Could it store particular files somewhere on the OS that it checks for to see either how long they've been there or for a value contained inside them?

I'm sure there are a billion more ways to enforce trials, but as I previously said; I'm definitely not some genius cracker.

What Failed & How It Failed

Redownloading the Trial

Downloading a new trial and running it still showed my zero days, so no luck here.

Blocking Network Activity

Downloading a new version of the trial app, I turned off the WiFi on my computer and started it up. It still showed zero days left on the trial, so that meant it had to be something locally. To take this further, I could have also used a network monitor and see if it was reaching out to a server and observe any responses. At this point I thought it was less likely to be what I'm looking for though.

Embedded Computer Details

I didn't even test this because I had zero idea where it might even store these. The second I thought of how complicated the build process would be and the potential of this information including too much data, I went ahead and crossed it off my list.

What Worked and Why

Within the terminal I was originally screwing around and attempting to see what files were accessed during the program's initial startup after it was extracted from the ZIP file. The command went something like this:

sudo fs_usage | grep "Pixelmator Pro Trial" | awk '{print $3}' | sort | uniq

This was taking forever and I was feeling impatient that day, so I instead decided to just hunt down and find any files referencing Pixelmator left on my OS and deleting them. The trial app runs from the folder it's executed in, so it doesn't need to be installed, which made me think it would be relatively easy to track down any files it leaves behind elsewhere.

So instead I used "mdfind":

mdfind "Pixelmator"

And it showed me quite a few unique files and directories that the app leaves behind. The big ones were in:

  • /Users/< user >/Library/Application Scripts/

  • /Users/< user >/Library/Containers/

  • /Users/< user >/Library/Group Containers/

Within each directory is another directory with the "Pixelmator" keyword within it. I deleted those directories and boom, upon opening the app, the trail has restarted to be 7 days. The trial contains (to my knowledge) all of the functionality offered by the normal Pixelmator Pro app. From the above, it looks like the trial is enforced by the presence of those files. Changing the names of these files wouldn't do much to alter the impact either, as I could have just found them through the more drawn out process of parsing the fs_usage output.

On a weirder note, I removed the signature from the app while I was taking a look at a few things for this post via:

sudo codesign --remove-signature Pixelmator\ Pro\ Trial.app

and then re-added an ad-hoc signature via:

sudo codesign --force --deep -s - Pixelmator\ Pro\ Trial.app

and the 7 day timer reset itself... No idea why. ChatGPT is saying that it could be due to the original code signature also being used to rely on those previously mentioned files. So if the code signature matches from the trial and the things that are supposed to be left behind, it continues its countdown. If the code signature doesn't match the items left behind, it resets (maybe?). Creating a wrapper to rotate an ad-hoc signature is just as easy as creating one to delete specific folders every 6 days, so it doesn't matter much to me either way (haha).


Overall, I'm hoping the acquisition process is a smooth one. They should either continue to build out Pixelmator Pro with the same quality and features, or they build those amazing features into something like iPhotos/Preview without reducing/removing anything along the way, and I'll be happy. I'm paying close attention to this as it develops, and have my fingers crossed that the outcome is positive for consumers!


There are a couple of other pieces of Mac software people have been recommending me to try out, and they all seem to offer trial versions with unique enforcements methods, so I might look into them as well before purchasing. These apps are (along with what I think their difficulty will be from briefly glancing at them):

What's the Alternative?

I'm approaching this all from a learning perspective, but I think it's important to provide recommendations on how to avoid having your software cracked or trial mechanisms taken advantage of in the first place. CleanShot X seems to have taken a unique path:

They don't even offer a trial, but have a strong consumer-oriented 30-day money-back guarantee. I have already bought CleanShot X (and love it), but if you're looking for a cheaper alternative ($30 vs. $12) I used to use Shottr (which is amazing). Shottr is also free, and takes a WinRAR approach where it asks you to buy it every so often. It's supported by a single dev, so if you like it, definitely buy it! It's only two cups of coffee.

Back to the topic at hand, it's better to either deliver:

  • A trial app with the features carved out (literally non-existent within the binary) that works offline.

  • A trial app with the full features but sevrer-side registration verification. This can force the app to not work offline though (which could be referred to as "unreliable").

If you're delivering a trial app to a user that is only a few patches away from its full capabilities being accessed forever, you can't be surprised when it gets cracked. Carving bigger features out so that they can't even be accessed in the trial binary can solve this issue though. You're essentially reducing the attack surface for this, as a trial binary with all of the features inside of it available to anyone for free without any impediments raises the potential of it getting into a cracker's hands in the first place.

There's no permanent solution though, as even the biggest most expensive pieces of software (like Photoshop) get cracked, it's more about putting road blocks in the way to make it a little harder at each step for the crackers. Maybe they get frustrated and move on, maybe they find a better target, or a million other reasons. In the end it buys you a few more months of your app not being cracked.

In the end, I wouldn't worry about it too much. It's kind of like my post on piracy, where the people pirating these programs probably weren't buyers in the first place. The people taking advantage of these unique situations are either:

  • Crackers themselves (so not very many people)

  • Users downloading the cracked programs (wouldn't normally buy it anyways)

And in addition to that, downloading and using cracked software is "sketchy af". You never know if they decided to include some extra scripts or shellcode within those executables, and I'd much rather purchase something and have the piece of mind that my entire life's data isn't being gone through and sold on some Russian forums.


I'll probably post again on this topic as I continue down this rabbit hole. If you've got any cool resources or courses, especially for Mac, please shoot me a message or leave a comment!

Loading...
highlight
Collect this post to permanently own it.
alp1n3.eth logo
Subscribe to alp1n3.eth and never miss a post.
#cracking#patching#trial#pixelmator