Using UrJTAG 0.10 under Windows, the readmem command produced an incorrect sized file. On further investigation, it appears that size difference (of what was expected to what was produced) matches the number of linefeeds (character 0x0a) that was in the flash file, and that a carriage return (0x0d) character was inserted before the 0x0a. I suspect that the readmem() command needs to open the output file in binary mode before calling the readmem() function. Sorry, I don't have a cygwin environment set up to confirm this.
Under Linux, UrJTAG produced the correct sized file.