Tomas Posted May 4, 2016 Share Posted May 4, 2016 Si te venden un script con fecha de expiración, agrégale un script (que se ubique antes que los otros archivos en el meta) con lo siguiente: toFillIn = {} for key, value in pairs (getRealTime()) do toFillIn[key] = -math.huge end getRealTime = function () return toFillIn end Saludos a Zorro. Link to comment
starksZ Posted May 4, 2016 Share Posted May 4, 2016 Interesante, Lo ejecute en sublime Text cambiando la funcion getRealTime con tostring y el script nunca se ejecuta, y con eso el script entero dejaria de funcionar? Link to comment
Tomas Posted May 5, 2016 Author Share Posted May 5, 2016 Interesante, Lo ejecute en sublime Text cambiando la funcion getRealTime con tostring y el script nunca se ejecuta, y con eso el script entero dejaria de funcionar? getRealTime devuelve una tabla, tostring devuelve un string. Link to comment
MTA Team 0xCiBeR Posted May 5, 2016 MTA Team Share Posted May 5, 2016 No se lo que pretende el post, pero si el autor del resource vendió el resource con la condición de que era por X tiempo de uso, no veo porque debes meterte ahí. Así como tampoco entiendo porque tenes que meterte de una manera publica a estas cosas. Yo por lo mió, vendo mis scripts con el source-code y no le doy el source a otro cliente que no sea ese, si un cliente me pide un recurso igual, se lo niego. Pero conozco gente que vendo con resources compilados así como también gente que vende por servidor o por máximo de jugadores( slots ) y están en su derecho de hacerlo. Ahora si El_Zorro "cago" a alguien es tema de ellos y si deseas ayudar a ese usuario, puedes hacerlo de manera privada ya que yo no se que paso y por las dudas no debería permitirlo porque podrías estar infringiendo algún tipo de trato entre El_Zorro y su cliente. Tampoco creo que sea el lugar para enseñar a hacer bypass a mecanismos de seguridad de los resources. Link to comment
PDMTA Posted June 13, 2016 Share Posted June 13, 2016 Ponerle fecha de expiracion a un script habiendo condicionado eso en el trato va incluido en los derecho de autor. Link to comment
starksZ Posted June 14, 2016 Share Posted June 14, 2016 Ponerle fecha de expiracion a un script habiendo condicionado eso en el trato va incluido en los derecho de autor. No se si soy yo o lo que dices no tiene lógica ._. Link to comment
Alexs Posted June 14, 2016 Share Posted June 14, 2016 Ponerle fecha de expiracion a un script habiendo condicionado eso en el trato va incluido en los derecho de autor. No se si soy yo o lo que dices no tiene lógica ._. Eres tú. Lo que él dice es cierto, aunque solo se cumple en códigos con autoria legal, lo que es poco común en MTA. Link to comment
PDMTA Posted June 14, 2016 Share Posted June 14, 2016 Ponerle fecha de expiracion a un script habiendo condicionado eso en el trato va incluido en los derecho de autor. No se si soy yo o lo que dices no tiene lógica ._. Palm Face! Link to comment
aka Blue Posted June 14, 2016 Share Posted June 14, 2016 Entonces no tiene sentido eso de añadirle fecha de expiración. Es como si te alquilo un script a 1 dólar por un día. ¿Quién compraría eso? A no ser que no te timen como es en este caso, pues, poco se ve por aquí. PD: ¿math.huge alarga los dígitos o algo así? Link to comment
Tomas Posted June 14, 2016 Author Share Posted June 14, 2016 Entonces no tiene sentido eso de añadirle fecha de expiración. Es como si te alquilo un script a 1 dólar por un día. ¿Quién compraría eso? A no ser que no te timen como es en este caso, pues, poco se ve por aquí.PD: ¿math.huge alarga los dígitos o algo así? math.huge = infinito. Link to comment
aka Blue Posted June 14, 2016 Share Posted June 14, 2016 A la primera no lo entendí mucho, pero viéndolo ahora. Lo que hace es que el getRealTime lo cambia por la función que hiciste. Jajaj, buena esa Link to comment
El_Zorro Posted July 15, 2016 Share Posted July 15, 2016 Realmente, hasta ahora leí este tema, disculpen si ya ha pasado algo de tiempo. Me parece interesante que se hable sobre esto. Primero quiero aclarar que he ofrecido scripts por límites de tiempo, es decir, que se puedan usar por 1 mes, 3 meses, 6 meses hasta 1 año. Hasta el momento no he tenido ningún comprador, aunque hay algunos interesados sobre éste producto, así que no he estafado a nadie y tampoco he incumplido con los tratos que hago. Por otra parte, el sistema que implemento para ese “producto” es muy diferente a lo que se refiere Tomás, aunque claro está es un script compilado para que el cliente no modifique nada del script y si lo hace, el script dejará de funcionar correctamente, es decir, que el script quedará inservible. Por otro lado, el tiempo que el script funcionará, depende absolutamente de mí, porque yo externamente y en privado tengo los datos para que ese script funcione y su respectiva modificación, incluso externamente se puede habilitar o deshabilitar funciones que estarán en el script compilado. Pero eso no quiere decir, que yo abusaré de ese conocimiento. Solo se cumple con el trato. Por otro lado, si me muero, puedes usar el script eternamente o hasta que cambies la ip de tu server o caso mayor. El script que pone Tomás, no servirá, ni afectará en nada al sistema que yo uso. Así que ni modo, buen intento. Aunque no lo creas, lo tomé como opción eso, pero fue descartado por esas vulnerabilidades. Así que mejor, con una tablita de excel llevo control de los productos que vendo y así corto el servicio externamente cuando el tiempo se agote. Link to comment
Tomas Posted July 15, 2016 Author Share Posted July 15, 2016 Realmente, hasta ahora leí este tema, disculpen si ya ha pasado algo de tiempo. Me parece interesante que se hable sobre esto. Primero quiero aclarar que he ofrecido scripts por límites de tiempo, es decir, que se puedan usar por 1 mes, 3 meses, 6 meses hasta 1 año. Hasta el momento no he tenido ningún comprador, aunque hay algunos interesados sobre éste producto, así que no he estafado a nadie y tampoco he incumplido con los tratos que hago. Por otra parte, el sistema que implemento para ese “producto” es muy diferente a lo que se refiere Tomás, aunque claro está es un script compilado para que el cliente no modifique nada del script y si lo hace, el script dejará de funcionar correctamente, es decir, que el script quedará inservible. Por otro lado, el tiempo que el script funcionará, depende absolutamente de mí, porque yo externamente y en privado tengo los datos para que ese script funcione y su respectiva modificación, incluso externamente se puede habilitar o deshabilitar funciones que estarán en el script compilado. Pero eso no quiere decir, que yo abusaré de ese conocimiento. Solo se cumple con el trato. Por otro lado, si me muero, puedes usar el script eternamente o hasta que cambies la ip de tu server o caso mayor.El script que pone Tomás, no servirá, ni afectará en nada al sistema que yo uso. Así que ni modo, buen intento. Aunque no lo creas, lo tomé como opción eso, pero fue descartado por esas vulnerabilidades. Así que mejor, con una tablita de excel llevo control de los productos que vendo y así corto el servicio externamente cuando el tiempo se agote. Pues colocar formas de administrar scripts externamente no es algo que MTA apoye Link to comment
El_Zorro Posted July 15, 2016 Share Posted July 15, 2016 Pues colocar formas de administrar scripts externamente no es algo que MTA apoye Bueno, una cosa es administrarlo y otra usarlo para hacer daño. En todo caso, yo solo administro externamente algo así como una licencia temporal de uso. No va en contra de las reglas. Link to comment
Tomas Posted July 15, 2016 Author Share Posted July 15, 2016 Pues colocar formas de administrar scripts externamente no es algo que MTA apoye Bueno, una cosa es administrarlo y otra usarlo para hacer daño. En todo caso, yo solo administro externamente algo así como una licencia temporal de uso. No va en contra de las reglas. Y cómo la gente se cerciora de que dices la verdad? Link to comment
El_Zorro Posted July 15, 2016 Share Posted July 15, 2016 Y cómo la gente se cerciora de que dices la verdad? El Zorro cumple con su palabra. Link to comment
Discord Moderators AlexTMjugador Posted July 16, 2016 Discord Moderators Share Posted July 16, 2016 callRemote y fetchRemote son también funciones vulnerables a ser reemplazadas en Lua, por mucho que el script que las use esté compilado. Cualquiera con un mínimo de conocimientos podría analizar la respuesta de tu servidor y simularla en Lua de manera transparente para tu script. Y viendo lo poco que se puede hacer en Lua para evitar que tu código se ejecute en una sandbox, yo preferiría cobrar más y dárselo al cliente tal cual que marear la perdiz con esas medidas de seguridad casi conspiranoicas, más efectivas en ahuyentar clientes que en cumplir su cometido. Link to comment
El_Zorro Posted July 16, 2016 Share Posted July 16, 2016 Si tú intentas suplantar una función que ya está definida, creando una función con el mismo nombre, la original no deja de funcionar. Al no dejar de funcionar, el valor que recibe es suficiente como para detener el script. Link to comment
Discord Moderators AlexTMjugador Posted July 16, 2016 Discord Moderators Share Posted July 16, 2016 Intentar recuperar el valor que anteriormente tenía una variable me parece un poco imposible, debido a que desde Lua no se tiene el control suficiente sobre cómo opera el colector de basura en funciones (suponiendo que no uses la librería de funciones de depuración). Si bien MTA exporta sus funciones al entorno global de cada máquina virtual, no puedes recuperar las funciones originales si las sobreescribes. Y aún guardándolas en algún lugar previamente, buena suerte encontrándolas. ¿Qué pasa si uso alguna funcionalidad de la librería debug para evitar eso? Esas funciones se pueden reemplazar igualmente, dejando también a tu script indefenso. Link to comment
El_Zorro Posted July 17, 2016 Share Posted July 17, 2016 Te lo voy a explicar de otro modo, si la función no funciona a cómo corresponde, entonces el script no funciona a cómo corresponde. Luego aparecen errores de código y empieza la fiesta. La forma en cómo se hace eso, no lo voy a decir. Link to comment
Discord Moderators AlexTMjugador Posted July 17, 2016 Discord Moderators Share Posted July 17, 2016 Precisamente, la gracia de sustituir funciones con ese fin es que el script tuyo no se dé cuenta de la sustitución. Por ejemplo, que todos los resultados de getRealTime tengan un valor infinito es algo detectable fácilmente, pero se puede hacer que esa función dé una fecha arbitraria real que va avanzando con el tiempo, haciendo así inútil casi cualquier intento de detectar la manipulación en el propio MTA. Y si me dices que para evitar eso validas fechas con un servidor tuyo, te repito que callRemote se puede reemplazar, de manera que devuelva unos argumentos que satisfazcan unas determinadas condiciones, y con un retraso determinado para simular la latencia que introduce una conexión de red, que puede ser aleatoria si hace falta. Además, si bien hacer todo eso que dije ahí arriba puede parecer complicado, siempre queda la posibilidad de que alguien decompile tu script (no es difícil si sabes cómo hacerlo) y le quite todas esas comprobaciones Hagas lo que hagas, conque tan solo un comprador ejecute el script en su servidor ya estás expuesto a que hagan lo que quieran con él, y no hay nada que puedas obligar hacer al dueño del servidor para que deje de ser factible su robo. Por eso me parece algo inverosímil afirmar tener un control "absoluto" sobre un script que se ejecuta en un ordenador que tú no puedes administrar. Lo único que realmente puede "distraer" la visión no autorizada del script es descargarlo mediante HTTPS para ejecutarlo sin guardarlo en el disco duro, y aún así tengo dudas acerca de pagar u obtener un certificado SSL habiendo programas visualizadores de paquetes que desencriptan el tráfico web seguro con tan solo cambiar unas configuraciones en el cliente. De nuevo, si sabes cómo hacerlo, tampoco es tarea difícil. Conclusión: creo que merece más bien poco la pena implantar esas medidas de seguridad en un script, porque alguien que sepa decompilarlo posiblemente sepa también otros métodos para salirse con la suya. Link to comment
El_Zorro Posted July 17, 2016 Share Posted July 17, 2016 Yo no digo que el método de seguridad sea 100% seguro, es seguro hasta que no se descompile y bueno, el que lo logre descompilar se ganó el premio. Yo pongo la seguridad hasta el límite que tengo acceso. Si para la seguridad de que una función trabaja por defecto, puedes hacer una prueba con unas variables que estén dentro del script que son datos permanentes y datos obtenidos de la función, si los datos coinciden, entonces, la función está correcta. De lo contrario, se ejecuta automáticamente de que la función está trabajando incorrectamente y por lo tanto, las variables cambian sus valores para que las condiciones den false requerido. Link to comment
Recommended Posts