PS3 I did it! Offline HTML from the Browser

NewFile mentioned one (GIF support), im wondering where you found this ?, you mentioned other files but which ones ?
Btw... can you make a list of other files using this same structure ?
This is something important to know to decide how to publish all this info in wiki, by now it could fit in a wiki page named "Silk container"... but only if the other files shares the magic "SILK" (or "SILKPADD")

here are the original other bin files, pulled from 4.81, although matches 4.82 and maybe others down to 4.10. silk_webkit maybe only one we can use for exploit...not sure

silk: http://www.mediafire.com/file/y3vub0j8p8q2acq/silk-bin.zip/file
silk_nas: http://www.mediafire.com/file/sbhhwenww189uic/silk_nas-bin.zip/file
silk_webkit: http://www.mediafire.com/file/8g3k1hb2z18dn5h/silk_webkit-bin.zip/file

Silk Data

/dev_flash/vsh/resource/silk/data/

CEFramework.bin
CEHtmlApi.bin
CEHtmlUI.bin
CEPhWeb.bin

/dev_flash/vsh/resource/silk_nas/data/

CEFramework.bin
CEHtmlApi.bin
CEHtmlUI.bin
CEPhWeb.bin

/dev_flash/vsh/resource/silk_webkit/data/

CEFramework.bin
CEHtmlApi.bin
CEHtmlUI.bin
webcoreapp.bin

GIFs can be found in CEHtmlApi.bin
upload_2018-9-25_22-48-55.png


GIF and PNG can be found in CEHtmlUi.bin and others
upload_2018-9-25_22-49-26.png
 
Last edited:
I just realized...

HTML files (inside CEPhWeb.bin and CEHtmlUI.bin) are stored as standard string data, null terminated
Can be identifyed by reading the first characters of the string: <!DOCTYPE HTML
To convert the data to a HTML file is needed to remove the null byte at the end
 
Last edited:
thats great!!
do we no longer need to re enable Han every time? , i hope only once offline with a system update that been edit and injected with Han
I am afraid that no matter how advance the scene gets in the HAN field, it always require at least one small amount of time for activation,triggering in a way or another.

Also, if im right... i think is better to display the info in the GUI with the ID most at left, in this order:
ID - start - size - data
That has been done. You can now even sort the column. this can provide useful to the eye to see any sort of pattern.

Also, for the "size" i think is better to display the size of the real data (instead of the size that appears in the index)
I have not changed this yet. All I have to od is subsctract 4 from the current size but that can be confusing for data which is not text.

For better documentation, as obviously editing one of or more of those 64kb max pages to get a different outcome is only interesting if you can load it/them, it could be very helpul to add ways to trigger each error whether it's a js command or a setting to change.
True, someone needs to document all the cases when those errors happen.Not neccesary errors though. What do you think 64Kb at max?

For a fast test, search for this pattern (this is what i did to realize how much it was matching with the others and to crop some images manually): 0x00000008434542696E617279000000000009696D6167655C706E67
It contains the "CEBinary" and is repeated 14 times (one for every PNG file) :)
After it comes 4 bytes that indicates the size of the PNG file, so basically the structure is this:
0x00000008434542696E617279000000000009696D6167655C706E67
4 bytes (indicates PNG size)
lot of bytes (the PNG file)
And so on...
So for rebuilding purposes we dont really need to know how it works, because is static :)
Is better to find how it works, sure, and i think you re on the good road

To think about this is better to think in how the file is processed by the PS3
When the PS3 reads the "index table" it doesnt know (yet) if the data is a string or a file
So... the next step, when processing the first bytes of the metadata for the "data" entry is common (for strings and files)
This is the point where the PS3 realizes if what is reading is a string or a file
Doing binary searches for known patterns is bad. We have to fully understand this. The file from the PS3 is most likely processed in this way:
The data is needed from a specific ID. The index table is searched for that ID. Even if we adding the same ID more than once it would probably get only the first one. Then data is extracted given the start position and size.
That's it. Here we should stop talking about these .bin contains. That's all they do. Their structure is so simple. The contina itself know nothing about HTML, string, encoding, images or whatever. It simply holds these entry.
The extract data(buffer) is then parsed by the browser. Again, we no longet have anything to do with webcoreapp.bin at all! The browser modules should check the first 4 bytes and calculate the sum.

If the calculated size is = buffer size - 4 bytes, then it's a string, the 4 bytes are removed and the remaing bytes are further processed, encoding etc...

If the calculated size < buffer size - 4 bytes , then the browser know that it's not a string. But it must know the file type. The file type comes from the first string immediately after the 4 bytes with the calculated size.
To further proceed we need to know the supported filetypes: Right now we know:
CEBinary
CEDialog - No much is know about this, but it seems to contains CELabel , CEButton, etc.. So far only found in one of the .bin in the silk folder.

If it is CEBinary, then we have 4 more bytes for calculating size and then we have another string, image\png, image\gif, image\gifPushed. So that, these are the one I know. After than , 4 more bytes for the size of the real and true data and then the data. This is hte only way the browser can functions.

Not sure if i got what you mean, but i think there are only 12 error messages (repeated for 20 languages), and not so sure how much useful are going to be the others, im not sure when are triggered
As I said above, we don't have to limit ourselves to errors only.

The most important "unknown" at this point are the IDs for every entry... are obviouslly IDs because the PNG files doesnt have a filename (so there is no other way to identify PNG files, other than his ID, or his position inside the webcoreapp.bin structure, but identifying them based in the position is retarded, sony would not do this... so yeah is an ID for sure)
I guess is the web browser who "searches" for this IDs but how is made ?, maybe there is a huge list of IDs somewhere in the source code, or are working as references, or dunno
Knowing that could unlock some surprises :)
Yes, there are certainly IDs. No position based thing here. The web brwoser does check about the ID. If you would like to know the equivalent string value of ID, you can decrypt silk.sprx, silk_webkit.sprx and extract the string for them. You will get some really cool stuff, something llke msg_error_certificate invalid etc.. :)

Edit: i mean... by adding to the file other IDs (to do different things), either to display text messages, or to load files
We can add and change but we need to tell the browser which ID to get, and right now we can only change the ID data.

NewFile mentioned one (GIF support), im wondering where you found this ?, you mentioned other files but which ones ?
There are in there. In the other .bin files. You can tell from the next string aster CEBinary , we had a image\gif in there.

Btw... can you make a list of other files using this same structure ?
Pretty much all the .bin files in silk, silk_nas and silk_webkit folder. Thanks @esc0rtd3w . We might try to dig in older firmwares to see what we get.

This is something important to know to decide how to publish all this info in wiki, by now it could fit in a wiki page named "Silk container"... but only if the other files shares the magic "SILK" (or "SILKPADD")
Silk Container seems good enough,. All other files contain SILKPADD. IF they do not the editor will refuse to load it.

For instance, one of them (iirc, it's the first "The page cannot be displayed" error in the bin file) seems to be triggered when you load a page from an existing ip address but without server listening on the expected port.
As a matter of fact, that error also gives the specific error ID so idifferent type of errors can lead to that single page.

Currently, I think this method is the best choice we have for a local exploit implementation. Unlike bookmarks & other methods to persist the data that can be used to achieve the same kind of goal but under heavy constraints, webcoreapp.bin proves a reliable way to store up to 64kb of code. Additionally, webcoreapp.bin cannot be erased accidentally by the user.
Why 64kb at max?

Now to implement something decent, we need to find ways to trigger not just one but all those errors, like I explained above. If we do find appropriate js trigger calls, with 12 error pages, I could make a local toolset with up to 10 or 11 local exploit pages 4.0 style which each require between 128kb & 192kb once optimised & minified. The local toolset could even easily be multilingual as error pages are already implemented in several languages in the bin file, loading according to the xmb language settings.
Yes, it can be multilinguar but you do not really need to have different 10 or 11 pages. Yo ucan have different ones, one for dumping, one for flashing, one for HAN etc. You can still keep a lot of code in an erorr entry and use tricks like CSS display:none, to mae a kind of menu, like the user is actually navigating , when it's just one page.
 
I reached my limit in previous post so here we go again.

here are the original other bin files, pulled from 4.81, although matches 4.82 and maybe others down to 4.10. silk_webkit maybe only one we can use for exploit...not sure
Thanks for that @esc0rtd3w

I just realized...

HTML files (inside CEPhWeb.bin and CEHtmlUI.bin) are stored as standard string data, null terminated
Can be identifyed by reading the first characters of the string: <!DOCTYPE HTML
To convert the data to a HTML file is needed to remove the null byte at the end
Yes, those I noticed earlier, however those can't seem to be trigered in any way. If you extract that HTML and save it locally and open it in your PC. you will see: MicroBrowser.
I have no idea what this is, leftover form Netfront perhaps? The only other reference I can find is in the "silk" folder CEHtmlUI.bin , entry with ID 110042, CEDialog data : "AOL Microbrowser"
 
I am releasing a new version of the editor.

Changelog:
ID field moved to first position.
Can now sort by size, Id, offset and data column
Data column can now be properly edited and pasted into. For long HTML code i recommend ot write elsewhere and then paste the data there.
Fixed a problem with data parsing.
Fixed a bug when a new .bin was generated. The first entry was not properly aligned.
Added extraction for all those entries which are not strings. Everything will be extracted in the same folder with the same name as the file.,webcoreapp.bin to webscoreapp. All non stirng entries will be in the format ID_BINARYHEADER.bin ex: 127_CEBinary.bin.
If CEBinary and image\png then the png will be automatically extracted as ID_BINARYHEADER.png.
If image\gif then the gif will be genereated and if miage\gifPushed (really weird metadata) then a .png(yes they are png) will be generated in the same folder.
No importing of images extracted binary data yet! In progress.

@sandungas , the new editor should allow you to easily see the images. Any idea of pumping things up like you said?

I don't know hwo to parse CeDialog yet. Other than that here is:
Code:
CeTab
CeToogleButton
CETree
CeTruncatableLabel
CeBinary
CeRadioButton
CERectComponent
CEPlainText
CeLabel
CELabeledPanel
CeMenuList
CEMenuToolBar



The Browser has a lot to explore. Enabling debug mode in xRegistry should be a good idea. Sadly, the 4.82 no longer writes the webbrowser.txt but still it adds a lot of options.
You can use search: and file: with the module_action in one of those XMB xml files. Search will open Goaggle with the supplied search query.
File is supposed to open a local file but for some reason it seems now to wokr. However, it certainly allows local access in a way as proven by this string:
Code:
file:///app_home/flash0/vsh/resource/silk/debug/localfileaccess.html

Other options would be psgm: and psvp:
 
Last edited:
Nice you continued working in it :)
At this point i think i need to create the page in wiki to write all i know in a clean way, and from there use it as a base to continue the research keeping notes of every small new advance
There are a couple of things you have not mentioned, hope it helps incase you did not noticed them

There is also a "CEBinary image\ms-cursor", is a bit special and by now i think is a "sony" image format (they invented it)
At bottom it has like 4 "frames" of some "pixel data"... it can be recognized because the pixel data have some kind of symmetry (seems to be an arrow or a hand maybe ?... yeah, because is a cursor), and i guess is animated
The file is a bit pointless because is just an image, but anyway... if at some point you implement a function to extract files this one is going to be needed to be extracted as a raw .bin (and from there continue the research to try to see how is made)

The CEDialog datas represents a hierarchy of "construction blocks", it makes me remember a lot of how the info is stored inside RCO and CXML containers
CEDialog is the root of the hierarchy, and his childs uses to be things like CEScrollbar, CECheckbox, CEButton and things like that
Every one of them have an ID (and are always consecutive), and everyone of them tells how many children it have (and probably other info related to hierarchy, like number of brothers, who is the parent, and things like that)
A very tipycal CEDialog (repeated a lot) works ilke this:
Display a warning (inside a frame), display a scrollbar, display a button for "OK" and another button for "cancel"
There is a cool one (with 9 childs or more, dont remeber but is one of the biggests) that gives info about licenses, and it uses CECheckbox. This one is interesting to study, because the others are very small and similar (same number of childs and very few info, so is hard to see what are doing)

