Global Dump [HTML]

Esta sección esta especialmente diseñada para todos aquellos usuarios que estés desarrollando plugins o aplicaciones y quieran ayuda para dichos plugins o aplicaciones.
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)

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

interesante.

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/4qf3u2jd7 ... erioo1.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..
[*][*][/b]

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!

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.

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

Código: Seleccionar todo

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

Código: Seleccionar todo

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

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