Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 2aa62c5bbb658df1fece777472a7bcf2 > files > 35

barry-devel-docs-0.17-0.3.20100730git.fc14.noarch.rpm

COD file structure
==================

To write the javeloader application, I need to understand the format of COD file.


C structures :
--------------

typedef struct {

} codfile_header_t;

typedef struct {
	int		flashid;
	uint	section_number;		//always 0
	uint	vtable_pointer;		//always 0
	time_t	timestamp;
	uint	user_version;
	uint	fieldref_pointer;
	ushort	maxtype_list_size;
	short	reserved;			//always 0xFF
	int		data_section;		//always 0xFFFF
	int		module_info;		//always 0xFFFF
	ushort	version;
	ushort	code_size;
	ushort	data_size;
	ushort	flags;
} code_header_t;

sizeof(code_header_t) = 0x2C;


typedef struct {
	ubyte 	flags;
	ubyte 	version;
	ushort 	num_icalls;
	ubyte 	num_modules;
	ubyte 	num_classes ;
	ushort 	exported_string_offset;
	ushort 	data_bytes_offset;
	ushort 	empty_field;
	ushort 	class_definitions;
	ushort 	array_of_unknow_fields[14];
	ushort 	aliases;
	ushort 	array_of_unknow_fields[22];
} data_header_t;

sizeof(data_header_t) = 0x34;


Scheme :
--------

+------------------------------------------+
| COD file header (1)                      |
+------------------------------------------+
|   Code segment header                    |
|     size = sizeof(code_header_t) = 0x2C  |
+------------------------------------------+
|   Code segment                           |
|     size = code_header_t.code_size       |
+------------------------------------------+
|   Data segment header                    |
|     size = sizeof(data_header_t) = 0x34  |
+------------------------------------------+
|   Data segment                           |
|     size = code_header_t.data_size       |
+------------------------------------------+
+------------------------------------------+
| COD file header (2)                      |
+------------------------------------------+
|   Code segment header                    |
.                                          .
.                                          .
.                                          .
+------------------------------------------+


Sample (from Opera.cod) :
-------------------------

00000000   50 4B 03 04  0A 00 00 00  00 00-AB 5C  6A 39-BE 5C  58 D1 CC 0D  PK.........\j9.\X...
                                                            COD size ^^^^^
00000014   01 00 CC 0D  01 00 19 00  04 00                                  ..........
           ^^^^^ ^^^^^^^^^^^^        ^^ empty byte (after the string)
                   COD size   ^^ size of string
00000014                                   6F 70  65 72 65 74  74 65 2D 68            operette-h
                                           [..............................
00000028   69 66 69 2D  34 2E 32 62  65 74 61 2E  63 6F 64 FE  CA 00 00     ifi-4.2beta.cod....
           ................string........................] [..........] empty
00000028                                                                DE                     .
0000003C   C0 FF FF 00  00 00 00 00  00 00 00 E0  0E 18 49 00  00 00 00 00  ..............I.....
00000050   00 00 00 22  00 FF FF FF  FF FF FF FF  FF FF FF 4E  00 08 DC 98  ..."...........N....

[...]

00010DD8   A2 03 0C 0E  08 02 04 FD  A2 03 4E 08  00 07 96 A3  03 1D 48 34  ..........N.......H4
00010DEC   12 08 01 03  B5 A3 03 08  04 04 E8 A3  03 25 08 05  03 A7 A4 03  .............%......
00010E00   00 00 00 00  00 00 00                                            .......
00010E00                         50  4B 03 04 0A  00 00 00 00  00 AB 5C 6A         PK.........\j
00010E14   39-D1 BD FC  C9-1C DD 00  00-1C DD 00  00-1B 00 00  00           9................
                                                     ^^ size of string
00010E14                                                          6F 70 65                   ope
00010E28   72 65 74 74  65 2D 68 69  66 69 2D 34  2E 32 62 65  74 61 2D 31  rette-hifi-4.2beta-1
00010E3C   2E 63 6F 64                                                      .cod
00010E3C                DE C0 FF FF  00 00 00 00  00 00 00 00  E0 0E 18 49      ...............I
00010E50   00 00 00 00  00 00 00 00  1F 00 FF FF  FF FF FF FF  FF FF FF FF  ....................
00010E64   4E 00 D8 A1  18 3B 01 00  50 29 DE 29  06 80 F8 01  15 0D FF 00  N....;..P).)........
00010E78   00 20 0C FF  FF 4D 0C 46  2F 15 0D FF  FF 79 0E FF  FF 82 0E FF  . ...M.F/....y......
00010E8C   FF 62 07 50  29 50 29 23  11 18 00 05  13 00 08 0E  6E 02 01 0A  .b.P)P)#........n...
00010EA0   00 28 CC 0C  01 FF FF 02  69 00 03 00  6D 00 03 00  A0 04 DF A1  .(......i...m.......
00010EB4   0A 6D 00 03  00 04 FF 01  00 01 55 28  1C 17 07 00  AE 11 CF 56  .m........U(.......V

[...]

0001EB54   00 00 00 00  00 00 00 00  50 4B 03 04  0A 00 00 00  00 00 AB 5C  ........PK.........\
0001EB68   6A 39-24 41  BE 50 5C B0  00 00 5C B0  00-00-1B-00- 00-00 6F 70  j9$A.P\...\.......op
0001EB7C   65 72 65 74  74 65 2D 68  69 66 69 2D  34 2E 32 62  65 74 61 2D  erette-hifi-4.2beta-
0001EB90   32 2E 63 6F  64 DE C0 FF  FF 00 00 00  00 00 00 00  00 E0 0E 18  2.cod...............


Sample (from Metro.cod) :
-------------------------

00000000   50 4B 03 04  0A 00 00 00  00 00-A0 00  51 35-BA 9F  99 5D-30 CE  PK..........Q5...]0.
00000014   00 00-30 CE  00-00-15-00--04-00-4D 65  74 72 6F 56  69 65 77 65  ..0.......MetroViewe
00000028   72 2E 50 61  72 69 73 2E  63 6F 64 FE  CA 00 00 DE  C0 FF FF 00  r.Paris.cod.........
0000003C   00 00 00 00  00 00 00 0F  10 34 45 00  00 00 00 00  00 00 00 21  .........4E........!


0000CE54   6F 90 02 03  0F 03 A8 0F  03 04 00 02  AA 10 00 00  00 00 00 50  o..................P
0000CE68   4B 03 04 0A  00 00 00 00  00 A0 00 51  35 7A C4 FE  22-34 B3-00  K..........Q5z.."4..
0000CE7C   00-34 B3-00--00-17-00-00--00-4D 65 74  72 6F 56 69  65 77 65 72  .4.......MetroViewer
0000CE90   2E 50 61 72  69 73 2D 31  2E 63 6F 64  DE C0 FF FF  00 00 00 00  .Paris-1.cod........
0000CEA4   00 00 00 00  0F 10 34 45  00 00 00 00  00 00 00 00  05 00 FF FF  ......4E............