Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: scramble en 16 Noviembre 2007, 03:43 am



Título: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 16 Noviembre 2007, 03:43 am
Buenas noches.

Quise acudir a las grandes mentes de este foro para ver si podian aclararme cierta dudita.

Tengo un programa que corre enteramente bajo DOS de hecho el equipo donde esta ni siquiera tiene otros sistemas operativos instalados solamente DOS...y resulta que tiene una proteccion algo fuerte de quebrantar, tiene algo que ver con el hardware ya que si conectas el disco duro en otro equipo el programa simplemente se bloquea y no se ejecuta nunca mas a menos que alguien con acceso lo desbloquee de alguna manera que no conozco.

Es posible que un software bajo DOS detecte que esta siendo copiado? Mi idea fue de conectar otro disco a esa PC, correr algun cd como el Hirens que traen aplicaciones bajo DOS para asi tratar de clonar o copiar el contenido entero del disco fuente y hacer pruebas mas tranquilamente con ese software sin miedo a dañar nada.

Algunos compañeros que supuestamente intentaron hacerlo me dijeron que despues de haber copiado el programa al tratar de ejecutarlo en el equipo original simplemente quedaba bloqueado, como si hubiera detectado el intento de copiado, y por su puesto la copia en el disco nuevo tambien era inservible...

Alguno tiene idea si eso será cierto? se puede ese tipo de tecnologia en programas bajo DOS?

El software en cuestion fue tomado por alguien de mi ciudad lo modifico a su manera y ahora lo vende a precios extremadamente altos y por ser el unico en su tipo en esta zona la gente debe pagar lo que el cara dura pida.

Alguno podria sacarme de esa dudita?

Se que existen llaves que se activan segun el hardware detectado al correr el programa por primera vez y si se lleva a otro equipo se bloquea...eso lo he visto...Pero tambien es posible que el programa detecte en cierto sentido que se esta tratando de copiar a otro disco?

Saludos y gracias de antemano...


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: botella en 17 Noviembre 2007, 19:17 pm
1- tal vez deberìas probar la pregunta en el subforo de ingenieria inversa.

2-Està bièn que el tipo lo venda a lo que quiera, se ve que tuvo la capacidad de joderselòs a todos.


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 18 Noviembre 2007, 04:10 am
1- tal vez deberìas probar la pregunta en el subforo de ingenieria inversa.

2-Està bièn que el tipo lo venda a lo que quiera, se ve que tuvo la capacidad de joderselòs a todos.

No comparto tu opinion, a de ser que estoy mas de acuerdo con la mentalidad del Software Libre.

Si asi fuera ni cracks habrian..despues de todo la mayoria de los programas han llevado esfuerzo por parte de sus programadores.

Y en la parte de que se los jodio a todos es mas por que el software en cuestion nada mas es usado en cierta zona para una utilidad si se quiere sencilla por lo tanto no ha tenido fama para que alguien con la capacidad adecuada se interese por dicho software.

Si solo a un pequeño grupo le es util el programa y ninguno de este pequeño grupo es programador ni cracker o algo por el estilo, logicamente no sabran romper esa proteccion. Pero en manos adecuadas estoy seguro que la tarea seria simple.

Tambien se desvio un poco el tema de mi verdadera pregunta y fue llevada a la ingenieria inversa, yo solo consultaba la posibilidad de que un programa de DOS tuviera tal capacidad.

De igual forma gracias por responder.


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: Hendrix en 18 Noviembre 2007, 23:08 pm
Puede haber mil maneras de que mire eso...principalmente creo que sera por el hardware...mirando la placa base, la version y modelo o algo parecido con cualquier elemento del hardware...se podria crackear parcheando esto.... ;)


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 18 Noviembre 2007, 23:51 pm
Puede haber mil maneras de que mire eso...principalmente creo que sera por el hardware...mirando la placa base, la version y modelo o algo parecido con cualquier elemento del hardware...se podria crackear parcheando esto.... ;)

Buenas noches Hendrix.

Ya hoy tuve el chance de hacer algunas pruebas yo mismo y corroborar que tan cierto eran tantos rumores...

