11/06/2015, 01:31 AM
Seguro que la mayoria sabe que hookeando Sys_Error() pueden obtener algunos errores de porque crashea el servidor. Pero el engine tiene otra funcion que hace casi lo mismo y esa es Host_Error() que se puede hookear usando orpheu o okapi.
Host_Error
Con eso pueden obtener todo los errores controlados por el cual crashea el HLDS. Obviamente quedan fuera los crash que son por violaciones de acceso en memoria y etc...
Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <orpheu>
new const crash_log[] = "hlds_crash.log"
public plugin_precache()
{
register_forward(FM_Sys_Error, "fw_Sys_Error")
OrpheuRegisterHook(OrpheuGetFunction("Host_Error"), "fw_Host_Error")
}
public fw_Sys_Error(const error[])
{
log_to_file(crash_log, "Sys_Error: [%s]", error)
}
public fw_Host_Error(const error[])
{
log_to_file(crash_log, "Host_Error: [%s]", error)
}
Host_Error
Código:
{
"name" : "Host_Error",
"library" : "engine",
"arguments" :
[
{
"type" : "char *"
}
],
"identifiers" :
[
{
"os" : "windows",
"value" : [0x55,0x8B,0xEC,0x81,0xEC,0x00,0x04,0x00,0x00,0xA1,"*","*","*","*",0x85,0xC0,0x74,0x0D,0x68,"*","*","*","*",0xE8,"*","*","*","*",0x83,0xC4,0x04,0xC7]
},
{
"os" : "linux",
"value" : "Host_Error"
}
]
}
Con eso pueden obtener todo los errores controlados por el cual crashea el HLDS. Obviamente quedan fuera los crash que son por violaciones de acceso en memoria y etc...