Este artículo está diseñado para demostrar el mecanismo de subversión de una versión caducada de software, incluida la verificación de validación, modificar el comportamiento existente de un binario ejecutable sin siquiera acceder o analizar su código fuente mediante el ejercicio de un mecanismo avanzado de ingeniería inversa. En términos simples, tenemos simplemente el archivo ejecutable de una aplicación en particular que ya está vencida y bloqueada en este momento debido a la falta de disponibilidad del proveedor que la desarrolló anteriormente. Por lo tanto, primero lo desbloquearemos y luego usaremos su funcionalidad ingresando dentro de él como antes mediante ingeniería inversa. Para lograr este pie, es requisito tener un conocimiento profundo de la instrucción del lenguaje ensamblador, así como las habilidades profundas de operación de la herramienta OllyDBG .
Ingeniería inversa –
A menudo es posible que el proveedor que desarrolló el software no exista ahora o se cierre. Ahora el producto está caducado o tal vez muestra algún error extraño en el tiempo de ejecución, o puede estar produciendo resultados extraños. Ahora el desafío candente es cómo eliminar dicha validación de seguridad, los derechos de protección de copia impuestos por la antigua compañía porque no tenemos el código fuente del software ya que solo habíamos firmado un contrato mutuo para el paquete ejecutable del software, no el código fuente también. Afortunadamente, todavía es posible modificar o parchear el software caducado mediante el análisis de su código binario, lo que generalmente se conoce como ingeniería de software.
Análisis de metadatos
Entonces, cuando ejecutamos el software, refleja un mensaje contundente de que ha caducado y para continuar con la versión de prueba, compre una copia completa. Literalmente se trasluce que el proveedor había impuesto esquemas de protección contra copias para minimizar la facilidad con la que los usuarios no solicitados los eludirían. El mecanismo de protección contra copia a menudo comprende una práctica en la que el software verifica la funcionalidad que se expondrá al ejecutarlo. Aparte de eso, permite que el software se active hasta cierto tiempo. Como puede observar a continuación, la siguiente versión de prueba del software está caducada y no está operativa. Además, mostrando un mensaje de error cuando intentamos ejecutarlo.
Para eludir esta restricción de protección contra copias y extender su período de prueba, primero debemos recopilar los metadatos binarios, ya que desconocemos terriblemente su origen, en el que se ha cumplido el entorno de desarrollo. Se concluye fácilmente del explorador CFF que se trata de un archivo binario PE de 32 bits, compilado en lenguaje VC++.
Desmontaje binario
En el momento en que nos esforzamos por ejecutar eldemoBinary.exe
archivo, no correrá en virtud de que la fecha actual sea posterior a la fecha en que caducó el preliminar aprobado. ¿Cómo podríamos utilizar este producto prestando poca atención al lapso de tiempo para la prueba? Entonces, para hacerlo, primero cargamos y depuramos el binario en OllDBG para comprender su funcionalidad de back-end, luego editamos la sección que nunca llega a la caducidad de prueba de la ruta del código rastreando hacia atrás. Ahora comienza el verdadero asalto, descargue la herramienta OllyDBG de su sitio web oficial y luego instálela/configúrela correctamente. Más tarde, abra el binario demoBinary.exe en el IDE desde la opción Archivo/Abrir. Comienza a descompilar y carga el código ensamblador del ejecutable como se muestra en la siguiente figura. Desde la misma instrucción 00401204 podemos concluir el punto de entrada del flujo de ejecución de arriba hacia abajo de la siguiente manera;
Ahora surge la pregunta de cómo determinar qué sección del código ensamblador en dicho código se manipulará y cuál se dejará intacta. Como regla general en ingeniería inversa, rastree la ejecución siguiendo las strings que se muestran en cualquier momento. La empresa que creó este software le ha proporcionado un mensaje muy útil que indica que el período de prueba ha expirado. Por lo tanto, nuestro objetivo principal es ubicar el mensaje de error de string «Lo sentimos, este software de seguimiento ha caducado» que se muestra, puede llevarnos a la sección deseada. Comience a depurar en el IDE presionando F9 y el código de restricción de duración de la prueba, una vez que lo consigamos, pause la ejecución y obtenga la sección responsable del mensaje de error. Desde la pila de llamadas (Alt+ K), el texto de error de seguimiento es un parámetro para MessageBoxA que se ve de la siguiente manera;
Luego, seleccione USER32.MessageBoxA y haga clic con el botón derecho y elija mostrar llamada para obtener el punto de inicio en el que el ensamblado llama al cuadro de mensaje. Aquí, en la siguiente figura, antes de la instrucción 004011CE que es una llamada a MessageBoxA, se insertan 4 parámetros en la pila de la siguiente manera.
Seleccione la instrucción PUSH 10 ubicada en la dirección 004011C0, la línea de código que hace referencia a la línea seleccionada se muestra en el área de texto a continuación sobre el salto de 00401055 a 00401063, haga clic con el botón derecho en la imagen de arriba para abrir el menú contextual de la siguiente manera;
El menú contextual muestra que tanto 00401055 como 00401063 contienen JA para el PUSH 10 utilizado para MessageBoxA. El JA se usa para saltar cuando la fecha actual es posterior a la fecha del juicio. Luego, haga clic derecho en la instrucción 0x00401055 dentro de la ventana de la CPU y seleccione binario donde haga clic en Rellenar con NOP de la siguiente manera;
Esta operación completa todas las instrucciones correspondientes para 0x00401055 con NOP (sin operación), lo que evita que el programa llegue a la ruta del código de error y también borra de manera efectiva la ruta del código JA a la ruta del código de caducidad de la siguiente manera.
Ahora, regrese a PUSH 10 presionando el guión (~) y complete con los NOP para la instrucción 0x00401063 también de la siguiente manera;
Finalmente, guarde las modificaciones haciendo clic derecho en las ventanas de la CPU y haga clic en Copiar a ejecutable, presione Todas las modificaciones como se muestra a continuación.
Finally, save as the final patched binary and execute it, !Hurray!!…….. Congratulation message……… no expiration error message is shown. We successfully defeated the expiration trial period restriction.
Resumen
Este artículo muestra un enfoque para desafiar la calidad de la medida de protección contra copia que utiliza OllyDBG y distingue los enfoques para hacer que su producto sea cada vez más seguro contra el uso no autorizado. Al esforzarnos por vencer la duplicación de la seguridad de su aplicación, podemos obtener mucha experiencia sobre cuán sólido es el mecanismo de protección. Al hacer esta prueba antes de que el elemento sea de acceso público, podemos cambiar el código para hacer que la seguridad duplicada sea cada vez más moderna antes de su lanzamiento.
Publicación traducida automáticamente
Artículo escrito por AjayYadav007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA