Author Topic: Extract Prizm OS 1.03+ from the updater  (Read 11569 times)

0 Members and 1 Guest are viewing this topic.

Offline Juju

  • Incredibly sexy mare
  • Coder Of Tomorrow
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 5730
  • Rating: +500/-19
  • Weird programmer
    • View Profile
    • juju2143's shed
Extract Prizm OS 1.03+ from the updater
« 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, 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, 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. 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]
[[email protected] 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 ^_^
« Last Edit: September 20, 2012, 02:48:02 pm by Juju »

Remember the day the walrus started to fly...

I finally cleared my sig after 4 years you're happy now?
THEGAME
This signature is ridiculously large you've been warned.

The cute mare that used to be in my avatar is Yuki Kagayaki, you can follow her on Facebook and Tumblr.

Offline critor

  • Editor
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2079
  • Rating: +439/-13
    • View Profile
    • TI-Planet
Re: Extract Prizm OS 1.03+ from the updater
« Reply #1 on: September 20, 2012, 02:36:00 pm »
Great Juju :)
TI-Planet co-admin.

Offline fxdev

  • LV4 Regular (Next: 200)
  • ****
  • Posts: 177
  • Rating: +34/-6
    • View Profile
Re: Extract Prizm OS 1.03+ from the updater
« Reply #2 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 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

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
« Last Edit: September 24, 2012, 03:39:43 pm by cfxm »

Offline Juju

  • Incredibly sexy mare
  • Coder Of Tomorrow
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 5730
  • Rating: +500/-19
  • Weird programmer
    • View Profile
    • juju2143's shed
Re: Extract Prizm OS 1.03+ from the updater
« Reply #3 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.

Remember the day the walrus started to fly...

I finally cleared my sig after 4 years you're happy now?
THEGAME
This signature is ridiculously large you've been warned.

The cute mare that used to be in my avatar is Yuki Kagayaki, you can follow her on Facebook and Tumblr.

Offline DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55872
  • Rating: +3151/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: Extract Prizm OS 1.03+ from the updater
« Reply #4 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 :)

Offline critor

  • Editor
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2079
  • Rating: +439/-13
    • View Profile
    • TI-Planet
Re: Extract Prizm OS 1.03+ from the updater
« Reply #5 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.
« Last Edit: September 22, 2012, 07:09:35 am by critor »
TI-Planet co-admin.

Offline DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55872
  • Rating: +3151/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: Extract Prizm OS 1.03+ from the updater
« Reply #6 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.

Offline critor

  • Editor
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2079
  • Rating: +439/-13
    • View Profile
    • TI-Planet
Re: Extract Prizm OS 1.03+ from the updater
« Reply #7 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?
TI-Planet co-admin.

Offline DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55872
  • Rating: +3151/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: Extract Prizm OS 1.03+ from the updater
« Reply #8 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?
« Last Edit: August 01, 2013, 01:07:14 pm by DJ Omnimaga »

Offline critor

  • Editor
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2079
  • Rating: +439/-13
    • View Profile
    • TI-Planet
Re: Extract Prizm OS 1.03+ from the updater
« Reply #9 on: August 01, 2013, 01:29:34 pm »
In the fx-9860G 2.01 update, there are 2 UpdateCode.bin files:
  • resource 3040 (OS datestamp is 2010.1227.0915) for fx-9860G, fx-9860G SD, Graph 85, Graph 85 SD
  • resource 3041 (OS datestamp is 2010.1015.1156) for fx-9860G AU
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:
  • resource 3071 (OS datestamp is 2010.1115.1723)
  • resource 3073 (OS datestamp is 2010.1227.0935)
  • resource 3074 (OS datestamp is 2010.1227.0954)
But this time I don't understand what the differences are, as the fx-9860G AU+ no longer has the archive space limit.
« Last Edit: August 01, 2013, 01:34:51 pm by critor »
TI-Planet co-admin.

Offline DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55872
  • Rating: +3151/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: Re: Extract Prizm OS 1.03+ from the updater
« Reply #10 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?

Offline TeamFX

  • LV3 Member (Next: 100)
  • ***
  • Posts: 49
  • Rating: +9/-0
    • View Profile
Re: Extract Prizm OS 1.03+ from the updater
« Reply #11 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

Offline DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55872
  • Rating: +3151/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: Re: Extract Prizm OS 1.03+ from the updater
« Reply #12 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?

Offline critor

  • Editor
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2079
  • Rating: +439/-13
    • View Profile
    • TI-Planet
Re: Extract Prizm OS 1.03+ from the updater
« Reply #13 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.
« Last Edit: August 02, 2013, 01:12:48 pm by critor »
TI-Planet co-admin.

Offline TeamFX

  • LV3 Member (Next: 100)
  • ***
  • Posts: 49
  • Rating: +9/-0
    • View Profile
Re: Extract Prizm OS 1.03+ from the updater
« Reply #14 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.