Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

ScottieDog

macrumors newbie
Original poster
Aug 6, 2022
12
0
Hello,

I am using an older App on Monterey, it is called "Lovers Clock" - it has black text showing a second clock on the top menu bar. All my menu bar items are white except for this one App, I would like to change its text colour to white too, if possible.
Can I go into the APP settings somehow and change the text colour to white by over-writing some of the code?

I have ctrl-clicked the APP and then selected "Show Package Contents" but not sure where the settings might be?

I wonder if anyone can help me, please?
 

Attachments

  • Screenshot 2022-08-16 at 08.43.16.png
    Screenshot 2022-08-16 at 08.43.16.png
    28.6 KB · Views: 95

Red Menace

macrumors 6502a
May 29, 2011
578
226
Colorado, USA
The only settings are what the preferences provide. The application executable is a compiled binary file, and the nib file is also compiled, so changing any of it would not be trivial.
 

ScottieDog

macrumors newbie
Original poster
Aug 6, 2022
12
0
The only settings are what the preferences provide. The application executable is a compiled binary file, and the nib file is also compiled, so changing any of it would not be trivial.
Thanks for your response, I had a feeling that it might be something like that.

Thanks for taking a look, I appreciate it. I'll just have to live with the black text against all the others being white, I doubt the app developer will be updating anytime soon.

May have a look around and see if I can find another similar app.
 

f54da

macrumors 6502
Dec 22, 2021
357
131
> nib file is also compiled

There used to be a way to reconstruct a xib from a nib file (nibunlocker) but probably won't work with anything post 2010. Worst case you can probably process inject (e.g. via ld_preload) and muck around with the internals from there.
 

ScottieDog

macrumors newbie
Original poster
Aug 6, 2022
12
0
> nib file is also compiled

There used to be a way to reconstruct a xib from a nib file (nibunlocker) but probably won't work with anything post 2010. Worst case you can probably process inject (e.g. via ld_preload) and muck around with the internals from there.
This sounds interesting. Do you think it would be possible to inject the change of font colour? Is there somewhere I can read more about this and then test it? Any information is gratefully received.
 

Red Menace

macrumors 6502a
May 29, 2011
578
226
Colorado, USA
I took a quick look in the bundle to see of there were any resources that could be changed (without a lot of work), but didn't see anything. You can open a .nib file in a text editor and take a look, but the entries these days are just internal references from the .xib file (which isn't included), and that doesn’t preclude the developer making settings programmatically. The compiled executable is the same way - you can take a look, but good luck finding a byte sequence that won’t break it.
 

f54da

macrumors 6502
Dec 22, 2021
357
131
This sounds interesting. Do you think it would be possible to inject the change of font colour? Is there somewhere I can read more about this and then test it? Any information is gratefully received.
Yes. If the developer set it programmatically, then it's trivial to change. Just throw it in a disassembler like hopper and either directly modify the executable to change the right byte sequence (will need to resign afterwards), or you can create a dylib which you can inject which will use obj-c swizzling to do the same thing. Even if it's not set programmatically, once the view has been loaded it results in an object hierarchy similar to the DOM, and you can explore it and override the font color from there. Using f-script is probably the easiest way to dynamically trace views.

It's not difficult, just requires you to be familiar with basic obj-c (zkswizzle is a good library to automate swizzling) and comfortable with doing disassembly (hopper's pseudo-decompilation helps if you'd rather look at c though).

Fyi code injection via simbl is not possible on monterey without disabling sip, probably easiest approach on the newer systems is to do via dyld_insert_libraries. And then update info.plist to automatically set the env variable when launching. Since it's an older app you probably won't have to worry about hardened runtime or entitlements.
 

ScottieDog

macrumors newbie
Original poster
Aug 6, 2022
12
0
Thanks for your comprehensive reply. I think that lot is above my pay grade, unfortunately.
I really do appreciate your reply though and hope it can help someone else.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.