Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Programando na API do windows

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Delphi Programando na API do windows

    Programando na API do windows


    ----------------------------------------------------------------------------------------------------------------------------------------------
    Bom galera to aqui de novo postanto um conteúdo que EU acho EXTREMAMENTE interessante, e impressindível para qualquer programador de malwares, possivelmente ninguém vai se interessar muito aqui, pelo menos agora pelo que eu vi não, mas quem sabe em um futuro próximo sejá útil pra alguém. Afinal uma hora ou outra alguém vai perceber que deface não leva nada e começar a estudar algo de útil \o/
    ----------------------------------------------------------------------------------------------------------------------------------------------

    A seguir você verá um exemplo de como programar diretamente na API do Windows e obter programas com o menor tamanho possível.
    No exemplo, você cria uma aplicação de 16kb e a mesma aplicação desenvolvida por vias normais teria em torno de 215kb.


    Tenha em mente que para desenvolver uma aplicação inteira vc precisará estudar a fundo toda a api de componentes e mensagens do windows.

    A primeira coisa a fazer é criar a janela principal:
    1) Registramos a classe de janela alternativa.
    2) Criamos a janela utilizando CreateWindowEx

    Depois devemos criar todos os componentes que serão utilizados:
    1) Utilizaremos o CreateWindowEx para criar os botões, as Labels e os edits. É importante que você crie-os como child da aplicação.

    Precisamos também mudar o tamanho da fonte, pois a padrão é muito grande:
    1) Criar um handle da font utilizando CreateFont
    2) Dispare uma mensagem WM_SETFONT para todos os componentes.

    A função UpdateWindow atualiza todos os componentes ao mesmo tempo. Tome cuidado ao fazer ligação entre eles durante a inicialização da Aplicação.

    O Loop de Mensagens assegura que a aplicação não ira terminar. Ele é responsável por todo o funcionamento da aplicação, pois através dele, a aplicação irá interagir com o windows e vice-versa.

    A Função WindowProc:
    É responsável por todo disparo das mensagens que faz a aplicação rodar.

    Agora, vamos ver na pratica.

    Crie uma nova aplicação no Delphi e copie o código abaixo dentro do DPR. (Fonte do Projeto)

    Código:
    program testwindow;
    
    uses
    Windows,Messages;
    
    var
    WinClass: TWndClassA;
    Inst, Handle, Button1, Label1, Edit1: Integer;
    Msg: TMsg;
    hFont: Integer;
    
    { Verifica se a senha digitada é 'develsoft' e mostra uma mensagem }
    procedure CheckPassword;
    var
    Textlength: Integer;
    Text: PChar;
    begin
    TextLength := GetWindowTextLength(Edit1);
    if TextLength = 9 then
    begin
    GetMem(Text, TextLength + 1);
    GetWindowText(Edit1, Text, TextLength + 1);
    if Text = 'develsoft' then
    begin
    MessageBoxA(Handle, 'A senha está correta.', 'Verifica a senha', MB_OK);
    FreeMem(Text, TextLength + 1);
    Exit;
    end;
    end;
    MessageBoxA(Handle, 'Senha incorreta.', 'Verifica senha', MB_OK);
    end;
    
    { Função WindowProc alternativa }
    function WindowProc(hWnd, uMsg, wParam, lParam: Integer): Integer; stdcall;
    begin
    Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
    { Ve se tem mensagens }
    if (lParam = Button1) and (uMsg = WM_COMMAND) then
    CheckPassword;
    if uMsg = WM_DESTROY then
    Halt;
    end;
    
    begin
    { ** Registra um classe de janela alternativa ** }
    Inst := hInstance;
    with WinClass do
    begin
    style := CS_CLASSDC or CS_PARENTDC;
    lpfnWndProc := @WindowProc;
    hInstance := Inst;
    hbrBackground := color_btnface + 1;
    lpszClassname := 'AG_TESTWINDOW';
    hCursor := LoadCursor(0, IDC_ARROW);
    end; { with }
    RegisterClass(WinClass);
    
    { ** Cria a janela principal ** }
    Handle := CreateWindowEx(WS_EX_WINDOWEDGE, 'AG_TESTWINDOW', 'Amigreen TestWindow 1.00',
    WS_VISIBLE or WS_SIZEBOX or WS_CAPTION or WS_SYSMENU,
    363, 278, 305, 65, 0, 0, Inst, nil);
    { ** Cria um botao ** }
    Button1 := CreateWindow('Button', 'OK', WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT,
    216, 8, 75, 25, handle, 0, Inst, nil);
    { ** Cria um label estatico ** }
    Label1 := Createwindow('Static', '', WS_VISIBLE or WS_CHILD or SS_LEFT,
    8, 12, 76, 13, Handle, 0, Inst, nil);
    
    { ** Cria um Edit ** }
    Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', '', WS_CHILD or WS_VISIBLE or
    WS_BORDER or ES_PASSWORD, 88, 8, 121, 21, Handle, 0, Inst, nil);
    
    { ** Cria a fonte padrao ** }
    hFont := CreateFont(-11, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
    OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
    DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');
    
    { Muda a fonte }
    if hFont <> 0 then
    begin
    SendMessage(Button1, WM_SETFONT, hFont, 0);
    SendMessage(Label1, WM_SETFONT, hFont, 0);
    SendMessage(Edit1, WM_SETFONT, hFont, 0);
    end;
    { Muda o texto do label }
    SetWindowText(Label1, 'Informe a senha:');
    { Poe o focu no Edit }
    SetFocus(Edit1);
    
    UpdateWindow(Handle);
    
    { ** Loop de Mensagens ** }
    while(GetMessage(Msg, Handle, 0, 0)) do
    begin
    TranslateMessage(msg);
    DispatchMessage(msg);
    end; { with }
    end.
    Fonte: activedelphi.com.br
    <<< ENGINEERING CODERZ - HACKING PROGRAMMING GROUP >>>
    msn/mail: azurus21@gmail.com

  • Font Size
    #2
    Essa é a desvantagem de não poder editar as próprias msgs =/

    Na declaração das variáveis onde está declarado:
    Código:
    var
    WinClass: TWndClassA;
    Inst, Handle, Button1, Label1, Edit1: Integer;
    Msg: TMsg;
    hFont: Integer;
    O correto seria:
    Código:
    var
    WinClass: TWndClassW;
    Inst, Handle, Button1, Label1, Edit1: Integer;
    Msg: TMsg;
    hFont: Integer;
    OBS: Isso para delphi 2010, não testei em outras versões.
    <<< ENGINEERING CODERZ - HACKING PROGRAMMING GROUP >>>
    msn/mail: azurus21@gmail.com

    Comment


    • Font Size
      #3
      lol

      Muito bom azurus...

      xD

      Com certeza muitos aqui não ligam muito para delphi... ¬¬

      PS:.. ainda ta me devendo a aula do builder ein!!! rsrs
      Att,

      [A]ntharaz



      sigpic

      Comment


      • Font Size
        #4
        É lamentável mesmo o interesse por programação da galera aqui =/

        Bah velho ainda bem que vc me lembrou, tenho ela aqui, só fazer upload e postar, mais tarde já posto ela ^^

        []s
        <<< ENGINEERING CODERZ - HACKING PROGRAMMING GROUP >>>
        msn/mail: azurus21@gmail.com

        Comment


        • Font Size
          #5
          azurus e seus post's sobre delphi |O/
          tais de parabééns fiii

          ~# Criado pela [IN]Segurança #~

          Comment


          • Font Size
            #6
            Postado Originalmente por .ArthurPaixão. Ver Post
            azurus e seus post's sobre delphi |O/
            tais de parabééns fiii

            Vlw Arthur, eu me dedico a muitas coisas no under, mas concerteza programação está pra mim acima de todas, pois programação é a raiz de tudo, do deface a invasão de servers. Sendo que nesse caminho tenho sempre o meu bom e velho (mas não ultrapassado) Pascal, concerteza se a galera quiser ainda tem muita coisa a vir por aí sobre Delphi/Pascal

            Não existem linguagens boas e ruims, existem programadores bons e ruins

            []s
            <<< ENGINEERING CODERZ - HACKING PROGRAMMING GROUP >>>
            msn/mail: azurus21@gmail.com

            Comment


            • Font Size
              #7
              me desculpem pessoal, relatando sobre isso, gostei muito, achei muito interessante pois tem muito conhecimento amigo.

              Comment

              X
              Working...
              X