Open rikka0w0 opened 4 years ago
Sure thing! Are you familiar with kaitai struct? IMHO that's the easiest way to document the structure, and as you might have noticed, I use that to generate a parser.
Out of curiosity, did you do your your analysis from scratch or base it on mine? Fresh insights are always welcome!
I started my analysis from scratch. I wrote my own xml files, compiled them with UICC.exe and observe the difference in the binary output file. Then I wrote my parser and did tests on the ribbon resource file from MSPaint, WordPad and ExplorerFrame.dll. This should be good enough to cover most possible/common cases. The meaning of some property fields (binary) cannot be easily understood. I use IDA to peek the internal algorithms of the uicc.dll, some binary data start to make sense, but most still remain unknown. Finally I just wanted to confirm if there's a WINE implementation of the UIRibbon.dll or UICC.exe, so I googled it, I didn't find the implementation but your project /w\
I have never used kaitai before, but today after few hours of reading, I found it pretty straight-forward. It could save tons of time for me. Descriptive is much better than hardcoding /w\ I think it time for me to migrate to the kaitai struct /w\
I think the application_views section should have a tree-like structure. Sections starts with 0x16 are called "Nodes", Sections starts with 0x18 are called "Collections", there are also "Properties" (0x01), "Arrays"(0x3B) and "Pointers"(0x3E). Nodes can contain all the other elements. Collections can have nodes or arrays as child element, but not at the same time. Arrays seems to be a list of some property-data pairs. Pointers point to some location within the binary file.
You may have seen a lot of "18 01 3E XX XX" stuff in the binary file. The outcome of IDA reverse-engineering indicates that the third byte is the type of this collection:
FooterItems 0x49
MRUItems 0x48
Items 0x3E
I wrote my own xml files, compiled them with UICC.exe and observe the difference in the binary output file.
Yes, that's how I did it as well.
I use IDA to peek the internal algorithms of the uicc.dll, some binary data start to make sense, but most still remain unknown.
That's against Wine cleanroom rules, so I can't do that. Since you're not working on Wine that doesn't apply to you, but please don't post details found by disassembled code, since I won't be able to use them.
I agree that my parsing structure is not perfect yet though, I'll see if I can improve that.
FWIW, I reworked the parsing, and should now have a proper tree structure. Only have a few unknowns left, but all my tests do still pass.
Hi all, I'm trying to change win32 explorer ribbon background, do you have any suggestions? (e.g. hook)?
I'm doing a similar work. One of the limitation of the Win32 Ribbon Framework is that it does not support adding buttons/commands during runtime. My goal was to modify the ribbon UI of some existing application (e.g. Windows Explorer) by hooking the LoadUI and LoadResource WIN32 API then patching the binary resource.
https://github.com/rikka0w0/UICC_BML_Parser
Currently the structure of the file is known, but the meaning of some property fields remain unknown. Maybe we can collaborate!
Hi rikka0w0, do you have any suggestions for the win32 explorer Ribbon hook? Thanks~
Hi all, I'm trying to change win32 explorer ribbon background, do you have any suggestions? (e.g. hook)?
That's not something that is stored in the ribbon markup, so I'm afraid we won't be able to change that.
Hi all, I'm trying to change win32 explorer ribbon background, do you have any suggestions? (e.g. hook)?
That's not something that is stored in the ribbon markup, so I'm afraid we won't be able to change that.
Thanks for your reply, I will try hard. But I want to know why switch system from bright to dark, the ribbon background color changing from white to black.
I'm doing a similar work. One of the limitation of the Win32 Ribbon Framework is that it does not support adding buttons/commands during runtime. My goal was to modify the ribbon UI of some existing application (e.g. Windows Explorer) by hooking the LoadUI and LoadResource WIN32 API then patching the binary resource.
https://github.com/rikka0w0/UICC_BML_Parser
Currently the structure of the file is known, but the meaning of some property fields remain unknown. Maybe we can collaborate!