In case someone else needs this still, you can use the following bash script on a Mac or Linux computer to extract an emuMMC partition into files that can be restored to your sysMMC.
#!/bin/bash
# The device node for your sd card, yours may be different.
device=/dev/disk3
# emummc_sector from your .ini in decimal, not hex. 0x2 == 2 is the default SX location.
offset=2
#################################################################
# These values shouldn't change unless there's new hardware revision with a different size internal storage.
# All of these are in bytes.
sectorsize=512
nandsize=31276924928
maxsize=2147483648
bootsize=4194304
# The position is counted in sectors, not bytes.
position=0
# Dump our BOOT0 file
dd bs=${sectorsize} if=${device} of=BOOT0 skip=$(( ${offset} + ${position} )) count=$(( ${bootsize}/${sectorsize} ))
position=$(( ${position} + ${bootsize}/${sectorsize} ))
# Dump our BOOT1 file
dd bs=${sectorsize} if=${device} of=BOOT1 skip=$(( ${offset} + ${position} )) count=$(( ${bootsize}/${sectorsize} ))
position=$(( ${position} + ${bootsize}/${sectorsize} ))
# This loops over the rest and dumps the rawnand.bin.* files
while [ ${position} -lt $(( ${nandsize}/${sectorsize} )) ] ; do
if [ $(( ${position} + ${maxsize}/${sectorsize} )) -gt $(( ${nandsize}/${sectorsize} )) ] ; then
sectors=$(( ${nandsize}/${sectorsize} - ${position} ))
else
sectors=$(( ${maxsize}/${sectorsize} ))
fi
filename=$( printf "rawnand.bin.%02d" $(( (${position} - ${bootsize}/${sectorsize} * 2) / (${maxsize}/${sectorsize}) )) )
dd bs=${sectorsize} if=${device} of=${filename} skip=$(( ${offset} + ${position} )) count=${sectors}
position=$(( ${position} + ${sectors} ))
done