Mejores posteadores
Sozinho (312) | ||||
Censurado~ (154) | ||||
emarp10 (139) | ||||
MaxiS (106) | ||||
Super-A17 (85) | ||||
Zurditox (79) | ||||
MuThor (42) | ||||
YUTIEL (38) | ||||
browser (28) | ||||
ADM-Olimpo (19) |
Temas más activos
Argumentos más vistos
Protección contra el Trade Hack
La extension que te ofresemos para Postear :: GamingSHE: FPS / TPS / RPG :: Mu Online :: Ayuda y Creación de MU :: programacion/utilidades
Página 1 de 1.
Protección contra el Trade Hack
Esta es una posible solución (protección) contra el Trade Hack.
Salida en lugar de bloquear los paquetes utilizados por muchos WPE Pro, comprueba si el usuario ya está abierto al comercio (en caso de una nueva solicitud de un oficio se solicita) y evita que el proceso de GameServer esta acción, lo que impide el corte del Comercio.
Obviamente, hay otras maneras, pero esto es una sencilla y muy útil.
El código de abajo, se hizo para servidores: 0.96.40, o como muchos llaman: 97D, pero es compatible con otras versiones, sin embargo, el código debe ser ajustado de acuerdo a la versión del servidor (Tomando los valores de estructuras PMSG_TRADE_REQUEST, PMSG_TRADE_RESPONSE si los valores son diferentes funciones y la solicitud del comercio reanalizar y la respuesta, para asegurarse de que no tiene argumentos nuevos [si usted tiene, hay que añadirlas en el papel], y las compensaciones por el gancho).
Texto original:
Protección:
Trade.h:
Trade.cpp:
Hook:
Defines:
Credits:
Salida en lugar de bloquear los paquetes utilizados por muchos WPE Pro, comprueba si el usuario ya está abierto al comercio (en caso de una nueva solicitud de un oficio se solicita) y evita que el proceso de GameServer esta acción, lo que impide el corte del Comercio.
Obviamente, hay otras maneras, pero esto es una sencilla y muy útil.
El código de abajo, se hizo para servidores: 0.96.40, o como muchos llaman: 97D, pero es compatible con otras versiones, sin embargo, el código debe ser ajustado de acuerdo a la versión del servidor (Tomando los valores de estructuras PMSG_TRADE_REQUEST, PMSG_TRADE_RESPONSE si los valores son diferentes funciones y la solicitud del comercio reanalizar y la respuesta, para asegurarse de que no tiene argumentos nuevos [si usted tiene, hay que añadirlas en el papel], y las compensaciones por el gancho).
Texto original:
- Spoiler:
- Está é uma possível solução (proteção), contra Trade Hack.
Ao invez de bloquear diversos packets usados pelo WPE Pro, ele verifica se o usuário já está com o trade aberto (caso um novo pedido de trade seja solicitado) e impede que o GameServer processe essa ação, assim, impedindo o Trade Hack.
Óbviamente, existe outros modos, mas esse é um método simples e muito útil.
O código abaixo, foi feito para servidores: 0.96.40, ou como muitos chamam: 97d, mas, o mesmo é compatível com outras versões, porém, o código terá de ser reajustado de acordo com a versão do servidor (Pegar os valores das structs PMSG_TRADE_REQUEST, PMSG_TRADE_RESPONSE caso os valores sejam diferentes e reanalizar as funções solicitação de trade e resposta, para ter certeza que não possui novos argumentos [se possuir, basta adiciona-los na função], e os devidos offsets para hook).
Protección:
Trade.h:
- Spoiler:
- #pragma once
#include <Windows.h>
#include <stdio.h>
namespace Network
{
struct PMSG_TRADE_REQUEST
{
PBMSG_HEAD h;
unsigned char NumberH;
unsigned char NumberL;
};
struct PMSG_TRADE_RESPONSE
{
PBMSG_HEAD h;
unsigned char Response;
unsigned char Id[10];
unsigned short Level;
int GuildNumber;
};
class Trade
{
public:
static void Request(PMSG_TRADE_REQUEST* lpMsg, DWORD dwIndex);
static void Response(PMSG_TRADE_RESPONSE* lpMsg, DWORD dwIndex);
};
}
Trade.cpp:
- Spoiler:
- #include "Trade.h"
namespace Network
{
void Trade::Request(PMSG_TRADE_REQUEST* lpMsg, DWORD dwIndex)
{
WORD szTarget = (WORD)Object[dwIndex].TargetNumber;
if(Object[dwIndex].m_IfState.use == 1 && Object[dwIndex].m_IfState.type == 1 && Object[dwIndex].pTransaction == 1)
{
if(Object[szTarget].Type == 1)
{
return;
}
}
ServerRequestTrade(lpMsg, dwIndex);
}
void Trade::Response(PMSG_TRADE_RESPONSE* lpMsg, DWORD dwIndex)
{
WORD szTarget = (WORD)Object[dwIndex].TargetNumber;
if(Object[dwIndex].m_IfState.use == 1 && Object[dwIndex].m_IfState.type == 1 && Object[dwIndex].pTransaction == 1)
{
if(Object[szTarget].Type == 1)
{
return;
}
}
ServerResponseTrade(lpMsg, dwIndex);
}
}
Hook:
- Spoiler:
- Hook((DWORD)&Network::Trade::Request, 0x402216);
Hook((DWORD)&Network::Trade::Response, 0x4018E3);
Defines:
- Spoiler:
- #define ServerRequestTrade ((void(*)(Network::PMSG_TRADE_REQUEST*, DWORD)) 0x41D3B0)
#define ServerResponseTrade ((void(*)(Network::PMSG_TRADE_RESPONSE*, DWORD)) 0x41D990)
Credits:
browser- 28
82
16
Fecha de inscripción : 03/06/2012
La extension que te ofresemos para Postear :: GamingSHE: FPS / TPS / RPG :: Mu Online :: Ayuda y Creación de MU :: programacion/utilidades
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.