Api Hook
23/02/2006
0
conforme o exemplo do livro... Ai mandei compilar e me retorna o erro
[b:71aa00a954]Undeclared Indentifier : TStartupInfoA[/b:71aa00a954]
procurei no windows.pas e nada definido para esta ´Classe´ .. Se pudemos dizer assim
Alguem sabe aonde esta o erro ????
Marco Salles
Posts
24/02/2006
Nildo
Por exemplo , suponha que meu fio (Conforme o nildo introduziu assim o conceito de ApiHook em um artigo) , fica-se de ollho no dbd32.exe e
rundll32.exe por exemplo..
[b:632e353259]mudaria muita coisa [/b:632e353259] :?: :?: :?:[/quote:632e353259]
Marco, vá pela lógica.
Se você chama um comando por exemplo:
InjetaNoProcesso( ´explorer.exe´ );
Então, nesse caso, como fazer ele injetar no ´dbd32.exe´ e no ´calc.exe´??
24/02/2006
Marco Salles
ta . mas a injeçao poderia continuar via explorer.exe , o que eu pergunto e se o que quero abrir for o databaseDeskto ou o relogio do windows , então façao que tem que ser feito , se não for desconsidere...
tecnamente a pergunta pode estar cheia de erros , acredito que ate esteja , afinal o conceito e novo para mim...
24/02/2006
Nildo
ta . mas a injeçao poderia continuar via explorer.exe , o que eu pergunto e se o que quero abrir for o databaseDeskto ou o relogio do windows , então façao que tem que ser feito , se não for desconsidere...
tecnamente a pergunta pode estar cheia de erros , acredito que ate esteja , afinal o conceito e novo para mim...[/quote:bc80ae0986]
Marco, para de desenvolver o que você está fazendo e estude sobre essa tecnica senão as duvidas nunca irão acabar a não ser que você entenda o conceito da coisa. A injeção não é feita via explorer.exe. Uma injeção nada mais é do que fazer com que algum outro processo carregue uma DLL sua.
24/02/2006
Michael
Tsic, tsic, tsic... :?
[quote:ddaf9f099e=´Marcos Salles´]eu não sei se vai fazer parte da sua nova edição(Revista n=70) (...)[/quote:ddaf9f099e]
Na edição 70 eu sintetizei o que foi ensinado nas duas anteriores através de uma aplicação que protege arquivos executáveis que o usuário selecionar de uma série de operações, como cópia, exclusão, renomeação, etc. Tbm falo de como usar meu add-in para o IDE do Delphi para API Hooking.
É isso aí...
[quote:ddaf9f099e=´Marcos Salles´]ta . mas a injeçao poderia continuar via explorer.exe ...[/quote:ddaf9f099e]
O que o [b:ddaf9f099e]Nildo [/b:ddaf9f099e]quer dizer é que vc pode injetar em vários processos, bastando chamar para cada um a função de ´injeção´.
InjetaNoProcess(´explorer.exe´); InjetaNoProcesso(´notepad.exe´); InjetaNoProcess(´mspaint.exe´);
[]´s
24/02/2006
Martins
Isso vale para todos e para qualquer inovação na maneira de se desenvolver aplicações, eu levei uns dois puxões de orelha do [color=green:d9af08a58f][b:d9af08a58f]Nildo[/b:d9af08a58f][/color:d9af08a58f] hehehe! Mas valeu!!!
Boa sorte Marco, e lembre-se q o nome do Colega é [b:d9af08a58f]Michael[/b:d9af08a58f] ou então coloca logo só Benford.
24/02/2006
Marco Salles
--------------------------------------------------------------------------------
Marco Salles escreveu:
Michel (...)
Tsic, tsic, tsic...
Marcos Salles escreveu:
eu não sei se vai fazer parte da sua nova edição(Revista n=70) (...)
Na edição 70 eu sintetizei o que foi ensinado nas duas anteriores através de uma aplicação que protege arquivos executáveis que o usuário selecionar de uma série de operações, como cópia, exclusão, renomeação, etc. Tbm falo de como usar meu add-in para o IDE do Delphi para API Hooking.
Nildo escreveu:
Marco, vá pela lógica.
Se você chama um comando por exemplo:
InjetaNoProcesso( ´explorer.exe´ );
Então, nesse caso, como fazer ele injetar no ´dbd32.exe´ e no ´calc.exe´??
É isso aí...
engraçado , foi a primeira coisa que eu fiz.. mas não deu certo Michael
pesei que fosse receber a mensagem fazendo simplesmente assim assim
BmsRemoteLoadLibrary(BmsGetProcessID(´notpad.exe´), ExtractFilePath(ParamStr(0)) + ´CPHook.dll´);
mas não acontece nada :cry: :cry: :cry:
24/02/2006
Michael
Wohoo! :D
[quote:0c2e8c334a=´Marcos Salles´]pesei que fosse receber a mensagem fazendo simplesmente assim assim
BmsRemoteLoadLibrary(BmsGetProcessID(´notpad.exe´), ExtractFilePath(ParamStr(0)) + ´CPHook.dll´);
mas não acontece nada :cry: :cry: :cry:[/quote:0c2e8c334a]
Se não me engano, a CPHook.dll contém os callbacks e funções de ´hookagem´ para as API´s CreateProcessA/W, certo? Se não aconteceu nada é pq os processos hookados não chamaram estas rotinas. Acredito que a calculadora (calc.exe), por exemplo, não invoque essa API.
O que exatamente vc quer fazer ao ´injetar´ a DLL em mais de um processo?
[]´s
24/02/2006
Marco Salles
Quando ele for acionado que apareça o formulario Aviso
em vez de ser qualquer programa via explorer , quero que este processo so aconteça com alguns
por exemplo , toda vez que o calc.exe for acionado que apareça o formulario aviso
24/02/2006
Michael
Quando ele for acionado que apareça o formulario Aviso
em vez de ser qualquer programa via explorer , quero que este processo so aconteça com alguns
por exemplo , toda vez que o calc.exe for acionado que apareça o formulario aviso[/quote:6da149f510]
Bom, a primeira coisa que vou te dizer é o que o [b:6da149f510]Nildo [/b:6da149f510]falou: aprofunde mais seus conhecimentos sobre API Hooking. Leia novamente os artigos que estão aí com vc, e aguarde a edição 70 da revista. Nela vc vai ver como fazer o que vc quer.
Agora, vc não deve injetar a DLL nos processos que quer impedir de executar. Quem inicia o Notepad, por exemplo, não é ele mesmo, e sim o Windows. É por isso que injetamos no [b:6da149f510]explorer.exe[/b:6da149f510] - que é sinônimo de shell do Windows.
Se quiser quem um arquivo específico seja bloqueado, então dentro dos callback´s da sua DLL vc vai ter que checar se o nome do executável passado para a API é o que vc quer impedir de bloquear. Se for, então faça [b:6da149f510]Result [/b:6da149f510]retornar [b:6da149f510]False[/b:6da149f510], e de preferência gere algum erro para o sistema operacional (usando [b:6da149f510]SetLastError[/b:6da149f510]).
Veja o primeiro artigo, onde foi mostrado como impedir que arquivos com a string ´ClubeDelphi´ no nome fossem impedidos de serem excluídos. É a mesma coisa.
Na edição 70 vc vai entender melhor isso.
[]´s
24/02/2006
Marco Salles
quero agradecer e dizer que todo o conhecimento por mim adquirido mediante voces serão imediatamente repassados para todos da comunidade , como tento sempre , dar o maximo de mim durante esses longos anos que estamos juntos
Muito obrigado
16/04/2006
Ricardo_engsoft
Para a transferência estou usando sockets (TServerSocket / TClientSocket), mas estou encontrando problemas no momento de transferir os arquivos, que dizer, na hora de monitorar o diretório.
Tentei alguns componentes, mas não tive sucesso. O mais próximo que cheguei foi usando o componente TDirWatch, mas quando eu vou monitorar o diretório sei lá por que uma Thread é iniciada (a thread de controle que eu mesmo disparo), mas para minha surpresa, imediatamente ela é finalizada.
Então revirando minha coleção de revistas Clube Delphi eu vi que é possível usar API Hook para fazer essa monitoração.
Porém os exemplo que eu achei não foram fáceis de se entender. E nisso surge a minha pergunta: como fazer para monitorar um diretório qualquer (que seria selecionado na minha aplicação) e usar API Hooking para fazer o monitoramento desse diretório (e outros subdiretórios dentro desse) de modo a criar um log de operações efetuadas, como por exemplo horário em que um arquivo foi criado, excluido, alterado, etc.
Grato,
Ricardo
Clique aqui para fazer login e interagir na Comunidade :)