@@ -9,6 +9,7 @@ A command-line tool for extracting and decrypting components of An Original Xbox
9
9
- [ Encryption / Decryption] ( #encryption-decryption )
10
10
- [ What MCPX ROM do i use?] ( #what-mcpx-rom-do-i-use )
11
11
- [ Examples] ( #example-commands )
12
+ - [ Building] ( #building )
12
13
- [ Credits / Resources] ( #credits-resources )
13
14
14
15
## Commands
@@ -20,18 +21,16 @@ A command-line tool for extracting and decrypting components of An Original Xbox
20
21
| [ ` /bld ` ] ( #build-bios-command ) | Build a BIOS |
21
22
| [ ` /split ` ] ( #split-bios-command ) | Split a BIOS into banks |
22
23
| [ ` /combine ` ] ( #combine-bios-command ) | Combine multiple banks into a single BIOS |
23
- | ` /replicate ` | replicate a BIOS |
24
+ | [ ` /replicate ` ] ( #replicate-bios-command ) | replicate a single BIOS |
24
25
| [ ` /xcode-sim ` ] ( #xcode-visor-sim-command ) | Simulate xcodes and Decode x86 |
25
26
| [ ` /xcode-decode ` ] ( #xcode-decode-command ) | Decode Xcodes from a BIOS or init table |
26
27
| [ ` /x86-encode ` ] ( #x86-encode-command ) | Encode x86 as xcodes |
27
28
| [ ` /compress ` ] ( #compress-file-command ) | Compress a file using lzx |
28
29
| [ ` /decompress ` ] ( #decompress-file-command ) | Decompress a file using lzx |
29
30
30
-
31
31
## Switches
32
32
| Switch | Description |
33
33
| ----------------- | ----------------------------------------------------------------- |
34
- | [ ` /? ` ] ( #help-command ) | Get help about a specific command |
35
34
| ` /enc-bldr ` | Assume the 2BL is unencrypted (Decryption will be skipped) |
36
35
| ` /enc-krnl ` | Assume the kernel is unencrypted (Decryption will be skipped) |
37
36
| ` /key-bldr <path> ` | 16-byte 2BL RC4 file |
@@ -70,20 +69,22 @@ If the kernel has been decrypted, you will see a message like `decrypting kernel
70
69
71
70
## What MCPX ROM do i use?
72
71
It depends on the BIOS version. The different revisions of the MCPX have
73
- different keys and different hashing algorithms
72
+ different keys and different hashing algorithms.
74
73
75
- | Rev. 0 | MD5 Hash |
76
- | ---------------- | ----------------------------------- |
77
- | MCPX v1.0 | ` d49c52a4102f6df7bcf8d0617ac475ed ` |
78
- | M.O.U.S.E rev. 0 | ` 58f414016093f289c46d21639435701e ` |
74
+ | ` Rev. 0 ` | MD5 Hash |
75
+ | ---------------- | ----------------------------------- |
76
+ | MCPX v1.0 | ` d49c52a4102f6df7bcf8d0617ac475ed ` |
77
+ | M.O.U.S.E rev. 0 v0.9.0 | ` da9e9f527c5cb716f7a2143e976f6091 ` |
79
78
80
- | Rev. 1 | MD5 Hash |
81
- | ---------------- | ---------------------------- |
82
- | MCPX v1.1 | ` 2870d58a459c745d7cc4c6122ceb3dcb ` |
83
- | M.O.U.S.E rev. 1 | ` 06b227adbefc4dd55fb127c33590b735 ` |
79
+ | ` Rev. 1 ` | MD5 Hash |
80
+ | ---------------- | ---------------------------- |
81
+ | MCPX v1.1 | ` 2870d58a459c745d7cc4c6122ceb3dcb ` |
82
+ | M.O.U.S.E rev. 1 v0.9.0 | ` 06b227adbefc4dd55fb127c33590b735 ` |
84
83
84
+ - Use MCPX ` Rev. 0 ` for BIOSes ` < 4817 `
85
+ - Use MCPX ` Rev. 1 ` for BIOSes ` 4817+ `
85
86
86
- Typically, if the BIOS contains a Preldr (FBL), Use a ` Rev. 1 MCPX` .
87
+ Typically, if the BIOS contains a Preldr (FBL), Use a ` Rev. 1 MCPX ` .
87
88
This is only true if the FBL TEA Attack hasn't been applied. in that instance
88
89
it's likely that the BIOS is not encrypted at all, and the startup format maybe different.
89
90
@@ -117,13 +118,13 @@ The list command has some flags to display specific infomation.
117
118
| Switch | Desc |
118
119
| ------------- | ------------------------------------------------ |
119
120
| ` /in <path> ` | BIOS file (req) |
120
- | ` /img ` | Display kernel image header info |
121
- | ` /nv2a ` | Display init table magic values |
122
121
| ` /datatbl ` | Display ROM drive / slew calibration table data |
122
+ | ` /nv2a ` | Display init table magic values |
123
+ | ` /img ` | Display kernel image header info |
123
124
| ` /keys ` | Display rc4, rsa keys |
124
125
125
126
```
126
- xbios.exe /ls <bios_file> /mcpx <mcpx_file> <extra_flags>
127
+ xbios.exe /ls <bios_file> <extra_flags>
127
128
```
128
129
129
130
## Extract BIOS command
@@ -138,9 +139,9 @@ Extract components from a BIOS file
138
139
| Switch | Desc |
139
140
| ------------------- | --------------------- |
140
141
| ` /in <path> ` | BIOS file (req) |
141
- | ` /dir <path> ` | Set output directory |
142
142
| ` /keys ` | Extract keys |
143
143
| ` /nobootparams ` | Dont restore 2BL boot params (FBL BIOSes) |
144
+ | ` /dir <path> ` | Set output directory |
144
145
145
146
| Output file | Desc |
146
147
| ------------------- | --------------------- |
@@ -153,7 +154,7 @@ Extract components from a BIOS file
153
154
| ` /certkey <path> ` | Output cert key file |
154
155
155
156
```
156
- xbios.exe /extr <bios_file> /mcpx <mcpx_file> <extra_flags>
157
+ xbios.exe /extr <bios_file> <extra_flags>
157
158
```
158
159
159
160
## Build BIOS command
@@ -220,6 +221,14 @@ The `-bank[1-4]` switches are inferred with this command.
220
221
xbios.exe /combine <bank1_file> <bank2_file> <bank3_file> <bank4_file>
221
222
```
222
223
224
+ ## Replicate BIOS command
225
+ Replicate a single BIOS file.
226
+
227
+ | Switch | Desc |
228
+ | ------------- | ---------------------------------- |
229
+ | ` /in <path> ` | BIOS file (req) |
230
+ | ` /out <path> ` | BIOS file; defaults to bios.bin |
231
+ | ` /binsize ` | BIOS size (req) (256, 512, 1024) |
223
232
224
233
## X86 encode command
225
234
Encode x86 * machine code* as xcode * byte code* that writes to RAM.
@@ -236,20 +245,16 @@ Encode x86 *machine code* as xcode *byte code* that writes to RAM.
236
245
xbios.exe /x86-encode <code_file> /out <output_xcodes>
237
246
```
238
247
239
- <details ><summary >Example</summary >
248
+ <details ><summary >x2.25 Example</summary >
240
249
241
250
```
242
- X86: ---> Xcodes:
243
- mov eax, 0xfff00bed xc_mem_write 0x00, 0xf00bedb8
244
- jmp eax xc_mem_write 0x04, 0x90e0ffff
245
- nop
246
-
247
- Machine code: ---> Byte code:
248
- 0000: B8 ED 0B F0 0000: 03 00 00 00
249
- 0004: FF FF E0 90 0004: 00 F0 0B ED
250
- 0008: B8 03 00 00
251
- 000C: 00 04 90 E0
252
- 0010: FF FF
251
+ Machine code: ---> Byte code:
252
+ 0000: B8 ED 0B F0 mov eax, 0xfff00bed 0000: 03 00 00 00 xc_mem_write 0x00, 0xf00bedb8
253
+ 0004: FF FF E0 jmp eax 0004: 00 F0 0B ED
254
+ 0007: 90 nop 0008: B8
255
+ 0009: 03 00 00 00 xc_mem_write 0x04, 0x90e0ffff
256
+ 000D: 04 90 E0 FF
257
+ 0011: FF
253
258
```
254
259
255
260
</details >
@@ -370,21 +375,10 @@ xbios.exe /decompress <in_file> /out <out_file>
370
375
371
376
## Example Commands
372
377
373
- Extract BIOS
374
- ```
375
- xbios.exe /extr /mcpx <mcpx_file> <bios_file>
376
- ```
377
-
378
378
Extract BIOS + Keys
379
379
```
380
380
xbios.exe /extr /keys /mcpx <mcpx_file> <bios_file>
381
381
```
382
- Extracts:
383
- - 2BL
384
- - FBL (if applicable)
385
- - Init table (magic numbers, xcodes)
386
- - Compressed Kernel (.bin)
387
- - Decompressed Kernel (.img)
388
382
389
383
List BIOS infomation
390
384
```
@@ -396,10 +390,26 @@ List BIOS Keys
396
390
xbios.exe /ls /keys /mcpx <mcpx_file> <bios_file>
397
391
```
398
392
399
- ## Credits / Resources
393
+ Replicate BIOS (256 kb) to 512 kb
394
+ ```
395
+ xbios.exe /replicate <bios_file> /binsize 512
396
+ ```
400
397
401
- - https://github.com/XboxDev/xbedump - XboxDev sha1.c implementation
402
- - https://github.com/WulfyStylez/XBOverclock - WulfyStylez GPU clock calculations
403
- - https://xboxdevwiki.net/Boot_Process - Boot process
398
+ ## Building
404
399
400
+ The project is built in Visual Studio 2022
401
+
402
+ 1 . Clone the repo
403
+
404
+ ```
405
+ git clone https://github.com/tommojphillips/XboxBiosTool.git
406
+ ```
407
+
408
+ 2 . Open vc\XboxBiosTools.sln in visual studio and build and run
409
+
410
+ ## Credits / Resources
405
411
412
+ - [ Xbox Dev Wiki] ( https://xboxdevwiki.net/Main_Page )
413
+ - [ Deconstructing the Xbox Boot Rom] ( https://web.archive.org/web/20201108132438/https://mborgerson.com/deconstructing-the-xbox-boot-rom/ ) by [ mborgerson] ( https://github.com/mborgerson )
414
+ - [ xbedump] ( https://github.com/XboxDev/xbedump ) by [ XboxDev] ( https://github.com/XboxDev ) - sha1.c implementation
415
+ - [ XBOverclock] ( https://github.com/WulfyStylez/XBOverclock ) by [ WulfyStylez] ( https://github.com/WulfyStylez ) - GPU clock calculations
0 commit comments