• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Knitter

Não consigo que o windows reconheça um system hook

5 mensagens neste tópico

Boas!

Para começar não sei onde colocar esta dúvida, por isso se estiver na zona errada por favor movam-na :)

Em seguimento ao tópico. http://www.portugal-a-programar.pt/index.php?showtopic=2103, e dado que cheguei ao projecto já muita coisa estava organizada, iniciei o desenvolvimento paralelo no ambito do projecto.

Decidi iniciar o software com uma mistura de Java, para a generalidade do funcionamento do programa, e C/C++ para o sistema de hooking de teclado.

O meu problema é que, embora tenha o código a sintaticamente correcto, e a comunicação entre a parte Java e a parte C/C++ esteja a funcionar, o windows nunca invoca a minha função para tratar as teclas, isto é, nunca sou avisado dos eventos de teclado!

Não tenho grandes conhecimentos da API do windows ou do desenvolvimento em C/C++ no windows e por isso ando um pouco às aranhas.

Se alguém me souber dizer porque é que o meu código nunca é invocado pelo windows era uma grande ajuda, estou bloqueado neste problema ;)

Fonte:

http://www.student.estg.ipleiria.pt/~ei10635/downloads/projects/BrailleKeyboard.zip

http://www.student.estg.ipleiria.pt/~ei10635/downloads/projects/winlib.cpp

http://www.student.estg.ipleiria.pt/~ei10635/downloads/projects/winlib.h

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tudo no windows funciona atraves de mensagens. O que tens de fazer e algo que te capte as mensagens que queres.

Ha um tempo eu queria captar o clique do rato em kk lugar fora da minha aplicacao. por isso desenvolvi esta funcao, chama- se journal,

esta capta os eventos leftbuttondown do rato, e so modificares para os eventos que queres.

Este codigo esta em Delphi, mas visto que e uma API com uma modificacao ou outra consegues por a funcionar em c ou noutra linguagem;

Faz uses, ou include de ShellAPI

function JournalProc(Code, wParam: Integer; var EventStrut: TEventMsg): Integer; stdcall;
begin
  Result := CallNextHookEx(JHook, Code, wParam, Longint(@EventStrut));               // JHook e uma variavel global do tipo THandle
   if Code < 0 then Exit;
   if Code = HC_SYSMODALON then Exit;
   if Code = HC_ACTION then
   begin
    if EventStrut.message = WM_LBUTTONDOWN then     // aki dizes qual o evento do qual queres ser notificado
    begin
     SwapMouseButton(true);                                              //
     tbMouse.MouseClick(1);                                               //   aki executas o k quiseres em relacao a esse evento
     invertido:=false;                                                          //    
     swapmousebutton(false);
    end;
   end;
end;

No create da form ou da unidade fazes

JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, 0);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

v-for-vendetta.jpg

Há vários tópicos neste fórum sobre o tema:

Teoria sobre Win Hook e como explorar a técnica em C++ e C# .NET

http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=383528

madCodeHook - everything you need to hook code (mostly APIs)  (UMA API DE ALTO NIVEL QUE RESOLVE OS PRINCIPAIS PROBLEMAS DO WINHOOK, COMO VERSÕES E TAl... há uma versão gratuita que apenas te obriga a "acompanhar o teu projecto com uma DLL."

http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=35528

http://madshi.net/madCodeHookDescription.htm

Centenas de Video Tutorial sobre cracking  (chama a atenção para este, pois é sobre HOOK) [Echo Mirage (Generic Network Proxy using DLL Injection and Function Hooking) Video Tutorial]

http://www.portugal-a-programar.pt/forums/topic/0-find-topic/?do=findComment&comment=305882

espero ter ajudado

teckV - h2k11

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL

Incluir o V, com as frases do Prothero num post sobre system hooks é... enfim, nada relacionado. :D LOL

Bom post. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Incluir o V, com as frases do Prothero num post sobre system hooks é... enfim, nada relacionado. :P LOL

epá concordo contigo... mas como já expliquei e aquele que já desde o inicio que olham para os meus posts (basta ir aos antigos e ver) que eu uso uma coisa mt antiga chamada ART WORK... que é dar um toque gráfico a grandes text files. antigamente aprendia-mos com massudos text files em BBS´s e o ppl começou a usar ASCII para fazer desenho afim de dar alguma cor (naquele tempo nem era cor,  pois não havia), mas dava algum toque de não tão "massudo"...

ART WORK não é o nome para esses excelentes desenhos ASCII que chegaram a um ponto supreendente, mas é hoje. e uso isso desde o inicio e faz-me sinceramente confusão, se há posts com mais de 5 anos com imagens decorativas, porque é que agora é que repararam nisso?

só agora olham para os posts de segurança?

Outra coisa que acho FENOMENAL  :):D :D :):thumbsup: é que NUM POST TÉCNICO, onde alguém tenta passar info técnica a outro, aparece um comentário de um moderador a falar DE TUDO MENOS DA QUESTÃO TÉCNICA DO USER... eu só coloquei uma imagem? ou fiz um post técnico "decorado" com uma imagem?

para reflexão, pois eu pessoalmente sei do que se passa... entre mts motivos que não quero trazer para o público pois são internos do staff, digo que nunca o bubulindo só pode nunca ter visto um post meu desde que iniciei há mts anos.... uma vez tentei por GET´s sacar todos os meus posts, que no SMF é mt simples devido ao problema do SESSIONID, mas já ia em tantos gigas que parei... por acaso gostava de ter um subset da BD apenas com os meus posts nos vários nicks.. já deve dar uma grande enciclopédia... tenho de falar isso um dia com alguém

já agora bubulindo... e sobre a dúvida do user, podes nos ajudar? sabes o que é win hook? é que os mods deviam ajudar técicamente

teckV

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora