Omnimaga

Calculator Community => Casio Calculators => Topic started by: Juju on September 20, 2012, 02:29:25 pm

Title: Extract Prizm OS 1.03+ from the updater
Post by: Juju on September 20, 2012, 02:29:25 pm
So to extract the OS from the installer provided on Casio's website, you'll need prizmosdecomp (http://prizmwiki.omnimaga.org/wiki/Tools#prizmosdecomp), but it only works with OS 1.02 and lower. Today, I found the way for OS 1.03 and later.

So you'll need the .exe on Casio's website (https://edu.casio.com/download_service/download/category.php), it's a simple InstallShield wizard. From here, the manipulations are similar to OS 1.02, run the executable until you have the connect your calc screen and you'll find files in C:\Documents and Settings\<your login>\Application Data\CASIO\fx-CG10 OS Update\{EF1BD945-AF60-43FD-A487-0D430D3D7911}. But this time, you'll find fx-CG Series OS Update.msi and 1036.MST. The .msi one is the file responsible for the connect your calc screen, so it must contain the OS.

You'll want to extract it with a MSI extractor instead of running it, in my case I used Universal Extractor (http://legroom.net/software/uniextract). Run it on the .msi you got and you should get those files. (In my case, I ran it in a Windows XP VM, then shared a folder with the Mac OS X host, hence the UNIX commands.)

Code: [Select]
miku:fx-CG Series OS Update julien$ ls -l
total 22832
-rw-r--r--  1 julien  staff   169272 20 sep 13:44 Binary.ISSELFREG.DLL
-rw-r--r--  1 julien  staff  1965158 20 sep 13:44 Binary.ISSetup.dll
-rw-r--r--  1 julien  staff    58680 20 sep 13:44 Binary.ISSetupFilesHelper
-rw-r--r--  1 julien  staff     1033 20 sep 13:44 Binary.NewBinary1
-rw-r--r--  1 julien  staff     4534 20 sep 13:44 Binary.NewBinary10
-rw-r--r--  1 julien  staff     4534 20 sep 13:44 Binary.NewBinary11
-rw-r--r--  1 julien  staff     3262 20 sep 13:44 Binary.NewBinary12
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary13
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary14
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary15
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary16
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary17
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary18
-rw-r--r--  1 julien  staff      318 20 sep 13:44 Binary.NewBinary2
-rw-r--r--  1 julien  staff    15368 20 sep 13:44 Binary.NewBinary21
-rw-r--r--  1 julien  staff     3340 20 sep 13:44 Binary.NewBinary22
-rw-r--r--  1 julien  staff      318 20 sep 13:44 Binary.NewBinary3
-rw-r--r--  1 julien  staff     3262 20 sep 13:44 Binary.NewBinary4
-rw-r--r--  1 julien  staff     4534 20 sep 13:44 Binary.NewBinary6
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary7
-rw-r--r--  1 julien  staff      766 20 sep 13:44 Binary.NewBinary8
-rw-r--r--  1 julien  staff    10134 20 sep 13:44 Binary.NewBinary9
-rw-r--r--  1 julien  staff   128320 20 sep 13:44 Binary.SetAllUsers.dll
-rw-r--r--  1 julien  staff   418098 20 sep 13:44 Data1.cab
-rw-r--r--  1 julien  staff  7887872 20 sep 13:44 ISSetupFile.SetupFile1
-rw-r--r--  1 julien  staff    65536 20 sep 13:44 ISSetupFile.SetupFile2
-rw-r--r--  1 julien  staff   757808 20 sep 13:44 ISSetupFile.SetupFile3
-rw-r--r--  1 julien  staff   110592 20 sep 13:44 Icon.ARPPRODUCTICON.exe

Okay, now we're wondering which one the OS is, or if it's even in a DLL, the filenames aren't helping. Let's find out.

Code: [Select]
miku:fx-CG Series OS Update julien$ file *
Binary.ISSELFREG.DLL:      PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Binary.ISSetup.dll:        PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Binary.ISSetupFilesHelper: PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Binary.NewBinary1:         JPEG image data, JFIF standard 1.02
Binary.NewBinary10:        MS Windows icon resource - 2 icons, 48x48, 256-colors
Binary.NewBinary11:        MS Windows icon resource - 2 icons, 48x48, 256-colors
Binary.NewBinary12:        MS Windows icon resource - 1 icon
Binary.NewBinary13:        MS Windows icon resource - 1 icon
Binary.NewBinary14:        MS Windows icon resource - 1 icon
Binary.NewBinary15:        MS Windows icon resource - 1 icon
Binary.NewBinary16:        MS Windows icon resource - 1 icon
Binary.NewBinary17:        MS Windows icon resource - 1 icon
Binary.NewBinary18:        MS Windows icon resource - 1 icon
Binary.NewBinary2:         MS Windows icon resource - 1 icon
Binary.NewBinary21:        JPEG image data, JFIF standard 1.01
Binary.NewBinary22:        JPEG image data, JFIF standard 1.01
Binary.NewBinary3:         MS Windows icon resource - 1 icon
Binary.NewBinary4:         MS Windows icon resource - 1 icon
Binary.NewBinary6:         MS Windows icon resource - 2 icons, 48x48, 256-colors
Binary.NewBinary7:         MS Windows icon resource - 1 icon
Binary.NewBinary8:         MS Windows icon resource - 1 icon
Binary.NewBinary9:         MS Windows icon resource - 6 icons, 16x16, 16-colors
Binary.SetAllUsers.dll:    PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Data1.cab:                 Microsoft Cabinet archive data, 418098 bytes, 2 files
ISSetupFile.SetupFile1:    PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
ISSetupFile.SetupFile2:    PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
ISSetupFile.SetupFile3:    Dyalog APL version 189 .175
Icon.ARPPRODUCTICON.exe:   PE32 executable for MS Windows (GUI) Intel 80386 32-bit

Most of them are DLLs and icon ressources oh wait what is ISSetupFile.SetupFile3 I'm pretty sure I saw this filetype somewhere else.

Code: [Select]
[julien@haruhi demo]$ file demo.g3a
demo.g3a: Dyalog APL version 189 .175

ISSetupFile.SetupFile3 is detected as having the same file format as a g3a add-in, so it must be our OS.

There we go, we have our OS binary, so have fun ^_^
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: critor on September 20, 2012, 02:36:00 pm
Great Juju :)
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: fxdev on September 21, 2012, 09:47:35 am
Quote
ISSetupFile.SetupFile3 is detected as having the same file format as a g3a add-in, so it must be our OS.

Well, you are wrong. This is the Geometry add-in version 1.01
It seems as if it is automatically updated when updating the OS; however, the OS is still encrypted inside the OSupdateDLL file... but no more: I asked Goplat (http://ourl.ca/8207/201163) to add support for newer DLL files, asked him to give me the source code, but he didn't respond. And that's why I called my friend the disassembler and we did it! ;D(http://www.omnimaga.org/Themes/default/images/gpbp_arrow_up.gif)

So here we go...


+++ Overview of encrypted Casio setups and compatible extraction tools +++

Explanation: The legacy setups contained the two resources UpdateExe.bin and UpdateCode.bin

- UpdateExe.bin is the on-calc OS updater taking over control during the update process
- UpdateCode.bin is the calculator OS image without user flash storage area

UpdateExe.bin is only a few kilobytes large, whereas UpdateCode.bin is about 12 megabytes for Prizm OSes and 2.5 megabytes for fx-9860G/GII OSes.

To use these tools, copy the "OSupdateDLL.dll" file obtained from your %temp% directory while the Casio setup was running, to the same directory as the executable file.



fx-CG 10 OS 1.02 Setup
- resource 3063 (0x0BF7), magic byte: 0x7F, UpdateExe.bin
- resource 3064 (0x0BF8), magic byte: 0x08, UpdateCode.bin

- file "extract_cg10_102.exe"

Code: [Select]
Changes to Goplat's tool:
None

fx-CG 10 OS 1.03 Setup
- resource 3081 (0x0C09), magic byte: 0x7F, UpdateExe.bin
- resource 3084 (0x0C0C), magic byte: 0x08, UpdateCode.bin

- file "extract_cg10_103.exe"

Code: [Select]
Changes to Goplat's tool:
0x0732 : 0xF70B -> 0x090C
0x07C7 : 0xF70B -> 0x090C
0x07DA : 0xF80B -> 0x0C0C
0x090D : 0xF90B -> 0x0D0C

fx-CG 20 OS 1.03 Setup
fx-CG 10/20 OS 1.04 Setup
- resource 3069 (0x0BFD), magic byte: 0x7F, UpdateExe.bin
- resource 3070 (0x0BFE), magic byte: 0x08, UpdateCode.bin

- file "extract_cg1020_10x.exe"

Code: [Select]
Changes to Goplat's tool:
0x0732 : 0xF70B -> 0xFD0B
0x07C7 : 0xF70B -> 0xFD0B
0x07DA : 0xF80B -> 0xFE0B
0x090D : 0xF90B -> 0xFF0B

fx-9860G OS 2.01 Setup
fx-9860G AU OS 2.01 Setup
GRAPH 85 OS 2.01 Setup
- resource 3037 (0x0BDD), magic byte: 0x39, UpdateExe.bin
- resource 3040 (0x0BE0), magic byte: 0x34, UpdateCode.bin
- resource 3041 (0x0BE1), magic byte: 0xD8, UpdateCode.bin

- file "extract0_9860g_201.exe"

Code: [Select]
Changes to Goplat's tool:
0x0732 : 0xF70B -> 0xDD0B
0x07C7 : 0xF70B -> 0xDD0B
0x07CC : 0x0A -> 0x22
0x090D : 0xF90B -> 0xDE0B
0x1078 : 0x7F -> 0x39

- file "extract_9860g_201.exe"

Code: [Select]
Changes to Goplat's tool:
0x0732 : 0xF70B -> 0xE00B
0x07C7 : 0xF70B -> 0xE00B
0x07DA : 0xF80B -> 0xE10B
0x090D : 0xF90B -> 0xE20B
0x1078 : 0x7F -> 0x34
0x107A : 0x08 -> 0xD8

fx-9860GII OS 2.01 Setup
fx-9860G AU PLUS OS 2.01 Setup
GRAPH 75/95 OS 2.01 Setup
- resource 3078 (0x0C06), magic byte: 0xAE, UpdateExe.bin
- resource 3071 (0x0BFF), magic byte: 0xD3, UpdateCode.bin
- resource 3073 (0x0C01), magic byte: 0xD3, UpdateCode.bin
- resource 3074 (0x0C02), magic byte: 0x33, UpdateCode.bin

- file "extract0_9860g2_201.exe"

Code: [Select]
Changes to Goplat's tool:
0x0732 : 0xF70B -> 0xFF0B
0x07C7 : 0xF70B -> 0x060C
0x07DA : 0xF80B -> 0xFF0B
0x090D : 0xF90B -> 0x070C
0x1078 : 0x7F -> 0xAE
0x107A : 0x08 -> 0xD3

- file "extract_9860g2_201.exe"

Code: [Select]
Changes to Goplat's tool:
0x0732 : 0xF70B -> 0x010C
0x07C7 : 0xF70B -> 0x010C
0x07DA : 0xF80B -> 0x020C
0x090D : 0xF90B -> 0x030C
0x1078 : 0x7F -> 0xD3
0x107A : 0x08 -> 0x33
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: Juju on September 21, 2012, 10:05:09 am
Yeah, as mentionned on Cemetech, we came to the conclusion that file might not be that one, so it must be in the bigger DLL file.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on September 22, 2012, 02:20:56 am
Nice work juju. That g3a file you talked to me about earlier kinda intrigued me at first. Hopefully that info is helpful for PRIZM dev. Nice work cfxm as well :)
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: critor on September 22, 2012, 07:08:49 am
I asked Goplat to add support for newer DLL files, asked him to give me the source code, but he didn't respond

Don't take it personnaly.

I don't get any reply either for Nspire-Ndless related stuff.

Goplat must be very busy.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on September 22, 2012, 03:03:31 pm
Could it be possible that Goplat moved on from calculator-related stuff to new life stuff? The vast majority of calculator programmers, even some of the best ones, won't frequent calc forums nor do anything calculator-related for more than two or three years.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: critor on August 01, 2013, 10:00:36 am
Why are there several (2-3) UpdateCode.bin files in the fx-9860G/fx-9860Gii 2.01 update files?
Which one is being used for the update?
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on August 01, 2013, 01:01:49 pm
Hmm that is strange, could this be due to how there is multiple FX-9860G models? For example, there is the FX-9860G SD (the one with SD card support), the FX-9860G AU (Australian version of the 9860G with half the user archive), the FX-9860G Slim and the regular models. The Slim model is no longer maintained since years ago so OS 2.x is not available for it, but the other models have 2.01 updates.

Quote from: Edu Casio download service
OS Update for fx-9860GII(SD) Ver.2.01
OS Update for GRAPH75(95) Ver.2.01
OS Update for fx-9860G AU PLUS Ver.2.01
OS Update for fx-9860G(SD) Ver.2.01
OS Update for GRAPH85(SD) Ver.2.01
OS Update for fx-9860G AU Ver.2.01
OS Update for fx-9860G Slim Ver.1.**

Btw I know the Graph 85 in France is the original FX-9860G, but which of the 75 and 95 are the FX-9860G SD and the FX-9860GII?
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: critor on August 01, 2013, 01:29:34 pm
In the fx-9860G 2.01 update, there are 2 UpdateCode.bin files:
The difference being that fx-9860G AU OSes limit the archive (storage) space to 800KB instead of 1.5MB.


But in the fx-9860G II 2.01 update, there are 3 UpdateCode.bin files:
But this time I don't understand what the differences are, as the fx-9860G AU+ no longer has the archive space limit.
Title: Re: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on August 01, 2013, 06:38:44 pm
Oh I didn't know about that. Could it be due to processor differences in the USB Power Graphic II models, an impending revival of the 9860 Slim or an upcoming new Fx-9860 model?
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: TeamFX on August 02, 2013, 11:11:06 am
Actually, there are five images in the GII OS 2.01 setup included, but they are effectively the same. The only difference is at address 0x24FEE0 (being a copy of the boot code data at 0x300) and the checksum at 0x24FFF8. This is probably used to check whether the OS image runs on the correct hardware.

Those five images should correspond to:
fx-9860GII
fx-9860GII SD
fx-9860G AU PLUS
GRAPH 75
GRAPH 95
Title: Re: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on August 02, 2013, 11:54:01 am
Btw are OS updates still provided for people with the original version of the 9860G AU or are they stuck with OS 1.xx like Slim models?
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: critor on August 02, 2013, 01:05:48 pm
Thank you very much TeamFX. :)

