Live data from Hacker News

Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

cindori.com

21–30 of 57 posts

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#21
post #20

What were some of the technical challenges you experienced while reverse-engineering the wallpaper system? I've been reverse-engineering (for lack of a better term) some of macOS' and Xcode's poorly-documented functionality prototyping a personal developer tool. My investigation isn't sophisticated by any means; it's just been trial-and-error, but I haven't found much online in the way of resources for people going d…

Reverse engineering is hard! I use Hopper (https://www.hopperapp.com) to disassemble related binaries and frameworks. It's a great way to explore whats actually happening within macOS or Apple apps.

You can also export assembly files and throw various agents (Gemini, Claude etc) at them to learn more. It's surprisingly effective!

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#22
post #17

I really like the wallpaper that plays on the top of your website. Can't seem to find it on the app. Could you point me in the right direction? https://cindori.com/backdrop

It's not available (it's just a promotional video), but I've received to many requests for it so I guess I'll have to make a real wallpaper from it!

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#23
post #6

What's reverse engineering like on a Mac? Have you ever written about it? I had a lot of experience reverse engineering things on windows (win32 + x86, before 64bit was a thing) using OllyDbg and patching binaries and/or (ab)using dlls. If I had to use windows again and wanted to customize something, I'd probably use windhawk nowadays [0]. On Linux, I can just compile software myself if I need to make changes. But us…

I have not written about it yet. I use Hopper (https://www.hopperapp.com) to disassemble related binaries and frameworks. It's a great way to explore whats actually happening within macOS or Apple apps.

My current workflow is to run Hopper, export assembly files and then throw various agents (Gemini, Claude etc) at them to learn more or validate my theories. It's surprisingly effective! Maybe I'll write about it.

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#24
post #13

What happens to purchasers if/when apple update MacOS and this no longer works?

Apps break on OS updates all the time. I'll do my best to keep supporting this feature. Who knows, maybe Apple will take note and make it a default feature in next macOS?

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#26
post #5

Worth mentioning that if you want a free way to do this that does not require running additional software. All you have to do is have a video you want to use, download one of apple's through settings, go to the location of the downloaded background (I don't remember where that is right now but a quick google search would take care of this), rename your file to the name of apple's file and then replace it. Mac will ac…

> Until apple starts doing any checksum checks on these files I doubt this method will break anytime soon.

Watch as this is used for malware persistence through a code execution exploit. Then Apple will start verifying the file content.

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#27
Awesome stuff !

I've been trying to make a library/cli to set the wallpaper/screensaver to use in the next version of Aerial (https://github.com/AerialScreensaver/PaperSaver) on individual screens and been toying around a lot with that whole WallpaperAgent subsystem (and obviously everything Aerial like the manifests, etc, before that), so I may have some insights/questions if you have time ?

From what I've seen there are multiple parts to the way that macOS subsystem works :

- Apple fetches the manifest (json file) with their own videos in (only) 240FPS

- It gets ingested in '/Library/Application Support/com.apple.idleassetsd/Aerial.sqlite' for some reason

- Apple pulls the videos in '/Library/Application Support/com.apple.idleassetsd/Customer/4KSDR240FPS' but renames them through a UUID (despite them having individual keys in the JSON)

Adding videos and sections in System Settings, you can do by manipulating that sqlite and killing WallpaperAgent (or maybe something else) before doing it, but as far as I remember (I only toyed with that part last year during Sequoia beta, so probably misremembering), macOS will periodically pull the manifest again and (fairly often) erase all your changes.

As far as I know, what you select then gets saved per screen/space in `~/Library/Application\ Support/com.apple.wallpaper/Store/Index.plist` (with a lovely Base-64 coding thrown in for fun).

The last part to this is a SystemWallpaperURL key stored in `~/Library/Preferences/com.apple.wallpaper.plist` which I believe (not 100% sure), contains the "special" video that gets played on a cold boot login (as far as I know it's a separate state from the "classic" Lock Screen).

So if I may :

- Do your videos show up on a cold boot too (that separate state I mentionned?) or just the "classic" Lock Screen? My rough guess is the cold boot lock screen can only display videos that are on the System Volume that's mounted before the user volume, so that one is probably fully out of reach.

- How hard did you have to workaround working with restricted paths ? Apple (for some good reasons) restricts hard access to files in user folders, and at that point the only safe place I can reasonably find (outside of containers, but that's a whole other story with screensavers) is `/Users/Shared`. Are you using that folder too?

- Are you messing with the sqlite db, or are you injecting via a reversed engineered api?

- Did you try editing `~/Library/Application\ Support/com.apple.wallpaper/Store/Index.plist` to set your video wallpapers or are you just relying on them being integrated in System Settings?

Since Sequoia, right now Apple broke the way we could set a screensaver via terminal. I got that part working (setting per screen/space) in PaperSaver, but the wallpaper part (basically just switching to another user selected image, not even a video, but this has to be done per space for which we don't have a public api for), I can't seem to get quite right yet, so any insight you have on that would be welcome. Take care and again awesome effort on your launch, this is a non trivial system with so many pitfalls, it takes a bunch of dedication to make it work with so many subtle problems in every corner.

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#28
Hi cindori, I couldn't figure these out without purchasing:

1. Does Backdrop plan to support 5K/6K wallpapers? Those resolutions are pretty standard for Mac workstations.

2. Is functionality similar to TopNotch supported where the notch is hidden? If this was supported I'd likely buy a lifetime license today.

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#29

Hi Oskar - I'd love to propose a product idea to you, i'd love to buy something like this or the Mac if it were available. I had this on my linux laptop ( https://man.archlinux.org/man/xtrlock.1.en ) but it is surprisingly difficult to find for Macs -- something that locks the computer but still allows you to see the screen. This would be ideal for log windows, dashboards, etc. Separately, if there is something like…

What you're asking for is called "kiosk" mode.

Here's a random app I found: https://www.mackiosk.com/

Re: Show HN: I reverse engineered macOS to allow custom Lock Screen wallpapers

#30
post #12

Earlier quoted context omitted.

I am so uneducated that I cannot even answer your question properly. But for example, the default terminal in OSX has a really nice thin bar. VSCode/Cursor have a _slightly_ thicker one. Google Chrome and Firefox are huge. The red/yellow/green buttons also don't have a consistent position between those applications. Do you happen to know which are custom chrome and which are "unified"? It didn't occur to me that othe…

Safari is one example of a native AppKit “unified” titlebar+toolbar, as is the Finder. And yep, all those listed (VS Code/Cursor, Chrome, and Firefox) are examples of fully custom third party window chrome, which is why they’re so variable. A lot of cross-platform software does this. It’s worth noting that Firefox at least lets you toggle on the standard titlebar — right click the toolbar, click “Customize Toolbar…”,…

Heh, so really I just need to go with the Linux approach and recompile everything with "fixed" titlebars.

For some reason it didn't occur to me that it's non native since they do such a good job at matching the native stuff.

On a side note, I'm glad I don't use finder or safari, because those titlebars are even larger than Chrome and Firefox! Absolute insanity.

Post reply on HN