Ofuscación

Publicado en Conceptos el 21 de March, 2008 por Lek.

Una de las máximas de los programadores es que el código debe ser fácilmente legible. Suele decirse que no hay mejor documentación de un programa que su código fuente. Hacer lo contrario, programar deliberadamente de forma que no sea legible es una práctica de programación conocida como ofuscación. Un arte como otro cualquiera, que tiene sus propios concursos y todo.

Para las empresas es una práctica útil para complicar a la competencia el entendimiento del código decompilado (aunque sea ilegal decompilarlo). Pero como es complicado hacer grandes programas de esta forma, existen multitud de herramientas que lo hacen por nosotros. Para Java he encontrado este listado en la página del ProGuard.

Sin embargo, en ocasiones uno se encuentra con un programa doblemente ofuscado… porque está ofuscado por pura ilegibilidad. Imaginad el siguiente trozo de código y comprenderéis…

FileOutputSream ff = new FileOutputStream (
  String.valueOf (
    String.valueOf (
      (
        new StringBuffer (
          String.valueOf (
            String.valueOf (
              new File (
                String.valueOf (
                  String.valueOf (
                    (
                      new StringBuffer (
                        String.valueOf (
                          String.valueOf (
                            System.getProperty (
                              "java.home"
                            )
                          )
                        )
                      )
                    ).append (
                      System.getProperty (
                        "file.separator"
                      )
                    ).append (
                      "empresa"
                    )
                  )
                )
              )
            )
          )
        )
      ).append (
        System.getProperty (
          "file.separator"
        )
      ).append (
        "adm.conf"
      )
    )
  )
);

Es un trozo de código de un programa real y tenéis la suerte de que os lo he ordenado un poco, porque estaba en 4 líneas tan solo…

4 comentarios

  1. Si es que hay cada gamberro por ahí.

    PD: ¡Ya era hora de que escribieras algo!

    #  Fran 21 de March, 2008

  2. Sufro sabotajes con los posts ;) Esta semana pondré otro (espero).

    #  Lek 22 de March, 2008

  3. No way! ¿En serio que eso estaba en un programa real? Para escupirle en la cara al que lo escribió (y despedirle).

    #  Blaxter 22 de March, 2008

  4. Doy fe de que es absolutamente cierto, real e increíble.

    #  Bellz 24 de March, 2008

Escribe un comentario