Btw are OS updates still provided for people with the original version of the 9860G AU or are they stuck with OS 1.xx like Slim models?

On edu.casio.com, fx-9860G AU users can download a 2.01 update exe.
The exe file is exactly the same as the one given to Graph 85 and fx-9860G owners.
(but remember the exe file does include several OSes)

I don't understand why the fx-9860G Slim stopped being updated.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: TeamFX on August 02, 2013, 03:05:07 pm
Quote
I don't understand why the fx-9860G Slim stopped being updated.

According to Casio, the fx-9860G Slim is very popular in Asia (like the Casio dictionaries) and some OS 2.00 features are banned there.

Slim OS 2.00 is available here: https://edu.casio.com/data/fx0909/9860slim_osup_200.zip
Casio said they did not make a Slim OS 2.01 setup.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on August 03, 2013, 02:33:48 am
Ah I see now. That could probably explain it, although they could possibly have done like the Nspire series and release a different Casio FX-9860 Slim model for Europe and America.

Also is that Slim OS 2.00 you just listed public or did you find it as secret or something? I thought it stopped at 1.xx
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: critor on September 06, 2013, 05:45:30 pm
On OS versions 1.xx, was there already a checksum like the OS 2.0x 0x24FFF8 checksum?
At which offset?
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: TeamFX on September 07, 2013, 09:50:46 am
On OS versions 1.xx, was there already a checksum like the OS 2.0x 0x24FFF8 checksum?
At which offset?

