Ok I just had this problem and YES.. you can upload any hex file you want assuming you programmed it properly.. to this end you can use MICROC which is just a lot easier because it includes the #include files. Just make sure your targeting the correct chip. I have successfully programmed the atmega2313 and the Atmega32 using this system.
here are the lines from my batch file:
avrdude -p m328p -b 19200 -P COM3 -c avrisp -V -F -e -u -U lock:w:0x3F:m -U hfuse:w:0xD8:m -U lfuse:w:0xFF:m -U efuse:w:0x03:m
avrdude -p m328p -b 19200 -P COM3 -c avrisp -V -D -F -u -U flash:w:AT328_hex.hex:i
avrdude -p m328p -b 19200 -P COM3 -c avrisp -V -F -u -U lock:w:0x0F:m
In this case, Im uploading the bootloader that I got from wolf paulus:http://wolfpaulus.com/journal/embedded/arduino3
but you can program files in MICROC and then upload the hex file to your microchip. I havent tried the atmega64 but I have (not 1 but 2 now) and will be attacking that as well. The amtega64 is a monster.. but of course when using lcd screens you can run out of pins fast.
you will need this as well..http://arduino.cc/en/Tutorial/ArduinoISP
download avrisp.03.zip from this last link.
Notice the connections on this tutorial. Because when youre using an internal clock you dont need an external crystal .. those connections are "literal".
Anyway.. Make sure youre connections are good to go. I was having trouble at first. Here are the mistakes i made:
1. tried to program "avrdude" by itself without having uploaded arduino isp to the atmega328p which turns this (in this case) into an outright programmer. No wonder I wasnt getting anywhere. This is what happens when you put microchips down for a while (as a result of burnout) anyway.. im back in. This is seriously exciting stuff.
2. Once youve uploaded avrisp.03 (i havent tried running avrisp directly from the examples page) youre ready.
3. make sure youre connections are correct. (I actually tried programming an atmega328p while it was plugged in BACKWARDS!!! no wonder I was getting error messages. Its amazing I didnt fry it! Did the guys at atmel think.. "hmm lets make this chip in such a way that if you put it in backwards it wont fry?" i wonder.
4. Also, once youre plugged in correctly you dont have to use -F. The arduino avrisp programmer will get the correct signature for your device. If youre not getting the correct device signature somethings wrong.. count on it.
5. Also, if youre able to upload arduino sketches successfully you should be able to use avrdude with equal success.
I hope this helps.