Te cuento...dado que los equipos donde el programa corre son extremadamente viejos estaba muy limitado, no hay usb, el bios no soporta discos grandes, y a duras penas logre hacer funcionar la unidad de CD. Con un File Manager bajo dos logre copiar todos los datos que contiene el disco de la maquina en cuestion.

Hice copia espejo de todos los datos a otro disco y lo conecte a la misma maquina y efectivamente no ejecuta el programa, inmediatamente detecta como copia ilegal...Por lo que me llevó a pensar que o es un archivo oculto que el navegador de archivos bajo DOS no vio o es algun tipo de proteccion que detecta el serial o algo relacionado con el disco duro. Dado que el disco fue el unico cambio que hubo.

Luego de tener los archivos ya en mi equipo (del cual escribo actualmente) tengo otra limitante y es que el programa ejecuta solo bajo DOS y no se si las aplicaciones que ayudan en el proceso de crackeo de programas tendran efecto con estos archivos EXE hechos para DOS.

De igual forma si hay algun interesado puedo subir los archivos del programa para que echen una ojeada.

Saludos y nuevamente gracias por sus respuestas.


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 19 Noviembre 2007, 00:56 am
Hendrix de casualidad tendras experiencias crackeando programas bajo DOS? Algun tip o sugerencia?

Aqui por si acaso dejare el programa en cuestion:

Un Archivo rar que contiene exactamente los mismos archivos del equipo en el cual el programa si funciona normalmente.

Para ejecutar el programa (o al menos intentarlo) estoy usando una aplicacion llamada DOSBox que emula el antiguo sistema DOS a la perfeccion.

En el autoexec.bat (archivo de arranque para pcs viejos) estaba el archivo C:\DOS\P2004\lotto.exe puesto a ejecutarse automaticamente....

Mirando con un editor Hexagecimal ese archivo creo que hace referencia a otros varios mas...incluido el p2004.exe que precisamente viendo tambien con el editor hex es el que contiene el texto de "Copia Ilegal"....

Hasta este punto he llegado, la verdad no se que otro paso dar...intente abrir con el OLLYDBG pero creo que por ser un programa bajo DOS no lo abre bien...

Aca el paquete RAR con los archivos...

http://rapidshare.com/files/70696494/DOS.rar.html

Mirror1:
http://www.badongo.com/es/file/5196314

Mirror2:
http://www.zshare.net/download/5001751cb0a88b/




P.D. : Hendrix he estado leyendo tus tutoriales y debo darte las gracias pq he aprendido bastante, muy bueno que te hayas tomado el tiempo en empaquetarlos tan ordenadamente en PDF's...

De antemano 1 millon de gracias por solo leer este post.


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: Hendrix en 19 Noviembre 2007, 13:17 pm
Un debugger para dos muy bueno es el viejo SoftIce....no lo e usado nunca (prefiero el olly), haber si alguien que tenga experiencia en eso puede ayudar  ;)

O sino buscate manuales del SoftIce...funciona tambien en DOS  ;)


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: Karman en 19 Noviembre 2007, 17:20 pm
Acabo de analizar tu programa con el IDA Pro y encontré lo siguiente:

1º No es un programa de DOS (aunque lo parezca), es un programa de Win16 (win 3.1 posiblemente), osea NE, y en el código:

Código:
cseg01:4BDC:
mov     di, offset aInfsys00_sys ; "INFSYS00.SYS"
...
mov     di, offset aCP2004System ; "C:\\P2004\\SYSTEM"
...
call  @FSearch$q7PathStr6String ; FSearch(PathStr,String)
...
jnz     short loc_4BF6  <- si lo encuentra salta
jmp     loc_4D42 <- sinó [b]error "01"[/b]

Luego: Open file, read file, close file... busca un archivo de log... lo lee... (desconozco que busca en el) y lo elimina, pero si no lo encuentra resetea una variable que se utiliza más adelante... por lo que creo el funcionamiento es el siguiente:

al ejecutarse lee el archivo LOTLOG.LOG, y lo elimina, si sobrepasa todos los checkeos(con la información en el), lo crea de nuevo, mientras que si no, no lo crea y la próxima vez ni siquiera realiza los checkeos... va directamente al mensaje de error... luego tenés:

