9 mensajes Página 1 de 1
Hola, necesitaba hacer un script en lua para obtener todas las variables globales (no las de scopes) y elaborar un arbol.

Imagen

Os dejo el codigo ya que puede resultar muy util ;)

Solo hay que ponerlo en un boton o algo y pulsar, automaticamente generará el dump y lo abre en el navegador

-- Converts Lua table to HTML output in table.html file
function tohtml(x)
  ret = tohtml_table(x,1)
  writefile("table.html", ret)
  os.execute("table.html")
  return(ret)
end

-- Saves a string to file
function writefile(filename, value)
  if (value) then
    local file = io.open(filename,"w+")
    file:write(value)
    file:close()
  end
end

pack=0;
-- Flattens a table to html output
function tohtml_table(x, table_level)
 
  local k, s,  tcolor
  local html_colors = {
    "#339900","#33CC00","#669900","#666600","#FF3300",
    "#FFCC00","#FFFF00","#CCFFCC","#CCCCFF","#CC66FF",
    "#339900","#33CC00","#669900","#666600","#FF3300",
    "#FFCC00","#FFFF00","#CCFFCC","#CCCCFF","#CC66FF"
  }
  local lineout = {}
  local tablefound = false
    if type(x) == "table" then
    s = ""
    k = 1
    local i, v = next(x)
    while i do
      if (type(v) == "table") then
        if (table_level<10 and flat(i)~="_G") then
                if (flat(i)=="package") then pack=pack+1; end
        --Dialog.Message('',flat(i))
                if (flat(i)=="package" and pack>1) then lineout[k]="" else
                        lineout[k] =  "<b>" .. flat(i) .. "</b>".. tohtml_table(v, table_level + 1)  ;
                end
        else
          lineout[k] = "<b>MAXIMUM LEVEL BREACHED</b>"
        end
        tablefound = true
      else
        lineout[k] = flat(i) .. "=" .. tohtml_table(v)
      end
      k = k + 1
      i, v = next(x, i)
    end

    for k,line in ipairs(lineout) do
      if (tablefound) then
        s = s .. "<tr><td>" .. line .. "</td></tr>\n"
      else
        s = s .. "<tr><td>" .. line .. "</td></tr>\n"
      end
    end
    if not (tablefound) then
      s = "<table border='1' bgcolor='#FFFFCC' cellpadding='5' cellspacing='0'>" ..
        "<tr>" .. s .. "</tr></table>\n"
    else
      tcolor = html_colors[table_level]
      s = "<table border='3' bgcolor='"..tcolor.."' cellpadding='10' cellspacing='0'>" ..
          s ..  "</table>\n"
    end

    return s
  end
  if type(x) == "function" then
    return "FUNC"
  end
  if type(x) == "file" then
    return "FILE"
  end

  return tostring(x)
end

-- Flattens a table to string
function flat(x)  
  return toflat(x,1)
end

-- Flattens a table to string
function toflat(x, tlevel)
  local s
  tlevel = tlevel + 1

  if type(x) == "table" then
    s = "{"
    local i, v = next(x)
    while i do
      if (tlevel < 15) then
        s = s .. i .. "=" .. toflat(v, tlevel)
      else
        s = s .. i .. "={#}"
      end

      i, v = next(x, i)
      if i then
        s = s .. ", "
      end
    end
    return s .. "}\n"
  end
  if type(x) == "function" then
    return "FUNC"
  end
  if type(x) == "file" then
    return "FILE"
  end

  return tostring(x)
end

tohtml(_G)
Parsed in 0.009 seconds, using GeSHi 1.0.8.9
ImagenImagenImagenImagen

Como dato curioso existen un par de funciones que no se muestran por ninguna parte

Page.FireEvent(ptr,string_event,string_lua) --object plugins
--Page.FireEvent(Page.GetPluginObjectPtr(objeto),string_event,string_lua)
Page.GetPluginObjectPtr(objeto)

