@tairorojo este codigo
https://gist.github.com/cwarden/1207556 ... 6a52b1fe9d
solo te permite integrar un argumento, ademas es posible que controle errores de ejecucion, pero errores de forma o corrupcion de datos te los va a seguir enviando por msgbox
el runtime de ams tiene mas o menos este codigo
lua_getglobal(L,"onStartup");
lua_pushstring(L,cmdplg);
if(lua_pcall(L,1,0,0)!= 0)
{ MessageBox(NULL, lua_tostring(L, -1), "AutoPlay Runtime",MB_OK); }
Lo más sencillo en este punto es editar los binarios de lua 5.1.4 y editar la funcion pcall para omitir la salida de errores, luego solo sustituir el archivo lua51.dll del proyecto y ya está, pero en cierto punto esta chapuza ppuede dar problemas por otro sitio si algo no funciona bien o necesita esta funcionalidad de obtener errores en el stack
Desde luego estos mensajes vienen del runtime y solo se pueden quitar editandolo (o parcheandolo) o bien modificando el binario de lua
http://sourceforge.net/projects/luabina ... 20Sources/
archivo lapi.c
LUA_API int lua_pcall (lua_State *L, int nargs, int nresults, int errfunc) {
struct CallS c;
int status;
ptrdiff_t func;
lua_lock(L);
api_checknelems(L, nargs+1);
checkresults(L, nargs, nresults);
if (errfunc == 0)
func = 0;
else {
StkId o = index2adr(L, errfunc);
api_checkvalidindex(L, o);
func = savestack(L, o);
}
c.func = L->top - (nargs+1); /* function to be called */
c.nresults = nresults;
status = luaD_pcall(L, f_call, &c, savestack(L, c.func), func);
adjustresults(L, nresults);
lua_unlock(L);
//return status;
return 0; //
//RETORNAMOS 0 POR LO QUE NO SE MOSTRARA NINGUNA VENTANA DE ERROR, PCALL SIEMPRE DEVUELVE 0!!!!!!!!!!!!!!!!!!!!!
}
Aqui te lo dejo ya compilado con vs2013
- HIDE: ON
- Hidebb Message Hidden Description
Si cambiais la dll de vuestro proyecto por esta ya no apareceran mas errores, pero no se que complicaciones podria dar esto en otros aspectos y aplicaciones mas complejas con componentes que usen pcall y necesiten obtener un retorno de error... haced vuestras pruebas
En cuanto a seguridad yo tengo mis propios sistemas para ocultar el codigo que desee, tablas sqlite y cosas asi, pero claro, no puedo desvelar mis metodos, aunque puedo decir que todo lo hago con una mezcla de cifrados pgp para encriptar con claves publicas, privadas y alteradores y un sistema muy ingenioso para generar la contraseña publica mediante un algoritmo privado de colocacion de funciones del programa que no tienen nada que ver, pero que ese propio codigo es un hash en si mismo, y que no puede reproducirse externamente intentando emular el mismo entorno o codigo.