I wondered if anyone came across this and if it is a known issue or a Nokia 6600 issue only.

When copying a ROM based exe or dll from the device, for example with FExplorer, the resulting file is truncated.

The built-in file reading functions apparently use the size from the TRomImageHeader structure at the start of a ROM based file (iCodeSize to be precise). This is also returned as the file size with file.Size(iSize) for example.

When reading such a file with Read() or when copying it with fileMan.Copy(), the copied file starts with the TRomImageHeader block that prepends the actual file. But this additional size is not accounted for! The result is that the copied file misses 0x64 bytes at the end, which matches the size of TRomImageHeader. The missing part are some function pointers from the exports table.

If anyone has an idea how to read those missing bytes from the original file I'm interested.