Você não é registrado, por favor registre-se para ter acesso ao conteúdo completo.
Caso seja registrado, efetue login.
Esqueceu sua senha? Clique aqui
Recomendamos o uso do Mozilla Firefox para uma melhor visualização.    


Início Postados Hoje Marcar Fóruns Como Lidos Álbums Banidos SE Team Medalhas
Voltar   Secret Experience > Private Server & MMORPG - Administre Um > MU Online > [MU] Administrador > [MU | Admin] Tutoriais > [MU | Admin] Tutoriais Diversos > [MU] Server
Registrar Loteria VIPStaff SERegras do fórum Comunidade Arcade Postados Hoje Pesquisar Experience
   

Secret Experience.NET   Secret Experience Corporation - Welcome To The Real World
     Anúncios SE

Resposta
 
LinkBack Ferramentas do Tópico Modos de Exibição
Antigo 25-03-2010, 08:45 PM   #1 (permalink)
Amigo SE
 
Avatar de NecroBoy
 
Registrado em: Nov 2009
Localização: SMA Vip
Posts: 1,301
Agradeceu: 197
Agradecido 564 Vezes em 328 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Rate Designer: Moderado
Meu Estado:
Enviar mensagem via Windows Live Messenger para NecroBoy
Pontos: 10,817, Nível: 68
Pontos: 10,817, Nível: 68 Pontos: 10,817, Nível: 68 Pontos: 10,817, Nível: 68
Atividade: 99%
Atividade: 99% Atividade: 99% Atividade: 99%

Nome Real: David Junior

Inventório de NecroBoy Usuário possui 1x PS User Usuário possui 1x Milan Usuário possui 1x Adidas Red Usuário possui 1x Mu Coder

Post [TUTO] Criando Npc de Reset

Ao falar com o NPC Crossbow Guard irá ser resetado

Use um ASM Compiler, compile o arquivo e hook no GS
Funciona corretamente no GS v.1.00.16 do Endi, Luciano e SCF.

Citação:
.386
.Model flat , StdCall
Option CaseMap:none
;Includes
Include \masm32\include\windows.inc
Include \masm32\include\user32.inc
Include \masm32\include\kernel32.inc
Include \masm32\include\masm32.inc
IncludeLib \masm32\lib\user32.lib
IncludeLib \masm32\lib\kernel32.lib
IncludeLib \masm32\lib\masm32.lib

.Const

.Data
MessageOutPut DD 00500EE0H
NoMoneyMSG DB "É necessario ter 100.000 Zen para efetuar o reset!", 0
NoLevelMSG DB "É necessario estar acima do nível 350 para efetuar o reset!", 0
RelogMSG DB "Reset realizado, deslogue para finalizar o processo!", 0
.Data?

.Code

DllEntry Proc hInstDLL:HINSTANCE, reason : DWord, reserved1: DWord
Mov Eax, TRUE
Ret
DllEntry EndP