My suggestion is (by now) to extract this CEDialog data in raw, and dont try to process all that hierarchy of children and "construction blocks".. just forget about it by now, this way you can release a new version of the silkpad editor sooner

And later (with more time) we can continue looking at how CEDialog stuff works... this will take time because is not easy.... and at the end we are going to have another bunch of IDs that we dont know how are linked with other parts of the firmware
 
Why 64kb at max?

Yes, it can be multilinguar but you do not really need to have different 10 or 11 pages. Yo ucan have different ones, one for dumping, one for flashing, one for HAN etc. You can still keep a lot of code in an erorr entry and use tricks like CSS display:none, to mae a kind of menu, like the user is actually navigating , when it's just one page.
I didn't test any of this myself but esc0rtd3w gave it a try a few nights ago.
64kb was the maximum size of html code he managed to render as a bin error page.
If he inserted 1 more byte, the custom html stored in the bin file never got loaded & seemingly another error got triggered. Not sure why or how.
If you have questions, you should ask him about the tests he did.

And no btw, I wouldn't need 12 error pages to make a full toolset., 3 might do just fine to implement everything actually.

Note that I do not intend to start keeping 2 separate forks of the code, therefore any local exploit project will have to manage the 4.0 exploits large code size (150/200kb) one way or another, if we are to adopt it.

Local file access can be enabled in the browser if it gets opened through the web browser Utility & passed a config file with the right params.
Unfortunately, I don't think the web browser utility can be used without homebrew or ROP but that defeats the purpose.

When the browser is launched normally, local file access is disabled.
 
Last edited:
There is also a "CEBinary image\ms-cursor", is a bit special and by now i think is a "sony" image format (they invented it)
Where is this one located? Ican certainly try further extracting it. Right nwow, it should be ID_CEBinary.bin
Did you test the new editor and found this or you had noticed it earlier?

The file is a bit pointless because is just an image, but anyway... if at some point you implement a function to extract files this one is going to be needed to be extracted as a raw .bin (and from there continue the research to try to see how is made)
I already have that function but I need to know where this file is located so I can have a look at it.

The CEDialog datas represents a hierarchy of "construction blocks", it makes me remember a lot of how the info is stored inside RCO and CXML containers
CEDialog is the root of the hierarchy, and his childs uses to be things like CEScrollbar, CECheckbox, CEButton and things like that
Every one of them have an ID (and are always consecutive), and everyone of them tells how many children it have (and probably other info related to hierarchy, like number of brothers, who is the parent, and things like that)
A very tipycal CEDialog (repeated a lot) works ilke this:
Display a warning (inside a frame), display a scrollbar, display a button for "OK" and another button for "cancel"
There is a cool one (with 9 childs or more, dont remeber but is one of the biggests) that gives info about licenses, and it uses CECheckbox. This one is interesting to study, because the others are very small and similar (same number of childs and very few info, so is hard to see what are doing)
Call me crazy but I think this can be turned into an XML!

My suggestion is (by now) to extract this CEDialog data in raw, and dont try to process all that hierarchy of children and "construction blocks".. just forget about it by now, this way you can release a new version of the silkpad editor sooner
That is already done, the raw data of all non stirng entries is always extracted (and overwrittes any previous file btw) in the raw form. Only if the format iage, png, jpg is known the editor proceed further by extracting the the corresponding format.

And later (with more time) we can continue looking at how CEDialog stuff works... this will take time because is not easy.... and at the end we are going to have another bunch of IDs that we dont know how are linked with other parts of the firmware
The CEDialog could do wonders!

I didn't test any of this myself but esc0rtd3w gave it a try a few nights ago.
64kb was the maximum size of html code he managed to render as a bin error page.
If he inserted 1 more byte, the custom html stored in the bin file never got loaded & seemingly another error got triggered. Not sure why or how.
If you have questions, you should ask him about the tests he did.
Hmm, I think I know where the problem is. If my calculation is correct then we should have a max filesize entry of 196863 bytes. Would that be enough? @esc0rtd3w , please bare wiht me, Iwill get oyu over than 65kb limit.

