PDA

View Full Version : Hookando uma DLL em um GameServer.exe



Mentor
24/03/2015, 01:32 AM
Bom pessoal achei esse tutorial na net e decidir trazer para o fórum para ajudar aqueles que querem hookar sua dll com o Ollydbg.
Lembrando que o tutorial foi elaborado para hookar uma dll em um GameServer.exe, mais acredito que o procedimento é o mesmo para quem deseja hokar dll no main.exe

1ª Parte - Método de Hookar uma DLL:




1ª Parte - Método de Hookar uma DLL:

PUSH NOMEDADLL // Procure uma DB 00 Faça follow in dump e escreva em ASCII o nome de sua DLL.
CALL LoadLibrary // Procure a offset LoadLibrary de sua maquina.
OR EAX,EAX
JE ERROR // Procure uma DB 00 e monte uma função de Error caso não tenha a DLL.
PUSH FUNÇÃODADLL // Procure uma DB 00 Faça follow in dump e escreva em ASCII o nome da função de sua DLL.
PUSH EAX
CALL GetProcAddress // Procure a offset GetProcAddress de sua maquina.
CALL EAX
JMP EntryPoint // EntryPoint de seu GS Utilizado.








Função de Error:





PUSH 0
PUSH MSGDEERRO // Procure uma DB 00 Faça follow in dump e escreva em ASCII msg de erro da bandeja Exemplo: Error!
PUSH MSGDEERRO2 // Procure uma DB 00 Faça follow in dump e escreva em ASCII msg de erro completa Exemplo: JNTeam.dll esta ausente!
PUSH 0
CALL MessageBoxA // Procure a offset MessageBoxA de sua maquina.
PUSH 0
CALL ExitProcess // Procure a offset ExitProcess de sua maquina.







Para procurar as offset’s utilizados ExitProcess, MessageBoxA, EntryPoint, GetProcAddress e LoadLibrary.






1° - Vamos encontrar o nosso EntryPoint:
• Encontrar o EntryPoint em seu GameServer é parte mais simples do processo, basta abrir o GameServer com o Ollydbg e não mecher em nada ele vai parar na OFFSET de seu EntryPoint. Basta anotar a OFFSET e utilaza-lá no seu Hook.

2° - Vamos encontrar a OFFSET do LoadLibrary de seu GS:
• Primeiro vamos clicar com botão direito em qualquer lugar de nosso GameServer e logo após Seach For e depois Names.
• Agora basta aperta a tecla “L” de seu teclado e ele irá na seção dos nomes iniciados com “L”, e então procureLoadLibraryA e clique duas vezes em cima para ir na OFFSET. Agora basta anotar para usar em seu Hook.

3° - Vamos encontrar a OFFSET do GetProcAdress de seu GS:
• Primeiro vamos clicar com botão direito em qualquer lugar de nosso GameServer e logo após Seach For e depois Names.
• Agora basta aperta a tecla “G” de seu teclado e ele irá na seção dos nomes iniciados com “G”, e então procureGetProcAdress e clique duas vezes em cima para ir na OFFSET. Agora basta anotar para usar em seu Hook.

4° - Vamos encontrar a OFFSET do MessageBoxA de seu GS:
• Primeiro vamos clicar com botão direito em qualquer lugar de nosso GameServer e logo após Seach For e depois Names.
• Agora basta aperta a tecla “M” de seu teclado e ele irá na seção dos nomes iniciados com “M”, e então procureMessageBoxA e clique duas vezes em cima para ir na OFFSET. Agora basta anotar para usar em seu Hook.

5° - Vamos encontrar a OFFSET do ExitProcess de seu GS:
• Primeiro vamos clicar com botão direito em qualquer lugar de nosso GameServer e logo após Seach For e depois Names.
• Agora basta aperta a tecla “E” de seu teclado e ele irá na seção dos nomes iniciados com “E”, e então procureExitProcess e clique duas vezes em cima para ir na OFFSET. Agora basta anotar para usar em seu Hook.





Observação: Depois que terminar o processo de implantar o método de hook, salve o GameServer.exe mais antes de fechar o Ollydbg anote a OFFSET inicial de onde começou o HOOK - PUSH NOMEDADLL.


2ª Parte – Usando o LordPE para Finalizar o Hook:


1° - Abra o LordPE;
2° - Abra o GameServer na opção PE Editor;
3° - Na primeira linha note que vai ter EntryPoint ele vai ser igual ao EntryPoint que você pegou no Ollydbg a não ser pelo primeiro numero que vai estar 2 no lugar de 6.
4° - Pegue a OFFSET inicial de onde começou o HOOK do Ollydbg e coloque no lugar da EntryPoint do Ollydbg e altere o 6pelo 2:

Exemplo eu fiz o hook na offset: 00652721 no LordPE vai ficar 00252721.

5° - Pronto agora só clicar em salvar e fechar o LordPE, seu hook está 100% terminado.



Creditos:
- João Neto - Elaborar o tutorial e aplicar metodo de hook e error.

Lucas M.
24/03/2015, 10:16 AM
Acho que já foi o tempo em que geral só hookava assim ! Hoje tem programas mais praticos , rápidos e que não dêem erros... Porém , eu prefiro sempre fazer pelo metodo olly !
Ai vai da preferencia de cada.
Belo tutorial mentor :))))

TonyAMT
24/03/2015, 10:39 AM
realmente hoje esta bem mais facil.. eu mesmo utilizo hook somente por Lord Pe e quando nao da certo o Stud Pe.

jeickenwes
05/02/2017, 10:31 PM
para que server isto hook ? qual função disto

Mentor
19/02/2017, 10:53 PM
@jeickenwes ([Only registered and activated users can see links]) isso serve para o GameServer.exe ler a dll que está sendo hokada nele. Geralmente quem utilizam esse método são os programadores que desenvolve sua propria dll com customizações fixes...
@Lucas M. ([Only registered and activated users can see links])
[Only registered and activated users can see links]
Nem sempre os métodos que muitos utilizam hoje em dia com os programas Stud_PE, LordPe... que facilitam o hook, funcionam.
Eu mesmo já tive experiencia em um projeto que só veio a funcionar após eu ter usado o método que postei.