From OS 1.00 to OS 1.02
- OS checksum at 0x26FFF8
- Calculated as sum of 0x10000..0x26FFF7

From OS 1.03 to OS 1.11
- OS checksum at 0x26FFF8
- Calculated as sum of 0x10000..0x22FFFF + 0x260000..0x26FFF7

From OS 2.00 to OS 2.04
- OS checksum at 0x24FFF8
- Calculated as sum of 0x10000..0x24FFF7
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: jcmolero71 on August 03, 2014, 04:17:59 pm
I could modify the extract_9860g2_201.exe for get all the 11 flash files from the fx-9860GII osupdatedll.dll plus the binary installer, here is the list:
Note: I discarded extract0_9860g2.2o1.exe since it erases 3072 thru 3075 files.
extract_9860g2_201.exe (the orginal modified by cfxm) makes prizm3073 and prizm3074 (typeinfo1 ´95A and 495B)
extract2_9860g2_201.exe makes prizm3080 and prizm3081 (typeinfo1 ´97A and 497B)
extract3_9860g2_201.exe makes prizm3082 and prizm3083 (typeinfo1 ´98A and ´99A)
extract4_9860g2_201.exe makes prizm3084 and prizm3085 (typeinfo1 499B and 499E)
extract5_9860g2_201.exe makes prizm3071 and prizm3072 (typeinfo1 ´93A and 493B)
extract6_9860g2_201.exe makes prizm3075 and prizm3078 (typeinfo1 495E)

