php设计之登录模块(验证码的生成及验证)
2014-04-12 17:43
435 查看
/**
*Environment : VS2005
*/
DLL:
File name:HookDll.ccp
=============================================
#include <windows.h>
#include "string.h"
#include "stdio.h"
HINSTANCE hInst;
#pragma data_seg("hookdata")
HHOOK oldkeyhook=0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:hookdata,RWS")
#define DllExport extern "C"__declspec(dllexport)
void writeFile1(char *msg);
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam );
DllExport void InstallHook(int nCode);
DllExport void EndHook(void);
BOOL WINAPI DllMain(HINSTANCE hInstance,ULONG What,LPVOID NotUsed)
{
switch(What)
{
case DLL_PROCESS_ATTACH:
hInst = hInstance;
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return 1;
}
void InstallHook(int nCode)
{
oldkeyhook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyBoardProc,hInst,0);
}
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam )
{
/*
WPARAM j;
FILE *fp;
errno_t err;
if(lParam&0x80000000)
{
j = wParam;
err=fopen_s(&fp,"c:\hookkey.txt","a");
fprintf(fp,"%4d",j);
fclose(fp);
}
*/
writeFile1("callback function invoked");
return CallNextHookEx(oldkeyhook,nCode,wParam,lParam);
}
void EndHook(void)
{
UnhookWindowsHookEx(oldkeyhook);
}
void writeFile1(char *msg){
FILE *fp;
fp=fopen("C:/test1.txt","a");
fputs(msg,fp);
fputs("\n",fp);
fclose(fp);
}
=================================================
testing
File name:hookTest.ccp
=================================================
#include "stdio.h"
#include <windows.h>
void main(void)
{
typedef void(*installHook)(int ncode);
typedef void(*killHook)(void);
HINSTANCE hDLL; installHook iHook; killHook kHook;
hDLL=LoadLibrary(TEXT("hookdll2.dll"));
if(hDLL!=NULL){
MessageBox (NULL, TEXT ("Hello, Windows 00000000000!"), TEXT ("HelloMsg"), 0);
iHook=(installHook)GetProcAddress(hDLL,"InstallHook");
kHook=(killHook)GetProcAddress(hDLL,"EndHook");
if(iHook){
MessageBox (NULL, TEXT ("Hello, Windows 11111111111111!"), TEXT ("HelloMsg"), 0);
iHook(0);
}
if(kHook){
MessageBox (NULL, TEXT ("Hello, Windows 2222222222222222!"), TEXT ("HelloMsg"), 0);
kHook();
}
FreeLibrary(hDLL);
}
}
*Environment : VS2005
*/
DLL:
File name:HookDll.ccp
=============================================
#include <windows.h>
#include "string.h"
#include "stdio.h"
HINSTANCE hInst;
#pragma data_seg("hookdata")
HHOOK oldkeyhook=0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:hookdata,RWS")
#define DllExport extern "C"__declspec(dllexport)
void writeFile1(char *msg);
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam );
DllExport void InstallHook(int nCode);
DllExport void EndHook(void);
BOOL WINAPI DllMain(HINSTANCE hInstance,ULONG What,LPVOID NotUsed)
{
switch(What)
{
case DLL_PROCESS_ATTACH:
hInst = hInstance;
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return 1;
}
void InstallHook(int nCode)
{
oldkeyhook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyBoardProc,hInst,0);
}
DllExport LRESULT CALLBACK KeyBoardProc(int nCode,WPARAM wParam, LPARAM lParam )
{
/*
WPARAM j;
FILE *fp;
errno_t err;
if(lParam&0x80000000)
{
j = wParam;
err=fopen_s(&fp,"c:\hookkey.txt","a");
fprintf(fp,"%4d",j);
fclose(fp);
}
*/
writeFile1("callback function invoked");
return CallNextHookEx(oldkeyhook,nCode,wParam,lParam);
}
void EndHook(void)
{
UnhookWindowsHookEx(oldkeyhook);
}
void writeFile1(char *msg){
FILE *fp;
fp=fopen("C:/test1.txt","a");
fputs(msg,fp);
fputs("\n",fp);
fclose(fp);
}
=================================================
testing
File name:hookTest.ccp
=================================================
#include "stdio.h"
#include <windows.h>
void main(void)
{
typedef void(*installHook)(int ncode);
typedef void(*killHook)(void);
HINSTANCE hDLL; installHook iHook; killHook kHook;
hDLL=LoadLibrary(TEXT("hookdll2.dll"));
if(hDLL!=NULL){
MessageBox (NULL, TEXT ("Hello, Windows 00000000000!"), TEXT ("HelloMsg"), 0);
iHook=(installHook)GetProcAddress(hDLL,"InstallHook");
kHook=(killHook)GetProcAddress(hDLL,"EndHook");
if(iHook){
MessageBox (NULL, TEXT ("Hello, Windows 11111111111111!"), TEXT ("HelloMsg"), 0);
iHook(0);
}
if(kHook){
MessageBox (NULL, TEXT ("Hello, Windows 2222222222222222!"), TEXT ("HelloMsg"), 0);
kHook();
}
FreeLibrary(hDLL);
}
}
相关文章推荐
- php生成验证码与验证码验证完整实例
- ajax图片验证码: PHP生成各种验证码和Ajax验证
- PHP注册登录:包括数据存入数据库,生成随机验证码
- PHP+AJAX 验证码验证用户登录
- PHP自动生成验证码【留言板模块】
- PHP 用session与gd库实现简单验证码生成与验证的类方法
- 生成验证码且进行登录验证
- PHP生成各种常见验证码和Ajax验证过程
- 使用sqlite3的接口函数完成一个用户登录验证功能模块设计 要封装成独立函数,在独立的main中调用测试;
- PHP生成各种验证码和Ajax验证
- .NET注册登录模块注意问题之验证码的生成及使用
- PHP 验证码生成验证源码
- 动态生成验证码用于ASP.NET登录或注册模块中
- PHP生成各种验证码和Ajax验证
- php登录验证(包括用户名、密码、验证码、数据库、是否已登陆验证、自动登录和注销登录)
- PHP生成各种验证码和Ajax验证
- php验证码生成及验证
- PHP生成各种验证码和Ajax验证
- php注册登录时生成的验证码
- PHP生成验证码和Ajax验证