Bueno, algo interesante y que no debería ser muy complicado y es bastante útil es un editor hexadecimal.
Básicamente muestras un archivo en notacion hexadecimal (Puede ser en un grid de 16 x 16 bytes) y sólo se puede editar un byte a la vez. Podrias recuperar una parte del archivo a la vez y colocarlo en el grid, luego de editar esa parte se podría guardar y pasar a otro segmento del archivo. Podrias avanzar a los siguientes 256 bytes o a los siguentes 16. Tambien seria buena idea guardar todo el archivo en ram para no tener que leerlo cada vez y sólo al presionar un boton de guardar pasar todas las modificaciones a disco.
El problema lo puedes dividir en varias partes:
+ Cargar el archivo en RAM, preferentemente dividiendolo en bloques de N Kb.
+ Como guardar todo el archivo que está dividido en bloques de N Kb en RAM.
+ Como llenar un grid de 16x16 leyendo un bloque de bytes de RAM, sabiendo a que bloque de N Kb tenemos que acceder.
+ Como editar un solo valor de ese grid y validarlo para que sea un valor entre 0 y 255.