#!/bin/bash
adb shell "su
dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888"
O problema é que desta forma o pipe é executado no shell adb não privilegiado, e não no shell raiz gerado por su ; isso faz com que o pipe seja executado sem privilégios de root e com o arquivo de tamanho 0 (provavelmente porque o comando if não consegue ler um dispositivo de bloco sem privilégios de root).
Execute o comando diretamente no shell raiz gerada por su usando a opção su , que permite executar um comando diretamente no shell gerado:
#!/bin/bash
adb shell "su -c 'dd if=/dev/block/mmcblk0 | /dev/examiner/nc -l -p 8888'"