Cliente
#1

Hola, quisiera saber los pasos para crear un cliente, solamente quiero lo bбsico:
- Para jugar el servidor es necesario dicho cliente.
- Que el cliente detecte el archivo d3d9.dll de la carpeta del GTA SA, si es distinto el peso al archivo original, que no entre al servidor si su peso original es cambiado.

Sуlo eso, muchas gracias.
Reply
#2

creo que te puedes basar en esto?

https://sampforum.blast.hk/showthread.php?tid=449430
Reply
#3

Segъn el autor:

" sergios:

Este mйtodo esta obsoleto lo hice hace bastante tiempo y no es practico, no recomiendo su uso.Tengo un proyecto en C++ utilizando sockets y aplicando ingenierнa inversa en algunos complementos de SAMP que si que merece la pena, en un futuro lo publicare. "
Reply
#4

pues el es bastante bueno en eso, y no he visto a mas que sepan tanto de ese tema u.u habrб que esperar o que salga otro que sepa tanto como el xD
Reply
#5

Bien, ojalб alguien me pueda dar un asesoramiento o como crear йsto, lo colocarнa en los crйditos internos y por comandos de mi servidor.
Reply
#6

Parte aprendiendo C++.
Reply
#7

no sй si te sirva esto, es un cуdigo publicado por Leonardo (ex programador de Gamerol)

Код:
_chdir("C:\\Archivos de programa\\Rockstar Games\\GTA San Andreas"); // No es necesario si el launcher estб en el directorio del GTA.

PROCESS_INFORMATION pi;
STARTUPINFO si;

memset(&pi, 0, sizeof(pi));
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);

if(CreateProcess("gta_sa.exe", "-c -n Leonardo_Almeida -h 127.0.0.1 -p 7777", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
{
   HANDLE process = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, FALSE, pi.dwProcessId);
   if(process)
   {
      LPVOID LoadLibAddr = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
      LPVOID RemoteString = (LPVOID)VirtualAllocEx(process, NULL, strlen("samp.dll"), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);

      WriteProcessMemory(process, RemoteString, "samp.dll", strlen("samp.dll"), NULL);
      CreateRemoteThread(process, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddr, (LPVOID)RemoteString, NULL, NULL);   
      CloseHandle(process);
   }
}
Reply
#8

Necesitaras varias cosas:

1є. Conocimiento de un lenguaje a travйs del cual programar dicho cliente ( Yo lo hice a travйs de c++).
2є. Crear 2 archivos ( El cliente y el servidor ).
3є. Si lo que deseas es que se detecte algunos archivos tendrбs que crear una funciуn que lo realice o simplemente buscar por internet.
Reply
#9

pawn Код:
#include <boost/filesystem.hpp>

bool fexists(char *file)
{
    if(boost::filesystem::exists(file))
    {
        return true;       
    } else return false;
    return ;
}
Eso te sirve para comprobar si existe un determinado archivo, usй la libreria boost.
Reply
#10

Es simple debes utilizar sockets y verificar si el jugador esta conectado al servidor o no, respecto al DirectX 9 recuerde que no es necesario tener esta libreria dinamica en el directorio del GTA SA ya que cuando es instalada esta libreria se aloja en el directorio del windows.

Hay muchas maneras de verificar si este archivo existe, puede utilizar _access y si devuelve -1 es porque no existe, tambien puede intentar abrir el archivo y si falla es que no existe. Si utiliza las librerias boost es mбs sencillo aъn simplemente utilice la libreria filesystem y busque la funciуn exist.

PD: Para aquellas personas que dicen "es obligatorio implementar ingenieria inversa" ya les digo que no es obligatorio usted puede crear su propio launcher y que sus librerias dinamicas o ejecutables se carguen junto al GTA SA, claro que si vas a modificar el juego ya es obligatorio la ingenieria inversa.

EDIT:

Quote:
Originally Posted by JustBored
Посмотреть сообщение
pawn Код:
#include <boost/filesystem.hpp>

bool fexists(char *file)
{
    if(boost::filesystem::exists(file))
    {
        return true;       
    } else return false;
    return ;
}
Eso te sirve para comprobar si existe un determinado archivo, usй la libreria boost.
їPara quй hacer esto si ya la funciуn del namespace filesystem devuelve true/false?

Un saludo.
Reply
#11

Actualmente no se nada de C++, pero si se programar en pawn (regular/avanzado), tal vez alguien me podrнa dar una serie de pasos por MP o acб sobre lo que necesito, que detecte al hack del ****** u otros y que se necesite cierto cliente para entrar al servidor, gracias.
Reply
#12

Revivo.
Reply
#13

Quote:
Originally Posted by LatinZ
View Post
Actualmente no se nada de C++, pero si se programar en pawn (regular/avanzado), tal vez alguien me podrнa dar una serie de pasos por MP o acб sobre lo que necesito, que detecte al hack del ****** u otros y que se necesite cierto cliente para entrar al servidor, gracias.
Aprende C++ y despuйs enfocate en algo como un cliente.
Reply
#14

No se ni por donde empezar, necesito un tutorial o una orientacion para empezar a aprender C++...
Reply
#15

Quote:
Originally Posted by EduGTA
View Post
Se hace con memory hacking, es algo que desde mi punto de vista es MUY avanzado.

Ademбs, el memory hacking estб prohibido
Edugta's comment.
Reply
#16

Quote:
Originally Posted by LatinZ
View Post
No se ni por donde empezar, necesito un tutorial o una orientacion para empezar a aprender C++...
http://lmgtfy.com/?q=C%2B%2B+tutorial
Reply
#17

Que risa, de todas formas gracias por la ayuda o_o.
Reply
#18

http://lmgtfy.com/?q=no+se+buscar+en+google
Reply
#19

Todo eso de detectar archivos no sirve de nada. Lo mejor serнa buscar las librerнas cargadas y hacer una comprobaciуn del fabricante del archivo. Bueno, eso serнa hasta que los desarrolladores de estos hacks clonen el nombre. No es muy difнcil y de hecho hay algunas funciones de Windows para hacer tal cosa
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)