Você está na página 1de 8

Saludos familia.

Hace unos dias, djKamal pidi ayuda para modificar ejecutables en .NET. El objetivo basico por el que queramos modificar un
ejecutable, es cambiarle el aspecto visual del programa una vez iniciado quizas cambiar su funcionamiento modo de trabajo.
Imaginemos una accion evento que deseemos cambiar cuando se inicie el formulario, cuando pulsemos un boton incluso cambiar
cadenas de texto que se utilizen en el programa. En varios tutoriales sobre los .NET ya se describe cmo se pueden modificar
utizando la utilidad "Ildasm" para desensamblar el ejecutable y su posterior re-ensamblado utilizando la orden "Ilasm" bajo linea de
comandos tipo msdos. Yo les presento otra forma algo mas cmoda para tales fines. Se trata del plugin "Reflexil" para Reflector. Con
Reflector, podemos desensamblar un ejecutable NET para su estudio y seguido, utilizando el plugin "Reflexil", modificar a nuestro
antojo el ejecutable y salvar el resultado de forma sencilla. Este tutorial es un acercamiento presentacion del modo en el que
tenemos que trabajar con ste plugin pero no representa una solucion al 100%. Tengamos en cuenta que todos los ejecutables en .NET
no funcionan de igual forma pues pueden estar protegidos con ofuscadores por ejemplo comprimidos y para tratar dichos
ejecutables necesitemos otros metodos. De todas formas, podemos en general, utilizar el plugin para cualquier NET y si la proteccion
del ejecutable .NET lo requiere, seguiremos utilizando mas metodos hasta que nuestro ejecutable ya modificado quede totalmente
funcional. Para ste tutorial, program una aplicacin que podra simular algun programa con ciertas funcionalidades pero con
algunos detalles que desearamos cambiar:

Fijense en esto: es una aplicacin que simula a cualquier otra en NET pero: 1. Nos interesara cambiar el estado del boton que en este
momento est deshabilitado, y que por supuesto queremos habilitarlo. 2. Una etiqueta a la que le cambiaremos el texto por algo mas
cercano a nosotros los Latinos y 3. Un timer que acta sobre el programa y que lo cierra cuando pasan 15 segundos.sto puede
recordarnos el comportamiento de un programa estando en modo "No registrado" ;-D

Adjunto con el tutorial, mando un archivo .rar que contiene todas las dll's del plugin. Se descomprimen y yo por ejemplo las coloco
en la misma carpeta donde instal Reflector

Ahora seguidamente, abrimos Reflector y seleccionamos del men, la pestaa "View" y clickamos en "Add-Ins..."

Se nos abre otra ventana desde donde aadiremos el plugin

Al pulsar en "Add" buscamos dnde se colocaron y le aadimos la dll "Reflexil.dll".

Una vez que aadimos la dll, la ventana de plugins "Add-ins" debe quedarnos as

Bien, ahora cargamos en Reflector el programa de pruebas y se nos presenta lo siguiente:

Tenemos en la ventana de la izquierda, el programa de pruebas cargado y en la ventana de la izquierda el desensamblado de dicho
programa. El programa cuando se ejecuta, inicializa los componentes y sus valores para que por ejemplo, el boton est deshabilitado
as que tendr que seleccionar en la ventana de la izquierda precisamente eso: la inicializacion de los componentes. Si lo aprecian, ya
est selecionado en grisaceo en la ventana izquierda y en la ventana de la derecha tendremos que buscar dnde se da la orden para que
el boton est deshabilitado

Bien, ah se vi la orden para deshabilitar el boton y ms abajo, el texto que debe presentar la etiqueta. Queremos cambiar eso y aqu
es donde entra en juego el plugin Reflexil. En Reflector, pulsamos el men "Tools" y activamos el plugin

Cuando lo activamos, la ventana de la izquierda en Reflector se divide en dos y a partir de ahora disponemos de los opcodes y los
operandos con los que trabajan dichos opcodes. Cada linea obviamente representa una instruccin. Pues bien, con la barra de
desplazamiento buscamos dnde se ordena que el boton est deshabilitado y lo encontramos aqu