ResetNPC Proc
Local PlayerID : DWord
Local lpObj: DWord
Mov Eax, DWord Ptr Ss:[Ebp + 8] ;Eax recebe um valor. As variáveis são acessadas a patir de [ebp + 8], a 2ª é [ebp + 12] depois [ebp + 16] e assim por diante
Mov lpObj, Eax ;lpObj recebe o valor de Eax
Mov Edx, DWord Ptr Ds:[Eax] ;Edx recebe um valor
Mov PlayerID, Edx ;PlayerID recebe o valor de Edx
Mov Eax, lpObj
Mov Edx, DWord Ptr Ds:[Eax + 0A0H]
Cmp Edx, 15EH ;Compara o valor em Edx com 15EH, isso afetará somente aos flags. a comparação é assim Edx - 15EH
Jle NoLevel ;Faz um salto condicional para o label NoLevel, só salta se for menor ou igual <=
Jmp CheckMoney ;Salta para o rótulo CheckMoney
NoLevel:
Lea Edx, NoLevelMSG ;Carrega a variável a partir da pilha. Carrega o offset da posição de memória da variável NoLevelMSG
Push Edx ;Move para a pilha todos os argumentos antes da instrucão de chamada. copia de Edx
Mov Ecx,PlayerID ;Move o valor. Faz com que o registrador ECX passe a ter o mesmo valor que PlayerID. ECX:= PlayerID
Push Ecx
Call MessageOutPut ;Salta para MessageOutPut
Jmp Finish
CheckMoney:
Mov Eax, lpObj
Mov Ecx, DWord Ptr Ds:[Eax + 0B4H]
Cmp Ecx, 186A0H
Jle NoMoney
Jmp ReduceMoney
NoMoney:
Lea Eax, NoMoneyMSG
Push Eax
Mov Ecx, PlayerID
Push Ecx
Call MessageOutPut
Jmp Finish
ReduceMoney:
Mov Eax, lpObj
Mov Ecx, DWord Ptr Ds:[Eax + 0B4H]
Sub Ecx, 186A0H
Mov DWord Ptr Ds:[Eax + 0B4H], Ecx
Lea Edx, RelogMSG
Push Edx
Mov Ecx, PlayerID
Push Ecx
Call MessageOutPut
Finish:
Ret
ResetNPC EndP
End DllEntry
O reset só funciona com nível 350 e com 100,000 Zen para completar os requisitos do NPC de reset, mas você precisa reconectar em sua conta p/ finalizar o processo.

Pode efetuar o hook aqui:
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
00405AF6 $ /E9 75541400 JMP gameserv.NPCDeviasGuard
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
Esse é o offset referente ao NPC Crossbow Guard, porem se deseja por outro offset de NPC e faça a ligação (hook) corretamente.

Ao fazer o hook da dll, lembre-se de no final da sequencia deverá fazer o salto para a sequencia original o offset do NPC (JMP 00405AF6)

Obs.1: para usar outro NPC procure pelo qual deseja e faça o hook corretamente. Escolha um NPC vendedor (ShopX.txt por ex.: Shop3.txt referente a Lorencia crava)

Download dll: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]


Para compilar em DLL
Antes de compilar a DLL, é necessário criar um Modulo de Definição (Nome_DLL.def) que contem:
Citação:
LYBRARY NomeDaDLL
EXPORTS INILoad
1º. Instale o MASM32
2º. Vá no menu Iniciar ~> Executar ~> digite CMD e pressione Ok ou Enter e execute os seguintes comandos dentro da pasta Masm32\Bin\
ML /c /coff GReset.asm
Nesse passo será criado o arquivo GReset.obj
3º e depois execute:
Link /SUBSYSTEM:WINDOWS /DLL GReset.obj
E será criado o arquivo GReset.dll

Algumas explicações sobre o código:
LEA (Load Effective Address): ele é usado para carregar variáveis a partir da pilha. Calcula e carrega o endereço efetivo (offset dentro de um segmento provido) de um operando de origem e partes de um registrador de uso geral.
Ex.: Carrega o offset da posição de memória da variável LIST
Citação:
LEA BX, LIST
PUSH: Move para a pilha todos os argumentos antes da instrucão de chamada. copia de um registrador especifico, posição da memória, ou immediate para o topo da pilha. Esta instrução diminui o pointeiro da pilha em 2, 4 ou 8, dependendo do tamanho do operando, e então copia o operando para a posição da memória apontado por SS:rSP.
Ex.:
Citação:
Push Edx
Push Ecx
MOV: instrução que move valores. Permite deslocar valores entre endereços de memória ou entre registradores.
Ex.:
Faz com que o valor numérico 1995 seja colocado no registrador EAX. Seria o mesmo que dizer EAX:= 1995.
MOV EAX,1995

Faz com que o registrador EBX passe a ter o mesmo valor que EAX. Poderia ser compreendido como EBX:= EAX.
MOV ebx,eax

Faz com que EAX contenha o valor que está no endereço 1995.
MOV eax,[1995]

