if you're in shell, you could use sh instead of su
from windows, using ADB, set the device in a custom recovery then from a cmd window:
if done while the device is in recovery mode (and not bootloader or sideload) you would drop into a terminal/command line with "~:" instead of "shell@android:" then proceed with:
cat /dev/block/mmcblk0 > /sdcard/mmcblk0.img
[then there's no need to use sh since you're already in as shell] and then open another separate cmd window from your pc to pull the file you made (20-30 mins ago****) and use:
adb pull /sdcard/mmcblk0.img
you can name "mmcblk0.img" to whatever you want it just needs an output file name and extension
****HOWEVER, please be aware and be patient when you run cat, because the cmd window in windows wont show anything while it's "creating" the 15gb .img file, it will just show a line break in the cmd window and seem to provide no response as it processes your command. And you'll know it's finished when you get a fresh line to enter a new command.
since its over 15gb, if your device doesnt have that much storage space to create the file on, you can change the output path after ">" to /storage/sdcard1/mmcblk0.img or what have you, but be sure to have a fast (class 10 or better) microsd because 15gb will take a while to write. Id estimate around half an hour on an external micro sd.
aside from that, why would you want to extract that? it would make more sense if you asked about mmcblk0p05 or mmcblk0p03 but ehh, if you're not planning to read through the binaries by hex then i guess to every man (or woman) his (her) own...