00:00Fala aí rapaziada, quem fala é o Miz e eu tô aqui pra trazer mais uma aula do nosso curso de Game Hacking da Byneless.
00:05A gente vai tá criando um novo filtro aqui na nossa pasta hooks pra gente tá incluindo o Quiero.
00:11Então eu vou tá criando aqui o filtro Quiero, vou tá vindo lá na pasta do nosso projeto como a gente fez anteriormente na aula passada
00:18e vou tá criando também a pasta Quiero.
00:21Ele é bem semelhante ao Minhook, porém ele que vai tratar do DirectX pra gente poder tá renderizando o menu.
00:28E com a pasta aqui criada, a gente vai pegar as hooks como a gente fez com o Minhook e a gente vai fazer o mesmo com o Quiero.
00:34Vai tá tudo aí no zip de materiais que eu vou disponibilizar pra vocês, são esses dois arquivos aqui.
00:39A gente vai copiar e colar na pasta e dar um include aqui no Visual Studio.
00:45Então eu vou tá vindo aqui, adicionar um arquivo existente e eu vou vir aqui em hooks, Quiero e vou tá incluindo os dois arquivos.
00:54A gente vê se vai dar algum erro.
00:57Normal, ele não dá nenhum erro, então tá tudo certo.
01:00E agora com a biblioteca do Quiero já incluída, a gente pode tá criando o nosso present.
01:05Então eu vou tá vindo aqui em hooks core porque ele vai ser uma hook separada.
01:09Então eu vou tá vindo aqui, novo item, vou tá indo lá na pasta que a gente separou pras hooks.
01:12E vou tá criando um arquivo .cbp e .hpp.
01:18Eu vou tá criando aqui com o nome de present.
01:21Fazer a mesma coisa aqui, só que com o .hpp.
01:26E agora com esses dois arquivos criados, a gente precisa incluir a biblioteca do DirectX no nosso projeto.
01:41Então, no começo do curso a gente instalou o SDKJ1 2010 e é agora que a gente vai usar ele.
01:47Você vai vir aqui nas propriedades do seu projeto.
01:50Vai vir aqui em vc++directories.
01:55E aqui em includedirectories, você vai vir nessa pasta que tá instalado o seu DirectX.
02:00Tem que ser esse SDK aqui, eu ensinei na primeira aula do curso.
02:03Você vai vir aqui em include e vai tá copiando esse caminho.
02:07Copia esse caminho, vem aqui em includedirectories.
02:09Clica aqui na setinha, dá um edit e coloca ele aqui dentro.
02:14Dá um ok e pronto.
02:16Agora a gente vai voltar lá na pasta, só que a gente vai vir na pasta lib.
02:20Vai tá vindo aqui em x64, porque a gente tá fazendo o projeto em x64.
02:25E vai tá copiando esse caminho.
02:27Vai tá vindo aqui, vai vir em lib.directories.
02:30E vai tá fazendo a mesma coisa, vai tá colando.
02:33Isso serve pro nosso projeto ter acesso às bibliotecas do DirectX.
02:37Então a gente vai dar um aplicar, vai tá dando um ok.
02:39E agora a gente vai tá chamando elas.
02:42A gente vai tá dando um include aqui no hook.present.cpp mesmo.
02:45E vai tá colocando d3dx11.h.
02:53Vai tá chamando também a d3d11.h.
02:56Essa daqui tem que ser em minúscula, d3d11.h.
03:00Vocês podem ver que já vai tá incluindo certinho.
03:03Então aqui a gente já incluiu os arquivos que a gente precisa do DirectX.
03:08Porém, a gente precisa incluir as bibliotecas que são responsáveis por fazer esses dois arquivos aqui funcionarem.
03:15Então a gente vai tá dando um pragma comment.
03:20Vai tá abrindo os parênteses.
03:21Vai tá colocando lib, vírgula.
03:25E vai tá colocando d3dx11.lib.
03:30Opa, eu coloquei errado aqui.
03:33E também vai tá colocando o d3d11.lib.
03:39Feito isso, a gente já tá com as bibliotecas e os arquivos necessários pra renderizar o menu e qualquer outra coisa que dependa do DirectX.
03:48E agora a gente vai vir no hookspresent.h e vai tá definindo a função pra iniciar o quieiro e pra desabilitar o quieiro.
03:57Então aqui eu vou tá colocando o quieiro cookies.
04:02Vou tá abrindo essa namespace e vou tá criando a void init.
04:07E a void shutdown.
04:13E com elas aqui definidas, vocês podem ver que ficou um tracinho verde embaixo.
04:17Isso significa que a gente não criou a função e só definiu.
04:21Então a gente vai clicar com o botão direito nessa lâmpadazinha aqui.
04:25Pra ele já criar automaticamente pra gente.
04:27Isso aqui não é obrigatório, porém facilita.
04:31Você pode fazer manualmente, não tem problema.
04:33Mas ele já vai criar no lugar certo que aqui no hookspresent.cpp.
04:37Como eu expliquei nas aulas passadas, o .hpp é pra definir a função e o .cpp é pra gente escrever a função em si.
04:44Então aqui no init a gente vai criar um loop pra ele carregar a nossa hook e depois, caso ela tenha sido carregada com sucesso, ele travar esse loop.
04:52Então a gente vai criar uma bool, ou seja, precisa carregar, então a gente vai colocar false.
05:02A gente vai vir aqui e vai colocar o do pra criar o loop.
05:05Vai tá abrindo aqui, vai tá abrindo o scope.
05:07Com o do definido a gente vai colocar o while.
05:10E a gente não vai deixar o Visual Studio criar pra gente.
05:12A gente vai colocar aqui o show de load.
05:14igual a false.
05:17Então, se o show de load for igual a false, ele vai tá renderizando.
05:22Se por algum motivo o show de load virar verdadeiro, virar true, ele não vai mais entrar no loop.
05:28Então, ele só vai fazer uma vez.
05:30E caso dê sucesso, ele não vai mais rodar esse loop.
05:34É basicamente isso.
05:35A gente coloca um ponto e vírgula.
05:37Feito isso, a gente vai voltar aqui no hookpresent e vai tá dando um include no nosso queiro hook.
05:44Porém, a gente vai tá chamando a hook em si.
05:48Então, a gente deixa ela aqui em quiero, quiero.h.
05:51Ela já tá aqui incluída, a gente pode voltar no hookpresent.
05:54Vai tá criando um if e chamando ela aqui, ó.
05:58A gente vai chamar a quiero.
06:00Vai tá abrindo a namespace, vai tá colocando init.
06:03Vai tá abrindo aqui os parênteses e vai tá definindo que a gente quer um render type para dx11.
06:08Porque o nosso jogo é em directx11.
06:12Então, tá colocando aqui, ó, d311.
06:14A gente pode já fechar aqui o parênteses, ele já fechou.
06:17E a gente vai colocar um igual a quiero status.
06:23E aqui em status a gente vai colocar success, que é pra mostrar que deu certo que ele carregou com sucesso a nossa hook.
06:31Então, se ela for carregada com sucesso, a gente vai poder chamar o menu, que vai ficar pra próxima aula, e deixar aqui o show de load igual a true.
06:42Então, se ele for carregado com sucesso, ele vai sair do loop e vai chamar a nossa função do present que a gente vai fazer na próxima aula.
Seja a primeira pessoa a comentar