3071 to 3075 are for SH3, 3080 to 3085 are for SH4, 3078 the binary installer.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: TeamFX on August 03, 2014, 06:10:18 pm
Oh well, my old nick was cfxm... :-)
And I don't want to bother you, but I have just attached the latest archive.

I didn't want to release this because I feared that Casio might start protecting the fx-CP400 setup. Now that I have extracted the OS 2.00 some days ago and Simon confirmed that Upload'n'Run is just working normally, there is no reason for me to keep this private any longer.

[File deleted]
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: jcmolero71 on August 03, 2014, 07:36:25 pm
No problem, I did that earlier since I needed urgent one of the sh4 files for patch it and make it readable by fxremote
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on August 03, 2014, 07:39:45 pm
Oh well, my old nick was cfxm... :-)
And I don't want to bother you, but I have just attached the latest archive.

I didn't want to release this because I feared that Casio might start protecting the fx-CP400 setup. Now that I have extracted the OS 2.00 some days ago and Simon confirmed that Upload'n'Run is just working normally, there is no reason for me to keep this private any longer.
Wait, I thought you were another person, because you used a different account before ???

Also It seems that Casio protected the fx-CP400 setup anyway >.<
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: Adriweb on August 03, 2014, 08:21:24 pm
I still can get the OSUpdate.dll, so there's no problem after that (I haven't tried, though, but once we have the .dll ...)
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: TeamFX on August 04, 2014, 02:34:56 am
Quote
Wait, I thought you were another person, because you used a different account before