Código:
cseg01:4CB8:
mov     ax, word_9DC6A <- lo leido en "INFSYS00.SYS"
mov     dx, word_9DC6C <- lo leido en "LOTLOG.LOG"
cmp     dx, word_9CC5A <- variable reseteada (lo mencionado arriba)
jnz     short loc_4D38 <- [b]error "02"[/b]
cmp     ax, word_9CC58 <- variable reseteada (lo mencionado arriba)
jnz     short loc_4D38 <- [b]error "02"[/b]
push   3
call    @DiskSize$q4Byte ; DiskSize(Byte) <- Tamaño de disco?
cmp     dx, word_9DC70 <- leido de "INFSYS00.SYS"
jnz     short loc_4D38 <- [b]error "02"[/b]
cmp     ax, word_9DC6E <- leido de "INFSYS00.SYS"
jnz     short loc_4D38 <- [b]error "02"[/b]
...
mov     di, offset aWin386_swp ; "WIN386.SWP"
...
mov     di, offset aCDos ; "C:\\DOS"
...
call    @FSearch$q7PathStr6String ; FSearch(PathStr,String)
...
cmp     byte ptr es:[di], 0
jz      short loc_4D38 <- no lo encuentra? [b]error "02"[/b]

Luego comienza el programa... con lo que modificando todos los:

jnz     short loc_4D38         ->       jz    short loc_4D38

y teniendo los archivos que te pide ya podes acceder al programa, pero de todas formas, al entrar en el programa te solicita un nombre de usuario y contraseña, los cuales al parecer son de seguridad de los datos... lo cual desconozco si los tienes...

S2

PD: las direcciones de los saltos a modificar son:

cseg01:4CC3 75 73
cseg01:4CC9 75 6D
cseg01:4CD6 75 60
cseg01:4CDC 75 5A


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 19 Noviembre 2007, 18:12 pm
Buenas tardes Karman, primeramente muchas gracias por tan solo darte la molestia de hacer esos analisis (cosa que muchos no harian).

Yo hoy por la mañana estuve probando con varios desensambladores como el Soft-ICE 2.8 para dos y el IDA version viejita para DOS tambien, con ninguno tuve mucho exito quizas por la razon que expones que es un programa de Win16 y no de DOS ciertamente.

Con respecto a los archivos que el programa busca quizas el mismo los crea y los borra ya que en el equipo donde el programa si funciona no logre encontrarlos....

Si efectivamente el programa luego de estar funcionando pide tambien un usuario y clave, esos datos los tengo al menos para modo usuario normal.

Te pregunto ahora lo siguiente.

Lograste hacer correr el programa? O son inevitablemente necesarios esos archivos a los que haces mencion para poner en funcionamiento el software?

Las modificaciones de los saltos pueden ser hechas desde el mismo IDA pro?

Saludos y nuevamente muchas gracias por sus respuestas.

P.D.: Segun nos enteramos ayer, la persona que vendia este programa se ha mudado de la ciudad y no brinda ya ningun tipo de soporte...ahora mas que nunca debo ingeniarmelas para ver como lo hago funcionar en otros equipos, ya que si me falla el unico que tengo en funcionamiento estare algo jodido.

Y para aquellos interesados en saber de que va el programa, es un simple gestor de agencias de loterias, para llevar el control de las ventas, entradas y salidas, y crease o no en este ambito en mi ciudad (bastante pequeña), fue el unico programa que se pudo encontrar que hiciera bien el trabajo.


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: Karman en 19 Noviembre 2007, 19:07 pm
Con respecto a los archivos que el programa busca quizas el mismo los crea y los borra ya que en el equipo donde el programa si funciona no logre encontrarlos....

Si, el programa o el instalador del mismo... aunque por ahí leí algo de registro, me parece que el programa se puede instalar dándole algún argumento... si quieres puedes revisar el código...

Lograste hacer correr el programa? O son inevitablemente necesarios esos archivos a los que haces mencion para poner en funcionamiento el software?

Si, logré hacer correr el programa, y no necesitas ningún archivo... osea... ya están en la carpeta que posteaste... el tema es la ubicación, el programa tiene que estar en C:\, por ejemplo:

C:\P2004\P2004.exe
C:\P2004\SYSTEM\INFSYS00.SYS <-está dentro del archivo que posteaste
C:\DOS\WIN386.SWP