Note that I do not intend to start keeping 2 separate forks of the code, therefore any local exploit project will have to manage the 4.0 exploits large code size (150/200kb) one way or another, if we are to adopt it.
By no means we are asking for further time from you devs. As a matter of fact I don't use HAN and probably never use it but I think it should be easily possible. We just have to minify whenever possible and move all in a local file. Ofcourse,finding out how ot use that file: paramters will propably solve everything.
 
I cant run your editor in my PC, not sure if is because in an old x86 or old windows xp
So im very limited in how i can help you, i cant give you feedback for your app sorry :/
All i been mentioned is by looking at the files in a hexeditor

The image\ms-cursor is the last entry, at bottom of CEFramework.bin (the silk_webkit version of it)... offset 0x973A lenght 0x16B

Yes, There is some stuff that can be extracted as XML, i was thinking in it since beginning :)
The idea is to do something similar to what rcomage does, it creates a main XML (that doesnt exists inside the RCO as a file, but as "embedded metadata") that represents the internal structure... this file is for rebuilding purposes
In it you can store the ID's of every entry and the order
Additionally, you can create another XML for the text strings (the translated sentences), also with his ID and to keep a record of the order
And now you are metioning it.... yeah i guess with CEDialog it can be made another XML... but as mentioned this one is a challengue in itself, by now i dont want to hype and i prefer to be a bit pesimistic to say i dont bet on us to reverse it completly (but we will see)
All other stuff needs to be extracted as files

If you implement all this XML support it gives also other feature... you can extract contents today... and rebuilding it other day
Is like extracting the contents + a "main" xml with the instructions of how to rebuild it exactly like the original

Edit: and another feature... extract contents, rebuild it, compare hashes original VS rebuild... if they matches your tool is working great
This is a nice test the users of your tool can do to check everything is working nice :)


And i agreee the CEDialog can be funny to controll :)
So we can display and build predefined "construction blocks", and there is HTML and java
Good enought to build some things i guess... we dont have full controll of what is going to be displayed on screen and what it does though... but maybe is going to be some way to repurpose something and do different things
One important detail is to remember what you did in your first experiment is to load an <url> instead of a text warning message !
So... by modifying IDs maybe we can load a CEDialog instead of a text string
Or... even more weird... load javascript instead of a PNG :P
Btw... i think the reason why the trick of using javascript did work is because this silkpadd containers actually are designed to allow javascript contents (so maybe we are missing a "CEBinary \java" or something like that, doesnt appears in official files, but maybe is supported)

Sony is paranoid with security, if he did not really wanted to support javascript inside silk containers they would have blacklisted it... but is working so i guess is made on purpose
 
Last edited:
Hmm, I think I know where the problem is. If my calculation is correct then we should have a max filesize entry of 196863 bytes. Would that be enough? @esc0rtd3w , please bare wiht me, Iwill get oyu over than 65kb limit.


By no means we are asking for further time from you devs. As a matter of fact I don't use HAN and probably never use it but I think it should be easily possible. We just have to minify whenever possible and move all in a local file. Ofcourse,finding out how ot use that file: paramters will propably solve everything.

At this stage 150kb is more or less the average size of the code, minified/obfuscated & optimized to max.
Otherwise it is closer to 200kb.

And yes, bin file entries at 192kb max would definitely be sufficient. ;)
 
I cant run your editor in my PC, not sure if is because in an old x86 or old windows xp
So im very limited in how i can help you, i cant give you feedback for your app sorry :/
All i been mentioned is by looking at the files in a hexeditor
You are right. It won't work in Windows XP, just test it on my other PC. In fact it seems to work only on x64. Need to fix asap.

The image\ms-cursor is the last entry, at bottom of CEFramework.bin (the silk_webkit version of it)... offset 0x973A lenght 0x16B
Found it, it's one of the CeBinary's in CEFramework.

