Jump to content

Si te venden un script con fecha de expiración.


Tomas

Recommended Posts

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
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

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
  • 1 month later...
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

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
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
  • 1 month later...

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
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 :P

Link to comment

Pues colocar formas de administrar scripts externamente no es algo que MTA apoye :P

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

Pues colocar formas de administrar scripts externamente no es algo que MTA apoye :P

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? :P

Link to comment
  • Discord Moderators

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
  • Discord Moderators

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
  • Discord Moderators

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 :roll:

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

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...