En la imagen anterior,en la ventana de arriba el desensamblado y en la ventana de abajo las instrucciones donde se toma el boton. Se
carga un integro y se llama a la orden que hace que est habilitado no habilitado con "set_Enabled" y como valor un booleano. En la
linea 04b se carga un 0 como integro ("ldc.i4.0") y ese cero ser el booleano "False" que se le entrega a "set_Enabled".
Necesitaramos cambiar el integro que se carga por un "1" as que si seleccionamos la linea 04b y hacemos click con el boton derecho
del raton, para editar esa linea

se es el opcode que tenemos que cambiar. Cambiamos el "0" por un "1" y pulsamos el boton "Update"

Despues de ello, ya vemos cmo qued cambiado

Bien, ahora busquemos el texto que debe presentar la etiqueta

Ah vemos cmo se toma la etiqueta (Label1), se carga la string "CRACKSJAPONESES" y se le asigna dicha cadena (set_Text).
Vamos a cambiarlo por algo mas cercano a nosotros :-D

Ah vemos el operando ya cambiado. Pulsamos como antes en "Update" y ya tenemos otro detalle solucionado. Ahora por ultimo,
cambiaremos el Timer para que no se cierre el programa de pruebas transcurridos 15 segundos. Lo buscamos

Es mas que descriptiva esta imagen: el timer est habilitado (True) y con un intervalo de 15 segundos (15000 milisegundos). En la
ventana de abajo se ve cmo se toma el timer, se carga un integro "1" que es "True" en booleano y se le asigna a la propiedad
habilitado con "set_Enabled" quedando as activado. Seguido se carga el integro "15000" y se le asigna a la propiedad intervalo
"set_Interval". Lo que haremos es cambiar la propiedad habilitado a "0" (False) modificando la linea 156 cambiando "ldc.i4.1" por
"ldc.i4.0" quedando as deshabilitado el timer pues se le entregar un "0" (False). Lo hacemos como en los pasos anteriores.

Ya tenemos los tres detalles modificados. Ahora nos vamos a la ventana izquierda en Reflector y seleccionamos el ejecutable y nos
aparece en la ventana derecha la opcion de guardar la version parcheada (modificada) del ejecutable.

Lo guardamos y al abrirlo vemos que efectivamente el boton qued habilitado, la etiqueta tiene nuestro nombre y por supuesto ya no
se cierra transcurridos los 15 segundos.

Obviamente la prueba de que el boton est habilitado, es que al pulsarlo, nos sale un MsgBox que yo program como resultado del
evento de pulsacion del boton. As de esta manera tan sencilla podemos modificar en forma basica un ejecutable en .NET pero como
dije antes, no todos los ejecutables se pueden solucionar de igual forma. Ocurre por ejemplo, que los firmados con StrongNames, no
correran si fuesen modificados. Reflexil tambien puede solucionar dicha situacion

Con esta utilidad, quitamos la firma del ensamblado y as correra perfectamente. Pero como dice la nota de la utilidad, si tenemos un
ejecutable que utiliza alguna DLL firmada y le quitamos la firma, el ejecutable puede tener una referencia de la firma de esa DLL y lo
detectara. Tendramos que buscar en el ejecutable dicha referencia y actuar en consecuencia. Eso ya es como para escribir otro
tutorial. Creo que me encargar de ello en unos dias. Tambien hay mucha info en GOOGLE sobre ello. Por ultimo decirles, que con
Reflexil pueden eliminar cambiar e incluso aadir instrucciones.
Espero que este tuto le sirva a alguien que le interese los .NET y que poco a poco al resto de listeros que lo odian, se vayan metiendo
paso a paso pues cuanta mas ayuda y herramientas tengamos, mas atractivo puede resultar atacar un .NET. Saludos y hasta la
proxima!

Você também pode gostar