FireEvent ya la conocia hace bastante tiempo no se como funciona pero si encuentro el viejo control SCIVB que hice con ceone lo miro porque ahi lo use mucho

GetPluginObjectPtr es una funcion interesante para poder acceder a las propuedades de cualquier objeto y modificar cosas que desde lua no se pueden.

Imagen
ImagenImagenImagenImagen

interesante.
Imagen

hey pabloko puedes ayudarme en un de mis proyectos para ayudar a unos amigos de un foro mira las fotos y t dire k es lo k necesito es muy facil entiendo full kasi todo


http://www.mediafire.com/view/4qf3u2jd7bc24v8/Omisterioo1.GIF

Aki stoy entrando al juego ejecutando su Exe. en Cheat... pero mira esto..

http://www.mediafire.com/view/dovklb3ho ... 1.JPEG.jpg

Aki toy Abriendo la ventana de los registros para alterar loz codigos del sistema..

CTRL+A se abire el AUTO Assembler ai va el Codigo para ejecutar el HOOK..[*][*]


http://www.mediafire.com/view/kmu75mb62 ... _.JPEG.jpg


Al final ya lo ejecute komo ves Arroja el Dialogo .... YES or no... Dialog.Messange.. no kiero k dea YEs Or No.. tengo k aceptar el codigo como yes para k registre los codigos en el sistema.. pero lo k kiero es k los codigos k necesito injectar sean solo con un Click rapido sin tener k injectarlos muxo menos abrir el CHEATENGINE.. tengo 3 cod.. registrarlos auto en una base de datos tener los 3 codigos y AUTO injectarlos en cheatengine..

Como anillo al dedo en este momento, gracias!
Imagen
Imagen

Si quieres puedes apoyar el chat de la comunidad de amsspecilist

oye thedary dime k tienes tu para esto ... algo regular..

omisterio lo que tu quieres hacer suele hacerse mediante una inyección de dll, utilizar alguna dll conocida como d3d9.dll para inyectar eso en el juego.

Solo debes compilar tu propio d3d9.dll o lo que sea, meter tu hook entre _asm y sustituir la referencia de la dll por la local. Si te fijas en el codigo de s0beit para gta sa lo veras claro

Por favor no descarriles mas este tema.
ImagenImagenImagenImagen

Re:

omisterioo escribió: oye thedary dime k tienes tu para esto ... algo regular..


Claro, lo pienso utilizar para ver algunas funciones, variables y tablas que podría o no necesitar para hacer sandbox, si bien esto se puede hacer con un buclesito, la solucion de pablo es más linda :yeah: :

for k,v in pairs (_G) do
     print(k,v)
end


Hacer sandbox a una función en Lua es muy fácil, simplemente cambiamos el entorno de dicha función a lo que queremos y ya está:

function f(str)
        mi_env = {print = print}
        setfenv(mi_env)

        print ("Saludo seguro : Hola " .. str)
        os.execute("echo Saludo inseguro: Hola ".. str) -- OS execute es inseguro porque permitiria ejecutar cualquier cosa
end

f("TheDary") -- Generará un error cuando intente ejecutar os.execute() porque no existe en ese contexto
Parsed in 0.003 seconds, using GeSHi 1.0.8.9


Esto sirve por ejemplo para que no se le permita ejecutar cosas peligrosas a scripts lua que pueden ser complementos, skins, etc. Como en la aplicación WinDS Pro de lainz que los skins se gestionan mediante scripts lua.

Si quieres leer más:

http://lua-users.org/wiki/EnvironmentsTutorial
Imagen
Imagen

Si quieres puedes apoyar el chat de la comunidad de amsspecilist

no te fies, con los opcodes correctos se hace un agujero bueno en el enviroment. hace tiemp estuve jugando con la libreria debug y tenia un pedazo de codigo muy bueno, pero mi gato se subio en la torre y le dio al reiniciar asi q lo palme...
ImagenImagenImagenImagen
9 mensajes Página 1 de 1

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado