02/11/2018, 09:12 PM (Última modificación: 02/11/2018, 10:31 PM por Cr3470r.)
Descripción:
El SpeedHack es un tipo de Cheat, el cual, mediante la alteración de funciones del juego o del sistema, permite que nuestro Cliente funcione más rápido que de lo normal, de ésta manera se nos permite movernos más rápido, disparar más rápido, recargar más rápido, y cualquier otro tipo de acción dentro del juego.
En otras palabras, un SpeedHack no cambia la velocidad de un jugador, sino la velocidad de funcionamiento del Cliente.
Tipos de SpeedHacks & sus códigos:
Mucho para explicar no hay, simplemente se hookean funciones del juego (tales como las que posean delays o timestamps), y se aumenta su valor, de esta manera, el juego nos funciona mucho más rápido que de lo normal, dependiendo el valor que asignemos.
Este es uno de los más utilizados, no sólo en el engine del HL sino en otros juegos (como por ejemplo el MU Online, mediante el programa xSpeedPro), lo que hace es hookear una función del sistema, aumentar el valor de los parámetros y listo, ya todo funciona más rápido ...
El código es el siguiente:
Código PHP:
//Esto se hace mediante el hookeo a una función de kernel32.dll //Esto funciona para CUALQUIER juego que haga uso de esta función...
BOOL WINAPI Hook_QueryPerformanceCounter ( LARGE_INTEGER *lpPerformanceCount ) //Dentro del hook de la función QueryPerformanceCounter en Kernel32.dll ... { LONGLONG newvalue; BOOL ret;
Este método es el mismo que el anterior, pero con la diferencia que en vez de hookear las funciones del sistema, se hookean las funciones del engine ...
El código es el siguiente:
Código PHP:
//Esto se hace mediante el hookeo a una función de client.dll //Esto funciona para CUALQUIER render del juego, tanto OpenGL, como Direct3D o Software... //Definimos el puntero en donde se setea el delay de envíos de paquetes de datos ... double *globalTime = (double*) * (PDWORD) ( (DWORD) pEngfuncs->pNetAPI->SendRequest + 0x51 );
void Hook_CL_CreateMove ( float frametime, struct usercmd_s *usercmd, int active ) //Dentro del hook de la función CL_CreateMove del cliente ... { *globalTime += frametime * 3 / 5; //Multiplicamos el delay por "3", si se desea más velocidad, se aumenta el valor ... }
Métodos de Anti-SpeedHacks y sus códigos:
Primero y principal, necesitamos encontrar entre todos un método que funcione correctamente, prosiguiendo ...
Los de Valve fueron los primeros en combatir a los SpeedHackers, para eso crearon una cvar llamada "clockwindow", y lo que hace es chequear el time de los comandos que pasan a través de CmdStart y calcular si hay una diferencia con respecto uno del otro, si se encuentra una diferencia, se bloquea temporalmente al jugador.
Ventajas: Detecta perfectamente bien cualquier factor de SpeedHack (2, 3, 4, 5, etc). Problemas: Detecta a jugadores con lag, loss, warp, o si el server se lagea también detecta incorrectamente.
Nota adicional: El Anti-Cheat HLGuard, en su versión 1.25 también implementó este método, pero solamente se checkea cuando un jugador se mueve, dispara o recarga, pero tenía los mismos problemas, detectaba incorrectamente por los problemas ya mencionados.
public client_putinserver ( id ) { gF_ConnectTime[id] = halflife_time ( ) //Obtener tiempo de conexión ... gF_CmdTime[id] = gF_ConnectTime[id] - gF_ConnectTime[id] //Computar los tiempos del comando ... }
public client_disconnect ( id ) { gF_ConnectTime[id] = gF_CmdTime[id] = gF_SpeedHack[id] = 0.0 //Reset ... }
if ( Difference > Limit ) //Si la diferencia exedió el límite ... { gF_IgnoreCmdTime[id] = Limit + GameTime //Tiempo que se va a bloquear el movimiento del jugador ... gF_CmdTime[id] = GameTime - gF_ConnectTime[id] }
Luego en alliedmods muchos usuarios también decidieron probar suerte y crearon otro método para detectar a SpeedHackers, el cual se basa en checkear cada "x" tiempo, la distancia que hace un jugador de un lugar a otro, y si excede un límite, el jugador es detectado como SpeedHacker.
Ventajas: Detecta cualquier factor de SpeedHack mayor a 4. Problemas: Detecta a jugadores con lag, loss, warp, si el server se lagea también detecta incorrectamente, si alguien tiene un plugin para transportar al jugador también detecta incorrectamente, si el jugador es empujado por un vehículo también, o si la velocidad del jugador es cambiada mediante un plugin también ... MUCHOS problemas éste método ...
Código PHP:
#include <amxmodx> #include <fakemeta>
public plugin_init ( ) { set_task ( 0.5, "CheckSpeedHack", 123, "", 0, "b", 0 ) //Seteamos un timer ... }
public CheckSpeedHack ( ) { static Players[32], iNum, id, i
get_players ( Players, iNum, "ac" ) //Obtenemos players vivos que no sean bots ...
pev ( id, pev_origin, Origin[id] ) //Obtener posición actual ...
if ( get_distance_f ( Origin[id], OldOrigin[id] ) >= 240.0 ) //Si hay una distancia mayor de 240.0 entre la posición anterior y la nueva ... { //SpeedHack detected ... }
Y por último, el último método que salió de alliedmods fué la de chequear la cantidad de "CmdStarts" que un jugador hace, y si supera un límite, es detectado como SpeedHacker.
Ventajas: Detecta cualquier factor de SpeedHack mayor a 5. Problemas: Detecta a jugadores con lag, loss, warp, si el server se lagea también detecta incorrectamente, o si alguien tiene más de 100 fps también ...
Nota: @Neeeeeeeeeel.- avisame si hay algo que no va dentro del post ...
Si alguien no comprende alguna parte de algún código, siéntase libre de preguntar ...
Cualquiera que quiera aportar nuevas ideas a ésto, ¡va a ser bienvenido! ...
Y por último, vuelvo a repetirlo, necesitamos encontrar entre todos un método que funcione correctamente.
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
Mhm yo tengo un método en Netchan_transmit, que bloquea algunos CMDS, y en Delta_setfieldcheck, que puedo quitar algunos CMDS y dejar los que sirven para caminar y te re kbio ameo, seteo la funcion de msg_writecmd en menos tiempo te quito cmds y lesto.
02/11/2018, 09:40 PM (Última modificación: 02/11/2018, 09:41 PM por Cr3470r.)
(02/11/2018, 09:32 PM)Pan Bimbo (? escribió: Mhm yo tengo un método en Netchan_transmit, que bloquea algunos CMDS, y en Delta_setfieldcheck, que puedo quitar algunos CMDS y dejar los que sirven para caminar y te re kbio ameo, seteo la funcion de msg_writecmd en menos tiempo te quito cmds y lesto.
El del Injected lo tenes bypasseado? ...
Acordate que especifiqué varias veces que ninguno de éstos métodos funcionan correctamente ...
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
02/11/2018, 09:45 PM (Última modificación: 02/11/2018, 09:46 PM por Destro.)
Buena info, el sxe usa el primer metodo pero con chequeo de ping no ?
Entonces cuando al servidor le están dando con tremendo ddos, el efecto de lag que vuelve al jugador para atrás es gracias al anti-speedhack de valve ?
(02/11/2018, 09:45 PM)Destro escribió: Buena info, el sxe usa el primer metodo pero con chequeo de ping no ?
Exacto, utiliza el primer método, pero con un filtraje de ping (supongo).
La idea es cambiar el factor de detención de SpeedHack, basándose en el ping del jugador, de esa manera, si tenés ping alto, el factor cambia a un cierto valor, cosa que no seas frenado.
Pero andá a saber de qué manera computa esto ...
(02/11/2018, 09:45 PM)Destro escribió: Entonces cuando al servidor le están dando con tremendo ddos, el efecto de lag que vuelve al jugador para atrás es gracias al anti-speedhack de valve ?
Es por el Anti-Speed de Valve y por el del Injected, ya que los 2 funcionan de la misma manera ...
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
(02/11/2018, 09:32 PM)Pan Bimbo (? escribió: Mhm yo tengo un método en Netchan_transmit, que bloquea algunos CMDS, y en Delta_setfieldcheck, que puedo quitar algunos CMDS y dejar los que sirven para caminar y te re kbio ameo, seteo la funcion de msg_writecmd en menos tiempo te quito cmds y lesto.
El del Injected lo tenes bypasseado? ...
Acordate que especifiqué varias veces que ninguno de éstos métodos funcionan correctamente ...
Capo tas hablando con janonimu, lo tengo bypasseado crack, metes 4 fps, le reducis la velocidad al cmds por segundo y vas volando a las chapas, y si ya lo testee.
(Velocidad a los cmds x segundo es algo que no te habia mostrado porq sos alto gil, tengo 50 metodos nuevos y nuevas cosas, solo que sos re avaro y mesquino asique no te pase nada)
(06/11/2018, 06:13 PM)Eternity escribió: Una pregunta. Sobre el tema del ping, no se puede obtener el ping del player y de ahí ir viendo?
Ya lo intenté, pero no hubo chances ...
Hay veces que un jugador está warpeado (pérdida de paquetes de datos) y hace el mismo efecto como si tuviera ping alto (delay entre la conexión del servidor y el cliente, pero no hay pérdida de paquetes de datos, sino que tardan en llegar) ...
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
No es como si tendrías que kickearlo o banearlo al detectar speedhack, cosa que es fatal si tenes falsos positivos, el sxe lo traba, en el UAC que usas ?
(06/11/2018, 10:31 PM)Destro escribió: No es como si tendrías que kickearlo o banearlo al detectar speedhack, cosa que es fatal si tenes falsos positivos, el sxe lo traba, en el UAC que usas ?
No tengo Anti-SpeedHack, no encontré ninguna fórmula como para computar el ping respecto a los paquetes de datos y frenar todo correctamente ...
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
El ping depende de todas las mierdas que tengas en el medio entre el cliente y el servidor, pueden ser 2, 10 o 20 saltos nunca sabés. Internet no garantiza QoS justamente por eso.
Entonces, no habra manera, bueno, manera sí, pero no es exactitud y da falsos positivos. Gracias, una pregunta. Calculo el ping del sv + calcular ping del player. Entonces, si ping del sv y ping del player (que no es exacto), supera los 500. Se podrá desactivar el Anti-Speed Hack?
No existe algo como "ping del sv" y "ping del player", el ping es el tiempo promedio que tardan en llegar los paquetes desde el cliente (player) al server.
(06/11/2018, 10:31 PM)Destro escribió: No es como si tendrías que kickearlo o banearlo al detectar speedhack, cosa que es fatal si tenes falsos positivos, el sxe lo traba, en el UAC que usas ?
No tengo Anti-SpeedHack, no encontré ninguna fórmula como para computar el ping respecto a los paquetes de datos y frenar todo correctamente ...
(06/11/2018, 10:31 PM)Destro escribió: No es como si tendrías que kickearlo o banearlo al detectar speedhack, cosa que es fatal si tenes falsos positivos, el sxe lo traba, en el UAC que usas ?
No tengo Anti-SpeedHack, no encontré ninguna fórmula como para computar el ping respecto a los paquetes de datos y frenar todo correctamente ...
¿Y no miraste la forma que hace el sXe?
Es de lo poco que tiene que sirve de algo.
(07/11/2018, 05:31 PM)Neeeeeeeeeel.- escribió: No contiene el código fuente, por ende no nos sirve para nada.
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
06/12/2018, 10:54 AM (Última modificación: 06/12/2018, 10:56 AM por Neeeeeeeeeel.-. Edited 2 times in total.)
(05/12/2018, 11:34 PM)4evergaming escribió: Les puedo brindar un servidor al Team Anti-Cheat si lo requieren.
Está muy buena la idea de empezar a independizarse de Injected
No es la sección adecuada para hacerlo. Este tipo de cosas me las pueden mandar por mp. De todas formas no lo veo necesario, pero gracias.
Borré todos los mensajes, dejen de hacer off. @totopizza si tenés algo que decir hace un post en offtopic o mandalo por mp. Last warning.
/******************************************************************************** * AMX Mod X Script. * * Speed Hack Detector * Formatright (C) 2009 OT * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. * **********************************************************************************/
/* [Changelog] - 3.0 - changed the plugin to block speedhack, - 2.0 - fixed everything, perfected the detection method, fixed the server lag issue that would ban players! Fixed cvar detections and added clockwindow detection. - 1.6 - fixed a problem where the plugin would not detect the developer cvar - 1.5 - added cvar for limit, improved logging - 1.4 - added developer cvar kick - 1.3 - improved logging, increaced tolerance - 1.2 - added more cvars for customization - 1.1 - added one more option to punishtype cvar - 1.0 - initial release */
/* [Credits] Empower - posted all the false bans, suggested improvements, server lag false detection problem, clockwindow information Connor - info about corectly detecting developer cvar */
new gBS_cl_alive, gBS_cl_bot, gBS_cl_cheats new gPV_enable, gCV_enable, gPV_limit, gCV_limit, gPV_loss, gCV_loss new Float:gF_CountStart[gC_MaxSlots], gI_Counter[gC_MaxSlots], gI_Loss[gC_MaxSlots]
public plugin_init() { register_plugin("Block Speed Hack", "3.0", "OT & Empower")
public client_disconnect(id) { del_alive_property(id) del_bot_property(id) }
public tsk_ChacheCvars(id) { // The !! means that we want or 0 or 1 not 34183 values gCV_enable = !!get_pcvar_num(gPV_enable) gCV_limit = get_pcvar_num(gPV_limit) gCV_loss = get_pcvar_num(gPV_loss)
return PLUGIN_CONTINUE }
public tsk_GetLoss() { new players[32], num, id, ping get_players(players, num)
for (new i=0;i<num;i++) { id = players[i] get_user_ping(id, ping, gI_Loss[id-1]) } }
public pfw_CmdStart(id, pUC, seed) { if (!gCV_enable) return FMRES_IGNORED
if (!has_alive_property(id) || has_bot_property(id)) return FMRES_IGNORED
/******************************************************************************** * AMX Mod X Script. * * Speed Hack Detector * Formatright (C) 2009 OT * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. * **********************************************************************************/
/* [Changelog] - 3.0 - changed the plugin to block speedhack, - 2.0 - fixed everything, perfected the detection method, fixed the server lag issue that would ban players! Fixed cvar detections and added clockwindow detection. - 1.6 - fixed a problem where the plugin would not detect the developer cvar - 1.5 - added cvar for limit, improved logging - 1.4 - added developer cvar kick - 1.3 - improved logging, increaced tolerance - 1.2 - added more cvars for customization - 1.1 - added one more option to punishtype cvar - 1.0 - initial release */
/* [Credits] Empower - posted all the false bans, suggested improvements, server lag false detection problem, clockwindow information Connor - info about corectly detecting developer cvar */
new gBS_cl_alive, gBS_cl_bot, gBS_cl_cheats new gPV_enable, gCV_enable, gPV_limit, gCV_limit, gPV_loss, gCV_loss new Float:gF_CountStart[gC_MaxSlots], gI_Counter[gC_MaxSlots], gI_Loss[gC_MaxSlots]
public plugin_init() { register_plugin("Block Speed Hack", "3.0", "OT & Empower")
public client_disconnect(id) { del_alive_property(id) del_bot_property(id) }
public tsk_ChacheCvars(id) { // The !! means that we want or 0 or 1 not 34183 values gCV_enable = !!get_pcvar_num(gPV_enable) gCV_limit = get_pcvar_num(gPV_limit) gCV_loss = get_pcvar_num(gPV_loss)
return PLUGIN_CONTINUE }
public tsk_GetLoss() { new players[32], num, id, ping get_players(players, num)
for (new i=0;i<num;i++) { id = players[i] get_user_ping(id, ping, gI_Loss[id-1]) } }
public pfw_CmdStart(id, pUC, seed) { if (!gCV_enable) return FMRES_IGNORED
if (!has_alive_property(id) || has_bot_property(id)) return FMRES_IGNORED
Esta desaprobado hasta la version 2.0 pero de donde sale la 3.0?
(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.
(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Es como el 3er método que expliqué en el thread, si tengo más de 100 FPS me estarías trabando el juego sin motivo alguno ... y por otro lado, suponiendo que le aumentás el límite a 500 FPS, entonces yo puedo usar un SpeedHack que suba el procesamiento de CmdStarts hasta 480 y listo (osea, cambiar la velocidad del speed y ya) ...
Hay que hacer un anti-speed con el primer método y alguna forma de computar el ping como el Injected tiene echo ...