And now you are metioning it.... yeah i guess with CEDialog it can be made another XML... but as mentioned this one is a challengue in itself, by now i dont want to hype and i prefer to be a bit pesimistic to say i dont bet on us to reverse it completly (but we will see)
All other stuff needs to be extracted as files
I think the important is that we have fun here. No need to stress out for reversing things. Wit time we will get it. Right now, I am aiming to add importing of files aswell, really want to see a new look atthe browser. Who's up for some modding?

If you implement all this XML support it gives also other feature... you can extracting contents today... and rebuilding it other day
Is like extracting the contents + a "main" xml with the instructions of how to rebuild it exactly like the original
I plan to allow exporting and importing aswell. But they have to stay in the filename scheme of ID_binarytype, because we have no filenames.

And i agreee the CEDialog can be funny to controll :)
I think so too!

One important detail is to remember what you did in your first experiment is to load an <url> instead of a text warning message !
Not following you, what did I initially do?

So... by modifying IDs maybe we can load a CEDialog instead of a text string
You think we should start swapping some IDs?

Btw... i think the reason why the trick of using javascript did work
Which Javascript trick?
 
Last edited:
You are right. It won't work in Windows XP, just test it on my other PC. In fact it seems to work only on x64. Need to fix asap.
Thx, it works now :)

I plan to allow exporting and importing aswell. But they have to stay in the filename scheme of ID_binarytype, because we have no filenames.
I like the naming scheme you are using, i was thinking in it
The worst option was to name them by position, like 1.png, 2.png, 3,png etc... but this is so cheap
Is better to use the IDs like 15001.png, 15002.png, 15003,png etc...
You have added bit more info with the CExxxx names, is ok i like to be picky but this is even more picky that what i thought :)
The user should not change that names... this also happens in rcomage, no problem, is something normal
If at some point you implement that XML ideas i was talking about, in the main XML, for every entry you can add the attribute "src" where appears the filename you used for extraction. If the user really wants to change the filenames (for some weird reason) they can modify filenames + the "src" names in the main xml and it will work
I dont see any reason to do this, but anyway, maybe there is some users that likes this feature to use custom filenames

Edit:
Well... after thinking in it a bit... i guess can be handy to use custom filenames incase you are building something hard, you are going to be working with the files in the folder many times, so renaming the files with custom names could simplify a bit the work

Not following you, what did I initially do?

Which Javascript trick?
What you explained in the first post/s of the thread, you are replacing a plain text string by html/js

A text string is intended to be displayed in a predefined frame on screen, with a specific font, size, style, etc...
But a html/js is not intended to be displayed on screen
Are 2 different things, but the web broser loads them without caring about what is it
 
Last edited:
I like the naming scheme you are using, i was thinking in it
The worst option was to name them by position, like 1.png, 2.png, 3,png etc... but this is so cheap
Is better to use the IDs like 15001.png, 15002.png, 15003,png etc...
Position is completely useless. Having ID is way better for a thousand reason. Having filenames would be the best of the best but yeah, no good on that. Plus an ID is essentially a filename after all.

You have added bit more info with the CExxxx names, is ok i like to be picky but this is even more picky that what i thought :)
The extra info is on purpose so we know what type they are,is it binary or is it Dialog, plus they will help with importing/ If you are referring to the extra info in the .jpg and .gif files then I can remove it, but I see no reason why.

Well... after thinking in it a bit... i guess can be handy to use custom filenames incase you are building something hard, you are going to be working with the files in the folder many times, so renaming the files with custom names could simplify a bit the work
I doubt we will build anything hard. I may add functionality for adding remving entries, but I see no point in this.

What you explained in the first post/s of the thread, you are replacing a plain text string by html/js

A text string is intended to be displayed in a predefined frame on screen, with a specific font, size, style, etc...
But a html/js is not intended to be displayed on screen
Are 2 different things, but the web broser loads them without caring about what is i
HTML/JS is a string. If you want to parse it differently that's another question. The error that I edited with HTML was not a text with a specific color, element etc. It was just a ... string! Most likely the brwoser uses something like document.write and simply puts the string there. Try to create .html file with just some random text and open it in your browser. You will see the just the text. Edit that HTML file do things like <span>, <style> etc. Things should ook different.
In this case whoever designed this part, didn't really care abut the user and made a very ugly message. The only HTML codes that they are using is <br>. So no doubt, that it would parse the HTML, it is written to the DOM element.
 
