⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 木马学习资料 delphi版的
💻 TXT
字号:

用Delphi写游戏木马


   大家好!我是小坏熊,大家可能都受过盗号之苦,对游戏木马感到神秘,今天给大家讲用Delphi怎样写游戏木马,希望大家能了解他的原理首先我们来认识几个api函数
  回去你们自己再看吧

------------------------------------
    函数功能:该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。

    函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpszClass,LPCTSTR lpszWindow);

    参数:

    hwndParent:要查找子窗口的父窗口句柄。

    如果hwnjParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。

    Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。

    hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndPareRt窗口的直接子窗口而非后代窗口。如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口。

    lpszClass:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。

    lpszWindow:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为 NULL,则为所有窗口全匹配。返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为NULL。

    若想获得更多错误信息,请调用GetLastError函数。

    速查:WindowsNT:4.0对以上版本;Windows:95以上版本;WindowsCE:不支持;头文件:winuser.h;库文件:user32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。
--------------------
我们在来看一下
sendmessage函数
---------------
    函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。

    函数原型:LRESULT SendMessage(
                HWND hWnd,      // handle of destination window
                UINT Msg,       // message to send
                WPARAM wParam,  // first message parameter
                LPARAM lParam   // second message parameter
               );

    参数:

    hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。

    Msg:指定被发送的消息。

    wParam:指定附加的消息指定信息。

    lParam:指定附加的消息指定信息。

    返回值:返回值指定消息处理的结果,依赖于所发送的消息。

    备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。

    如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。

    Windows CE:Windows CE不支持Windows桌面平台支持的所有消息。使用SendMesssge之前,要检查发送的消息是否被支持。

    速查:Windows NT:3.1及以上版本:Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

-----------
我们在看一下
postmessage函数
    函数功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回。消息队列里的消息通过调用GetMessage和PeekMessage取得。

    函数原型:B00L PostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);

    参数:

    hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:

    HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。

    NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。

    Msg:指定被寄送的消息。

    wParam:指定附加的消息特定的信息。

    lParam:指定附加的消息特定的信息。

    返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。

    备注:需要以 HWND_BROADCAST方式通信的应用程序应当用函数 RegisterwindwosMessage来获得应用程序间通信的独特的消息。

    如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。

    速查:WindowsNT:3.1及以上版本;Windows:95及以上版本;WindowsCE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。

------------------------------
我做了一个登陆框的小程序来给大家演示,我们通过FindWindow('TForm1','登陆')来判断程序是否运行,如果程序运行返回程序主窗口的句柄,利用取得的句柄我们再用FindWindowEx就可以得到输入框的句柄了,然后用PostMessage把登陆框的密码属性去掉,因为在在Win98下,对于别的程序的密码框,我们可以用SendMessage函数可以对这个密码框下一个WM_GETTEXT的命令获取这个密码框的内容。但自2000以后,微软的安全意识似乎强了一点,用这个命令对普通的窗口管用,但对于密码框已经不起作用了。 我们只能用PostMessage(temp,EM_SETPASSWORDCHAR,0,0)去除它的密码框的属性,然后再获取它的内容,最后恢复它密码框的属性。 大家看我测试下我写的两个小程序的效果。。。
成功了,复制的中文密码也能截取到!
说了这么多不知道大家看懂没有。

下面再演示个用鼠标钩子函数定义全局变量写的一个传奇私服的木马,
用运行那个mir2来调用我生成的hook.dll
希望大家可以理解,下次我再重点讲解这个用dll实现的木马。


今天就到这了,有什么问题联系我qq:14740500

切忌,请勿用于非法用途,否则后果自负!

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -