Ofuscar proyecto

231 views
Skip to first unread message

Victor Hugo Mm

unread,
Apr 16, 2016, 10:24:48 AM4/16/16
to Comunidad de Visual Foxpro en Español
Buenos días a todos.  Necesito ofuscar un proyecto para que cuando lo refoxeen no lo entiendan.  He probado con programas ofuscadores pero no funcionan.  Me han recomendado que use #define para cambiar los nombres de las variables.  Por favor alguien me puede explicar como usar #define en las ofuscaciones?.  Gracias

Alejandro Garcia G.

unread,
Apr 16, 2016, 10:37:59 AM4/16/16
to Comunidad de Visual Foxpro en Español
Hace rato tengo uno pero no lo utilizo hace rato, rato. Recuerdo que usaba mas uno hecho por alguien llamado Leonid, no lo encuentro.

Te paso este, ensayalo y nos comentas.
ob2._rar

Alejandro Garcia G.

unread,
Apr 16, 2016, 10:38:31 AM4/16/16
to Comunidad de Visual Foxpro en Español
Se me olvido, creo, creo que lo baje de www.universalthread.com

Edgar Acevedo

unread,
Apr 16, 2016, 3:18:16 PM4/16/16
to publicesvfoxpro
Esto es solo una referencia interesante sobre ese tema:
Hace unos años me vi en la necesidad de modificar unos PRG's hechos por un japonés para una empresa de vinos.  Había que hacer un cambio mínimo: modificar unas máscaras.  Al abrir los PRG's solté una carcajada:  ciertamente era Foxpro pero... TODO estaba codificado (y no me refiero a código FOX).  Máscaras, campos y ciertas rutinas vitales estaban guardadas en tablas que aunque eran DBF, no se identificaban como tales.  Habían enormes segmentos de código guardado en campos tipo MEMO de estas tablas. 

Es la programación más astral y fumada que he visto en mi vida.  ¡Pero corría NÍTIDO! ¡Con CERO BUGS!  Yo había dado un precio idiota, siendo que me habían dicho que tenían los PRG's. En ese momento indiqué que ya no podía sostener el precio y que tendría que recotizar.  Se molestaron.  Les dije: "Bueno, pues llamen a otro".   Llamaron a otro. Les cobró un anticipo y al final no pudo modificar la maldita máscara.  Lamaron así a otros 2 más y nada. Me volvieron a llamar a mi a regañadientes y de mala gana.  

Obviamente les coticé un valor 12 veces mayor al inicial pues ya no era una cosa de "minutos" sino seguramente "de días" pero ¿cuántos?.  Me tomó 22 DÍAS de trabajo seguirle la huella de la A a la Z a montón de cosas que me llevaron a callejones sin salida.  Hasta que por fin, encontré la maldita máscara que andaba buscando (que manejaba la impresión del precio unitario en las facturas pues el gobierno recién había decretado que los precios debieran ser de 4 decimales y no solo 2).  Fue un arduo trabajo. Debí cobrar mucho más, pero repito, no tenía idea cuantos días me tomaría.

En comparación:  yo NUNCA aprendí COBOL, pero dada una emergencia de un cliente que también debía modificar la máscara del precio unitario (por la misma razón que el anterior), acepté el trabajo. En unas 6 horas ya había encontrado la máscara y en otras 12 horas ya había aprendido recompilar en COBOL.  El caso es que en 3 días logré modificar una máscara en COBOL, un lenguaje que JAMÁS estudié, nunca programé y hasta la fecha, no se usar.

El punto es que ahí estaban los PRG's, cierto, pero era casi como si los hubiera ofuscado este superinteligente oriental.



Carlos Miguel FARIAS

unread,
Apr 16, 2016, 6:05:07 PM4/16/16
to Grupo Fox
Todo se transforma, nada se pierde.
Es imposible proteger bien un código. Salvo que compiles en binario, pero aun en binario, puede haber una herramienta que te haga ingeniería reversa y te lo convierta en código en algún lenguaje, por ejemplo C.
La ventaja del binario es que es más difícil separar el código específico de las propias librerías.
En mi caso he usado ofuscación con #DEFINE para los nombres de los variables, clases y propiedades.
Para texto, hay que tomarse el trabajo de pasarlo a hexadecimal o algo similar, asignarle un nombre de constante especifico y usar esas constantes mientras codificamos.
Para ocultar las máscaras, el procedimiento es hacer lo mismo que con las strings, y asignarlas al vuelo.

oLbl1.caption = DeCodifico(_TEXTO_LBL_1)

entonces en tu diccionario tendras un define para oLbl1, otra para DeCodifico y otra para _TEXTO_LBL_1 y al decompilar se verá:

_00101001010101.caption = _100010100101("517565206c6120467565727a61206c6f732061636f6d7061f165")

Entonces si el fulano encuentra esto, le va a costar saber de que se está hablando, porque no puede encontrar facilmente lo que tiene que modificar.
Pero como Edgar, con paciencia "oriental", puede llegar a abrirlo.
Saludos: Miguel, La Pampa (RA)

4c61726761205669646120792050726f7370657269646164
517565206c6120467565727a61206c6f732061636f6d7061f165

hecho con python
toHex = lambda x:"".join([hex(ord(c))[2:].zfill(2) for c in x])

ZeRoberto

unread,
Apr 16, 2016, 6:46:15 PM4/16/16
to publicesvfoxpro
Edgar le sacaste alguna copia de ese sistema?

Edgar Acevedo

unread,
Apr 16, 2016, 9:49:32 PM4/16/16
to publicesvfoxpro
ZeRoberto no le saqué copias. Luego de lo que me costó versus lo poco que cobré, odié esa cosa.
En plenos tiempos de Windows XP con transición a Windows 
Entendí perfectamente bien como lo hizo, pero jamás tomaría la misma idea para programar.
Yo no uso nada que no se pueda encontrarse facilmente en este foro o en PortalFox, o en el Wiki.
Además, con todos mis clientes SIN EXCEPCIÓN la negociación incluye entrega de los PRG (por el tipo de clientes que manejo).
Y es que por mi mismo y para mi mismo, me gusta codificar lo mas legible y "seguible" posible. Como buen occidental, difiero diametralmente del japonés en cuestión.

Creo (no lo he comprobado...) que la mejor solución para proteger código debe ser el uso de encriptadores USB (como unos que habían hace años llamados SENTRY).


Victor Hugo Mm

unread,
Apr 17, 2016, 5:38:46 AM4/17/16
to publice...@googlegroups.com
Me parese super interesante eso de poner código en campos memo en un archivo que ni parese ser dbf, se podrá poner en un campo memo el código compilado? es decir el contenido de un archivo .fxp?

Carlos Miguel FARIAS

unread,
Apr 17, 2016, 12:00:03 PM4/17/16
to Grupo Fox
Victor Hugo: Hace un tiempo pase un proyecto con un programa donde se hacía ofuscación (ofusquito), era un .prg y .h
Si no lo ubicas, lo reenvío.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe

Alejandro Isla

unread,
Apr 17, 2016, 3:31:10 PM4/17/16
to Comunidad de Visual Foxpro en Español
Reply all
Reply to author
Forward
0 new messages