o sea... tenes que descomprimirlo en C:\, no puede estar en otro lado... modificando los 4 saltos e instalándolo en C: el programa funciona...

Las modificaciones de los saltos pueden ser hechas desde el mismo IDA pro?

Desconozco... yo utilicé un editor hexadecimal (UltraEdit)... pero no sé si el IDA permite modificar ejecutables...

S2


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 19 Noviembre 2007, 21:16 pm
Karman disculpa tanta insistencia....Bajé el IDA Pro y la verdad nunca habia trabajado con un programa de estos, pero he estado leyendo algunos tutoriales y archivos de ayuda todos estos dias.

Analice el archivo p2004.exe con el IDA y lo detecta como un archivo NE tal como decias, luego hace referencia a 2 archivos dll que no los tengo pero de igual forma al ignorar dicho mensaje pude ver el analisis del programa.

Encontre tambien las direcciones que me colocaste mas arriba, pero que exactamente debo modificar?

Sinceramente no es que busque las cosas ya hechas sino que me ha costado un poco digerir en estos dias tanta informacion y cosas de este mundo de la ingenieria inversa.

Si no es mucho pedir, pudieras ser un poco mas especifico en la parte de la modificacion de los saltos?

Muchas gracias de antemano.


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 19 Noviembre 2007, 22:54 pm
Bueno ya logre modificar los saltos...

Muchas gracias, aunque al iniciar me lanza unos errorcitos que en el equipo normal no salen de igual forma probare esta noche la funcionalidad a ver si no se ve comprometida de ninguna forma. Muchisimas gracias de verdad, yo solo no habria podido hacer ni la mitad del proceso.

Una ultima pregunta, por ejemplo se puede a traves de un desensamblador descifrar una contraseña? ya que por lo menos yo tengo contraseña de usuario pero imagino que debe haber una de Administrador para configurar los parametros generales.

Saludos


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: Hendrix en 20 Noviembre 2007, 11:20 am
Bueno ya logre modificar los saltos...

Muchas gracias, aunque al iniciar me lanza unos errorcitos que en el equipo normal no salen de igual forma probare esta noche la funcionalidad a ver si no se ve comprometida de ninguna forma. Muchisimas gracias de verdad, yo solo no habria podido hacer ni la mitad del proceso.

Una ultima pregunta, por ejemplo se puede a traves de un desensamblador descifrar una contraseña? ya que por lo menos yo tengo contraseña de usuario pero imagino que debe haber una de Administrador para configurar los parametros generales.

Saludos

Desensamblador no se (Hace años que no toco el W32Dasm), pero desde un debugger si... :)

Con lo de modificar los saltos, creo que en el olly si se puede (haciendo un dumpeado del archivo), supongo que en el IDA tambien (no lo e usado nunca al IDA), aunque es más fácil hacerlo desde un editor hexa  ;)



Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: Karman en 20 Noviembre 2007, 13:49 pm
Bueno ya logre modificar los saltos...

Muchas gracias, aunque al iniciar me lanza unos errorcitos que en el equipo normal no salen de igual forma probare esta noche la funcionalidad a ver si no se ve comprometida de ninguna forma.

Errorcitos??? No tendría que tirar ningún tipo de error, acá cuando lo ejecuto se abre normalmente, habrás modificado bien? El tema de los saltos era el siguiente:

jnz     short loc_4D38         ->       jz    short loc_4D38

entonces abrías el debugger, ibas a las direcciones que te dí, te fijabas en la barra de estado del IDA, y te aparecía un número (offset), abrías el archivo en un editor hexa, ibas al offset que te decía el IDA, y cambiabas:

cseg01:4CC3 75 73 -> 74 73
cseg01:4CC9 75 6D -> 74 6D
cseg01:4CD6 75 60 ->  74 60
cseg01:4CDC 75 5A  -> 74 5A

Acá te dejo el link de descarga... lo terminé subiendo para que veas como queda:

http://rapidshare.com/files/71013947/P20042.rar.html (http://rapidshare.com/files/71013947/P20042.rar.html)

Una ultima pregunta, por ejemplo se puede a traves de un desensamblador descifrar una contraseña? ya que por lo menos yo tengo contraseña de usuario pero imagino que debe haber una de Administrador para configurar los parametros generales.

