REpsych es una prueba de concepto creada por Christopher Domas que permite traducir imágenes en programas funcionales cuyo grafo de flujo de control (CFG) reproduce visualmente la imagen original. La herramienta está pensada para funcionar de forma fiable con IDA Pro y, con resultados parciales, con otros visores de CFG como Hopper, BinNavi o radare2.
El proceso es directo: se guarda una imagen en formato bitmap de 24 bits por píxel en la carpeta gfx/ y se ejecuta "make imagen" en la raíz del proyecto. A continuación se generan dos ejecutables, repsych_v1 y repsych_v2, que aplican estrategias distintas para garantizar que el renderer del CFG coloque correctamente los nodos. Cada bloque básico del grafo corresponde a un píxel de la imagen fuente, por lo que se recomienda usar imágenes pequeñas (no mayores de 100x100) y, si es necesario, aumentar el límite de nodos del visor.
Para obtener mejores resultados con imágenes que contienen texto, la documentación recomienda convertirlas primero a un bitmap de 2 bits en blanco y negro y después a 24 bits, con el fin de eliminar colores intermedios.
El proyecto no persigue una aplicación práctica concreta, sino demostrar que es posible construir un programa cuyo CFG dibuje una imagen arbitraria. La técnica se detalla en una presentación de DEF CON disponible en vídeo y en diapositivas. REpsych se distribuye como software de investigación para quienes experimentan con ingeniería inversa y visualización de grafos de control.