I was getting too many PMs and emails on how to hack/upgrade with fxRemote, so I decided it would be best to just kill my old account and register with a new one. And this turned out to be highly effective...
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: jcmolero71 on August 06, 2014, 05:32:58 pm
Btw anyone got a fx-9860G Slim that could be messed around (as a guinea pig)? I want to test a .fls that I've patched.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on August 07, 2014, 01:09:23 pm
Quote
Wait, I thought you were another person, because you used a different account before

I was getting too many PMs and emails on how to hack/upgrade with fxRemote, so I decided it would be best to just kill my old account and register with a new one. And this turned out to be highly effective...
This reminds me when I kept getting PMs non-stop about Omni administrative issues and had to change my nickname. In my case, though, the change to DJ_O didn't work, as it actually became worse afterward. The change to "DJ Omnimaga (Not Admin)" did work, though, and even after removing the Not Admin part it continued working except with a certain group of no longer active members (who I had to block PMs from).


That and when TI community members kept e-mailing me at my Hotmail address even though it was clear since half a decade by then that the gmail address was the one I primarily used.
Btw anyone got a fx-9860G Slim that could be messed around (as a guinea pig)? I want to test a .fls that I've patched.
Isn't fls an FL Studio file? O.O Sadly I don't have a spare 9860G, though.
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: jcmolero71 on August 07, 2014, 08:11:15 pm
I'm not sure if it's FL studio file, but i'ts one of the extensions used by fxremote, along bin
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: DJ Omnimaga on August 08, 2014, 10:11:03 am
Actually now that I think about it, it's Microsoft Reader that uses that extension. FL Studio would be .flp
Title: Re: Extract Prizm OS 1.03+ from the updater
Post by: TeamFX on August 08, 2014, 12:56:43 pm
.fls stands for flash (ROM image).