Ir para conteúdo
🥇 [Exclusivo] Seja um Membro VIP EXTREME! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Posts Recomendados

Então galera , já possuo essa conta no wc a bastante tempo , cerca de 5~6 anos , nunca tive motivos para perguntar alguma coisa , mas agora , realmente preciso da ajuda de quem entende do assunto , bom , a parada é o seguinte , eu tenho essas dll's ,

 

type

PParams = ^TParams;

TParams = packed record

Packet: array [0..100] of byte;

Param1,Param2,Param3: DWord;

Param4: array [1..100] of widechar;

end;

 

const

PW_BASE_ADDRESS = $009C0E6C;

PW_GAMERUN_ADDR = $009C1514;

 

 

----------------------------------------------------------------------

 

 

procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer;

aParamsSize: DWord);

var

hThread: THandle;

lpNumberOfBytes: DWord;

ThreadAddr, ParamAddr: Pointer;

begin

if ProcessID<>0 then

begin

// ---- Выделяем место в памяти процесса, и записываем туда нашу функцию

ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);

WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);

 

// ---- Также запишем параметры к ней

ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);

WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

 

// ---- Создаем поток, в котором все это будет выполняться.

hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);

 

// ---- Ожидаем завершения функции

WaitForSingleObject(hThread, INFINITE);

 

// ---- подчищаем за собой

CloseHandle(hThread);

VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);

VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);

end

end;

 

 

------------------------------------------------------------------------------------------------------------------------

 

 

 

procedure WalkCall(aPParams:pParams);Stdcall;

var CallAddress1,CallAddress2,CallAddress3:pointer;

x,y,z:single;

flying:DWORD;

begin

CallAddress1:=Pointer($00468070);

CallAddress2:=Pointer($0046BCB0);

CallAddress3:=Pointer($00468470);

x:=aPParams^.Param4;

y:=aPParams^.Param5;

z:=aPParams^.Param6;

flying:=aPParams^.Param1;

asm

pushad

mov eax, dword ptr [PW_GAMERUN_ADDR]

mov esi, dword ptr [eax+$20]

mov ecx, dword ptr [esi+$FE0]

push 1

call CallAddress1

mov edi, eax

lea eax, dword ptr [esp+$0C]

push eax

push flying

mov ecx, edi

call CallAddress2

mov ecx, dword ptr [esi+$FE0]

push 0

push 1

push edi

push 1

call CallAddress3

mov eax, dword ptr [PW_GAMERUN_ADDR]

mov eax, dword ptr [eax+$20]

mov eax, dword ptr [eax+$FE0]

mov eax, dword ptr [eax+$30]

mov ecx, dword ptr [eax+$4]

mov eax, x

mov dword ptr[ecx+$20], eax

mov eax, z

mov dword ptr[ecx+$24], eax

mov eax, y

mov dword ptr[ecx+$28], eax

popad

end;

end;

 

procedure Walk(x,y,z:single);

var aParams: TParams;

begin

ReadProcessMemory(aHandle,ptr(BaseWalkMode),@WalkMode,1,readwrite); //BaseWalkMode = GA +20 +61C

if WalkMode = 0 then aParams.Param1:=0 else aParams.Param1:=1;

aParams.Param3:=x;

aParams.Param4:=y;

aParams.Param5:=z;

InjectFunc(aHandle,@WalkCall,@aParams,SizeOf(aParams));

end;

 

 

------------------------------------------------------------------------------------------------------------------

 

 

Minha dúvida é nessa ultima DLL , tenho tudo pronto , etc.. mas não sei oq boto em seguida , tenho os packets , mas acredito que pra essa dll , nao se use packet , pois uso packet em outra dll , mas nao consigo fazer o personagem andar com packets , pois além do codigo em bytes ser muito grande , ele nao anda , (não sei porque , se alguem souber , avise-me , pls ) , então queria usar essa dll ''Walk'' aí , mas nao sei como proseguir , se alguem puder , dar uma dica pelo menos , o jogo que estou tentando criar o bot se chama ''Perfect World'' , também queria saber sobre essa parte da dll ,

mov eax, dword ptr [PW_GAMERUN_ADDR]

mov eax, dword ptr [eax+$20]

mov eax, dword ptr [eax+$FE0]

mov eax, dword ptr [eax+$30]

mov ecx, dword ptr [eax+$4]

mov eax, x

mov dword ptr[ecx+$20], eax

mov eax, z

mov dword ptr[ecx+$24], eax

mov eax, y

mov dword ptr[ecx+$28], eax

 

 

se nao me engano , é em assembly , se alguém pudesse explicar um pouco sobre isso também , ficaria grato , enfim , minha dúvida principal é como prosseguir com a ultima dll , e caso alguém saiba como fazer um personagem andar com Packets , é só dizer , desde já , O B R I G A D O !!!

Link para o comentário
https://www.webcheats.com.br/topic/2241013-como-adicionar-coordenadas-no-delphi/
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.