Faz com que EAX contenha o valor que está no endereço apontado pelo registrador EBX.
MOV eax,[ebx]

Registradores especiais, que não podem ser manipulados (diretamente):
- EAX: é o Acumulador, pois mantém os resultados das operações matemáticas;
- EBX: é o Base, pois ele é usado como ponteiro de uma string;
- ECX: é o Contador, pois o principal uso é em controlar loops
- EDX: é o registrador de Dados, pode conter um endereço que aponte para uma variável ou uma string.

CALL e RET: Ela salta para uma posiçäo especificada e quando a instruçäo RET for encontrada na sub-rotina a CPU retorna para CALL e executa a próxima instrução
Ex.:
CALL 1993
Chama a rotina no endereço 1993
CALL Ebx
Chama a rotina no endereço apontado por Ebx
CALL [Ebx]
Chama a rotina no endereço conteúdo Ebx

Salta para a subrotina ShowNumber e depois retorna para CALL ao encontrar RET
CALL ShowNumber
...
RET

JMP: essa instruçäo simplesmente salta para onde se quer. O operando da instruçäo JMP é um endereço na memória, mas, como usaremos sempre um compilador assembly, é necessário criar um "rotulo" (label) para onde o salto será efetuado. O compilador trata de calcular o endereço pra gente.
Ex.:
Citação:
JMP Aqui2
Aqui1:
JMP Aqui3
Aqui2:
JMP Aqui1
Aqui3:
CMP: é usada quando se quer comparar dois dados, afetando somente aos flags. Esta instruçäo faz a subtraçäo entre o operando mais a esquerda e o mais a direita, afetando somente os flags. Por exemplo, se os dois operandos tiverem valores iguais a subtraçäo dará valores iguais e o flag de ZERO será 1.
Ex.:
Citação:
CMP AL,1Fh será AL - 1Fh onde muda o valor da flag
JLE: é um salto condicional, onde o Salto só ocorre se menor ou igual <= sendo necessário criar um "rotulo" (label) para onde o salto será efetuado.
Ex.:
Citação:
JLE NoLevel
Esqueleto de uma DLL em ASM:

Citação:
.386
.Model flat, StdCall
Option CaseMap:none
;--------------------------------------------------------------
;Faz-se o "Include" a fim evitar definir C/macro
Include masm32includewindows.inc
Include masm32includeuser32.inc
Include masm32includekernel32.inc
Include masm32includemasm32.inc
IncludeLib masm32libuser32.lib
IncludeLib masm32libkernel32.lib
IncludeLib masm32libmasm32.lib

.Const
;---------------------------
;Constantes a declarar

.Data
;---------------------------
;Informação inicializada

.Data?
;-------------------------------
;Informação sem inicializar

.Code
DLLEntry Proc hInstDLL:HINSTANCE, reason: DWord, reserved1: DWord
Mov Eax, TRUE
Ret

;---------------------------------------------------
;Espaço para Proc (procedimentos/funções)

DLLEntry EndP
End DllEntry
Hook da DLL:
Encontrei 2 códigos:

Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
PUSH OFFSET_NOME_DLL
CALL [LoadlibraryA] (chamamos da LoadLibraryA) DWORD PTR DS:[LoadLibraryA]
PUSH OFFSET_NOME_FUNÇÃO (Init, Loaded)
PUSH EAX (endereço inicial de carregar a função da DLL)
CALL GetProcAddress (carrega a função) DWORD PTR DS:[GetProcAddress]
CALL EAX 
JMP OFFSET_ENTRYPOINT

Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
PUSH OFFSET_NOME_DLL
CALL DWORD PTR DS:[LoadLibraryA]
OR EAX,EAX
JE OFFSET_ENTRYPOINT ou JE 0
PUSH Init
PUSH EAX
CALL DWORD PTR DS:[GetProcAddress]
CALL EAX
JMP OFFSET_ENTRYPOINT
LoadlibraryA: função que carrega a DLL na memória dinamicamente, ou seja, sem estar no IMPORT_TABLE do binário

