Estrictamente hablando sí existen descompiladores para C, y creo que he visto alguno para Pascal e incluso Object Pascal.
Aquí hay algunos para C. Claro que otra cosa es que el código obtenido sea útil. Si al compilar se han utilizado opciones de optimización, ya puedes ir despidiéndote. E incluso si no ha usado estas opciones, la mayor parte de los nombres (variables, métodos, funciones, etc.) no tendrán ningún sentido humano, ya que los ejecutables no lo almacenan.
Únicamente si el programa ha sido compilado con información de depuración, y sólo si esta está completa, podrías conseguir algo, pero entonces estarías extrayendo la información de depuración, no el código fuente original (pueden diferir dependiendo del lenguaje y de las opciones de compilación).