How do I get the actual boot image file from a block device without padding?
I would indeed use dd, with one or more of the several options available to specify the length (amount) of data to copy; otherwise, as you have noticed, dd will read the entire contents of the device, which is not what you want.
Re the apparent problem of the block device being the boot partition, the usual solution is to boot from some other medium (perhaps a LiveCD) so that the device you want to read is not the boot device/partition and can be read without difficulty.  Before that, though, try sudo dd ... and see if running as root solves the problem without requiring more drastic measures.