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.
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.