El único.
By: Date: mayo 5, 2008 Categories: Hackers, Tools y Retos,Programación

Se me ha encargado realizar un programa que haga la misma tarea todo el tiempo, pero que nunca sea el mismo binario, la intención seria entonces identificar quien descargo que programa, para que este programa solo pueda ser ejecutado por su legitimo dueño, esta peculiaridad tendrá además que ser validado por internet. Para evitar creackeos y el programa en si mismo deberá auto comprobarse con hash de md5 o sha1 para saber si no ha sido creakeado, si todo está bien el programa debería ser capaz de descargar del servidor el resto de código máquina para ser ejecutado localmente. Con algo de paciencia, ingeniería inversa, seguro alguien podrá crackearlo, pero ya no será tan fácil. Este método dejaría fuera de la jugada a muchos kidis

Ahora mismo tengo un pequeñísimo bosquejo lo llamo el único, por que en este momento el programa se descarga una sola vez y es la única vez que ese programa sera descargado, las siguiente vez sera otro y la próxima vez otro y otro, al final uno podría guardar todos los programas descargados y notar que efectivamente no es el mismo =)

No hace gran cosa, es solo el calentamiento de lo que será el sistema de anticraking

Este programa requiere .NET y es multiplataforma, debe correr en MS/Windows con el Framework de Microsoft, en GNU/Linux y MacOS con el Framework de novell Mono.

Descargar a EL UNICO El mismo EXE funciona para las 3 plataformas

Unico en GNU/LinuxLinux

Unico en Windows

Unico en MacOS

Ver fotos grande

Linux
Windows
MacBook

———————————————————–

Agregado a las 8:20 PM mismo dia.

Como el programa es de consola y no todos se sienten comodos usando el programa de consola, El unico version Windowsera va incluido tambien en el zip, el mismo exe sigue siendo multiplataforma, correra igual en GNU/Linux, MS/Windows y MacBook

Unico grafico
Ver mas grande
Unico Grafico

6 thoughts on “El único.

  1. Opera 9.27 Windows XP

    No creo que generando un string que funcione como clave en el binario sea suficiente protección, el proceso para romperlo seria muy similar al usado para un programa común. Pero supongo tu idea aun esta muy verde y en un futuro la desarrollaras, de todas formas es interesante :).

    Por cierto en salidas a pantalla, puedes hacer:
    System.Console.WriteLine(“Programa corriendo sobre: {0}”, System.Environment.OSVersion);
    Ami se me hace mas comodo

    PD: no es mono .net, es solo mono 😛

  2. Internet Explorer 7.0 Windows Vista

    o.o

    Ya mo lo habian hecho notar, y aunque ya esta arreglado en el programa binario, me dio mucha flojera volver a tomar las imagenes de pantalla

    Marioly

    Sip, pense en eso, pero preferi una concatenacion, lo bonito de los lenguajes orientados a objetos tantas formas de hacer diferentes las mismas cosas =)

    La idea la expuse en el articulo y que este es un pequeño bosquejo del primer paso, el programa simplemente es el unico =)

  3. Mozilla Firefox 2.0.0.14 Windows XP

    Se me hace interesante el planteamiento, he pasado varias veces x tu blog, y esto parece interesante, diria yo un buen reto para un programador, sin embargo, podrias hacer el bosquejo con algun diagrama de flujo sencillo, eso haria mas digerible la elaboracion del codigo fuente del programa, saludos.

  4. Mozilla 1.9pre Windows Server 2003

    Segun estaba viendo, lo que haces es generar una llave que es el identificador unico, lo que estoy observando es que hay de dos, que por medio los namespaces System.CodeDom y System.Codedom.Compiler se genere el codigo, o tengas el codigo en un txt, y se concatene esta clave generada aleatoriamente al vuelo, y lo compiles con la clase CodeDomProvider, y el ejecutable resultante se comprima en un zip que es el que se devuelve, logico comprimiendo el stream quizas con el sharpziplib o con System.IO.Compression creas un gzip stream y el output le pones el mimetype del zip.

    Como digo, esas son las conclusiones que saque, igual estoy mal.

    efectivamente como hacian la observacion lo que cambiaba es un valor hexadecimal y lo demas no cambiaba, por eso pense que fuera probable que estuviera funcionando asi.

    Otra que podrías hacer es crear un strongname y certificarla al vuelo, y cuando se conecte a internet, que el server le pida el strongname o el certificado.

    Esta interesante, lo que estas haciendo, ahi publica los avances para ver como va evolucionando la aplicación que se ve muy buena.
    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Comment spam protected by SpamBam