Si, en realidad con un debugger... pero en este momento no tengo ningún debugger de 16 bits...

S2


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 20 Noviembre 2007, 23:36 pm
Desensamblador no se (Hace años que no toco el W32Dasm), pero desde un debugger si... :)

Con lo de modificar los saltos, creo que en el olly si se puede (haciendo un dumpeado del archivo), supongo que en el IDA tambien (no lo e usado nunca al IDA), aunque es más fácil hacerlo desde un editor hexa  ;)

Entiendo, bueno es que como en varios de tus tutos en PDF lograbas descifrar las keys/seriales de algunos programas imagine que en este caso el procedimiento sería parecido.

Citar
Errorcitos??? No tendría que tirar ningún tipo de error, acá cuando lo ejecuto se abre normalmente, habrás modificado bien? El tema de los saltos era el siguiente:

jnz     short loc_4D38         ->       jz    short loc_4D38

entonces abrías el debugger, ibas a las direcciones que te dí, te fijabas en la barra de estado del IDA, y te aparecía un número (offset), abrías el archivo en un editor hexa, ibas al offset que te decía el IDA, y cambiabas:

cseg01:4CC3 75 73 -> 74 73
cseg01:4CC9 75 6D -> 74 6D
cseg01:4CD6 75 60 ->  74 60
cseg01:4CDC 75 5A  -> 74 5A

Yo el proceso lo completé de esta manera, sombree el area que queria modificar y arriba en el menu del IDA sale un boton que dice "Open Hexadecimal View", y para estar mas seguro agarre un tramo largo de caracteres y los busque en el Ultra Edit para dar con esa región...Intente en el ultraedit ir hasta el offset que me salia en la barra de estado y no se, no hacia la busqueda (CTRL+G en UltraEdit).

(http://img236.imageshack.us/img236/8717/sshot8ui7.th.jpg) (http://img236.imageshack.us/my.php?image=sshot8ui7.jpg)

En fin los errores que me da es que no puede encontrar el archivo Defrag.exe pero de igual forma sigue adelante y abre el programa...

Si creo que debi cometer algun error en la modificacion en el Hex...

De igual forma muchas gracias a ambos por sus comentarios y ayuda. (Debiera tener este foro el sistema de aumento de prestigio a usuarios a traves de un boton de agradecimientos yo ya lo habria fundido con ustedes :P).


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: scramble en 21 Noviembre 2007, 21:21 pm
Ehmm..Buenas tardes...

Yo nuevamente con otra pregunta un tanto relacionada a este tema...

Que tipo de sistema de protección es este que presenta el software? quiero decir, se pudo encontrar y saltar la proteccion, pero basicamente en que se basa?  que tiene el equipo en el cual el programa funciona perfectamente? Son archivos ocultos? toma el serial del disco duro para compararlo?

Por mas que veo el analisis de IDA no veo la proteccion en si. (soy newbie recuerden).

Esto mas que todo es por cosa mia que quiero aprender un poco mas y tengo dias con esa curiosidad.

Nuevamente agradecido con ustedes.


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: Karman en 21 Noviembre 2007, 21:59 pm
Básicamente se basa en 2 condiciones... la 1º con el tema del archivo de LOG que te expliqué anteriormente... (lo de leer, borrar, escribir) y el 2º en la siguiente línea:

call    @DiskSize$q4Byte ; DiskSize(Byte) <- Tamaño de disco?

con esta función obtiene el tamaño del disco que luego compara con un valor guardado, o sea... disco de distinto tamaño, programa copiado...

S2


Título: Re: Puede un programa bajo DOS detectar que esta siendo copiado?
Publicado por: g6 en 26 Noviembre 2007, 01:43 am
Que buen trabajo en equipo hicieron gente, la verdad da gusto leer el post ;)
Si de algo les sirve, mi hermano solía proteger así sus programas tomando datos de la pc donde se intalaba (valores BIOS, parámetros HD, etc.) lo cual aseguraba que ese programa no podía ser instalado en ningun otra PC. No es nada del otro mundo y según me comentó es facil de sacar solo que al estar en DOS es más trabajoso.
Saludos a todos y si tienen tiempo y desean investigar denme una mano con mi post (http://foro.elhacker.net/index.php/topic,189627.0.html)  :)