GetProcAddress: função para saber o endereço de memória da nossa rotina quando for injetada no target. Responsável por, dado um handle de uma biblioteca (retorno da função LoadLibrary()) e um nome de API, retorna um ponteiro para a rotina da API. A chamada à GetProcAddress() busca e retorna o endereço da própria API GetProcessAddress em Kernel32.dll, armazenando seu retorno em DS:[ESI].


Cretidos: Liclopes

__________________
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
@L2Stylus
NecroBoy está offline  
Os Seguintes 3 Usuários disseram Obrigado(a) para NecroBoy por gostarem deste post :
C.Bartowski (15-09-2010), camargoN (16-01-2012)
Links Patrocinados
Antigo 16-04-2011, 12:10 PM   #2 (permalink)
Membro - Recruta
 
Avatar de f4bric1o
 
Registrado em: Apr 2011
Posts: 2
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:

Inventório de f4bric1o

Padrão

Nao entendi nada...

Poderia explicar passo a passo?

f4bric1o está offline   Responder com Citação
Antigo 20-01-2012, 01:13 PM   #3 (permalink)
Membro - Recruta
 
Avatar de darkyro
 
Registrado em: Dec 2009
Posts: 1
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
Achei Ruim:
Acharam ruim Vezes em Posts

Inventório de darkyro

Padrão Ajuda POr favor

Amigo como coloco isso no meu gameserver não entendi nadinha por favor me ajude

darkyro está offline   Responder com Citação
Antigo 15-02-2012, 10:31 PM   #4 (permalink)
Membro - Recruta
 
Avatar de caprony
 
Registrado em: Feb 2012
Localização: Maringá
Posts: 1
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:
Nome Real: TazOwnerD

Inventório de caprony

Icon10 manin Nao intendi

Nao Intendi nd ainda se Puder ajuda meio Urgente !! por favor

caprony está offline   Responder com Citação
Antigo 28-02-2012, 10:21 AM   #5 (permalink)
Membro - Recruta
 
Avatar de velho22
 
Registrado em: Jun 2013
Posts: 1
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:

Inventório de velho22

Padrão


velho22 está offline   Responder com Citação
Antigo 17-09-2012, 04:55 PM   #6 (permalink)
Membro - Recruta
 
Avatar de ROSA
 
Registrado em: Oct 2014
Posts: 6
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:
Pontos: 12, Nível: 1
Pontos: 12, Nível: 1 Pontos: 12, Nível: 1 Pontos: 12, Nível: 1
Atividade: 0%
Atividade: 0% Atividade: 0% Atividade: 0%

Inventório de ROSA

Padrão

quero saber tbm!!
coloca mais um tuto ai passo a passo

ROSA está offline   Responder com Citação
Antigo 29-09-2012, 09:41 PM   #7 (permalink)
Membro - Soldado
 
Avatar de brunobmt
 
Registrado em: Aug 2010
Posts: 15
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:

Inventório de brunobmt

Padrão

belo tuto parabens

brunobmt está offline   Responder com Citação
Antigo 06-11-2013, 06:44 PM   #8 (permalink)
Membro - Recruta
 
Avatar de porra33
 
Registrado em: Nov 2010
Posts: 3
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:
Enviar mensagem via Skype para porra33
Pontos: 2,152, Nível: 28
Pontos: 2,152, Nível: 28 Pontos: 2,152, Nível: 28 Pontos: 2,152, Nível: 28
Atividade: 10%
Atividade: 10% Atividade: 10% Atividade: 10%

Inventório de porra33

Padrão

Topico Sem Função Alguem Pode Fexar ?






porra33 está offline   Responder com Citação
Resposta


Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não
Trackbacks are Sim
Pingbacks are Sim
Refbacks are Sim



Horários baseados na GMT -3. Agora são 06:38 AM.
 



Search Engine Optimization by vBSEO 3.3.0