What i meant is the hack is working like this:

webbrowser reads the silk container "give me a text string with ID xxxx"
container returns "take this javascript instead, boom in yo face"
webbrowser gets the string and does "hmmm, this is javascript, not what i expected but i will run it anyway because it matches with the ID i was looking for"

Is an unexpected behaviour, not sure why it happens but maybe the same trick can be exploited to feed the webbrowser with things different than what was expected to get (as example... a CEDialog instead of a PNG image)
 
What i meant is the hack is working like this:

webbrowser reads the silk container "give me a text string with ID xxxx"
container returns "take this javascript instead, boom in yo face"
webbrowser gets the string and does "hmmm, this is javascript, not what i expected but i will run it anyway because it matches with the ID i was looking for"

Is an unexpected behaviour, not sure why it happens but maybe the same trick can be exploited to feed the webbrowser with things different than what was expected to get (as example... a CEDialog instead of a PNG image)
Yes, what could be potentially feed to the webbrwoser tough? I mean, something useful;
I wonder what that Send Query string is for.
 
wow, some really nice progress being made here :)

very interesting about loading the other IDs.

great job on updating that tool @NewFile and wonderful researching by you and @sandungas on the whole subject.

as @bguerville said, we did run into a 64k limit for each entry seemingly upon initial testing (i seen you posted about a size increase @NewFile). i did try loading some local files but did not yet try the exact file:///app_home/flash0/ as a base.

there still seems to be much potential here. i can test some things when i have some free time and play around with the updated tool. also i can probably post the other bin files from older fw, as i have them all extracted already for other testing.

EDIT #1:

4.82 silk data also contains 2 new files from 4.81, only present in silk, not silk_webkit

CEHtmlBrowserApp.bin
CEHtmlBrowserAppXaiWidget.bin

silk_data_481_cex.zip
silk_data_482_cex.zip

Silk Data Shared Folder: http://www.mediafire.com/folder/uu6g12228jbij/silk_data

EDIT #2:

Silk Data 4.10 - 4.82 FW: silk_data-multi-410-482-cex.zip

FW 4.01 does not contain a silk_webkit directory, as expected

EDIT #3:

CEHTMLBrowserApp.bin and CEHtmlBrowserAppXaiWidget.bin contain some CEMenu entries

NyfccVM.png


gTufwSp.png
 
Last edited:
The image\ms-cursor is the last entry, at bottom of CEFramework.bin (the silk_webkit version of it)... offset 0x973A lenght 0x16B
I just realized is a "microsoft" cursor, lol

Crop it this way: offset: 0x975F lenght: 0x146
And save it with file extension .cur
Then double click in it to open with a image viewer (i use irfanview)
Is 32x32 pixels 24bpp
KkCRUDH.jpg


Nice, one more identifyed, and we can extract it with the correct file extension CUR :)
 
Last edited:
The file:// protocol will not work with the standard browser. I told you guys already, the protocol is disabled by default.
To enable local file support, you must first

1. init the browser using the web browser utility through homebrew or ROP
2. create a browser config structure which includes the param for local file support
3. pass the config to the browser object
4. start the browser in browser/js compatible mode

All the info can be found in the Web Technology section of the SDK documentation.
 
A new one in CEHtmlBrowserAppXaiWidget.bin
CEBinary image\ms-icon
I have not extracted it, but i bet is an .ICO (ms-icon = microsoft ico extension)

Edit: yes is an .ICO (includes 2 images in 2 sizes) 16x16 and 32x32 pixels
MuKGVn0.jpg

0OxYivW.png


And i just realized there is a "CEMenu" ! that seems to do some cool things (open, save, close, cut, copy, paste, etc...), this one is going to be important :)
 
Last edited:
Back
Top