1. 创建一个VCL Application工程,打开Form1.pas文件,加入下面的全局变量和鼠标钩子函数。
var
HookHandle: HHOOK;
function HookProc(code: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
MousePoint: TPoint;
WindowHandle: THandle;
WindowStyle: Longint;
begin
// 获取鼠标位置
GetCursorPos(MousePoint);
// 获取包含鼠标的窗口句柄
WindowHandle := WindowFromPoint(MousePoint);
// 获取窗口风格
WindowStyle := GetWindowLong(WindowHandle, GWL_STYLE);
if TEventMsg(PEventMsg(lParam)^).message = WM_LBUTTONDOWN then
begin
// 是否为密码框
if WindowStyle and ES_PASSWORD <> 0 then
begin
// 去掉密码属性
PostMessage(WindowHandle, EM_SETPASSWORDCHAR, 0, 0);
end;
end;
Result := CallNextHookEx(HookHandle, code, wParam, lParam);
end;需要注意的是,程序中PostMessage(WindowHandle, EM_SETPASSWORDCHAR, 0, 0);只能使用PostMessage,而不能使用SendMessage代替。
2. 在Form1窗体上放下两个Button控件。并在他的单击事件中加入如下代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, hInstance, 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
UnhookWindowsHookEx(HookHandle);
end;
这是网上的一篇关于星号密码查看器的文章。获取窗口风格,去掉密码窗口风格。。
针对 WIN7 却无效。
在网上搜索出一些支持WIN7的星号密码查看,不知道都怎么实现的。大牛希望能解惑!
[课程]Android-CTF解题方法汇总!