• 1776阅读
  • 2回复

推翻广海以前的重复发布的问题代码!真正稳定的HOOK DLL注入实例,让新手获得新生 [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2014-05-13
推翻广海以前的一些DLL注入贴,重复发布的问题代码!
推翻DLL注入第1贴:
小金鱼以前热贴———问题代码:后来一直没修正,也一直没给别人答复。
http://www.ghoffice.com/bbs/read.php?tid-36733-fpage-0-toread--page-1.html

推翻DLL注入重复发布的问题代码贴,第1楼的问题代码:
http://www.ghoffice.com/bbs/read.php?tid-34578.html

我花4天时间反复测试,修正的,真正稳定的简化的HOOK DLL注入实例:
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
Hook32.dpr 源代码:
library Hook32;

uses
  SysUtils,
  Forms,
  Classes,
  myDLl in 'myDLl.pas' {Form1};


{$R *.res}

exports
HookOn,HookOff;

begin
{Application.Initialize;
Application.Run; }
end.

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
myDLl.pas 源代码:
unit myDLl;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
    Memo1: TMemo;

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
function HookProc(nCode:Integer;WParam: WPARAM;LParam:LPARAM):LRESULT;stdcall;
function HookOn(lpHwnd:HWND;lpType:Longint):Longint;stdcall;export;
function HookOff:Boolean;stdcall;export;

implementation

var
hHk: HHOOK=0;
mhwnd:HWND=0;
bShow:Integer=1;
hThread: Cardinal;
hmod: Pointer; //Hinstance
hProcessId: Cardinal;
mMode:Integer;

{$R *.dfm}

function HookProc(nCode:Integer;WParam: WPARAM;LParam:LPARAM):LRESULT;stdcall;
begin
//接收按键F8开始挂钩DLL
if (bShow=1) And (wParam=VK_F8) then
    begin
bShow:=5;
Form1:=TForm1.Create(Application);
Form1.Show;
ShowCursor(true);
end;
if (bShow=2) And (wParam=VK_F8) then
    begin
bShow:=6;
Form1.Free;
end;

if (bShow=3) And (wParam=VK_F8) then
    begin
bShow:=2;
end;

if (bShow=4) And (wParam=VK_F8) then
    begin
bShow:=1;
end;
if (bShow=5) then bShow:=3;
if (bShow=6) then bShow:=4;
Result := CallNextHookEx(hHk,nCode,WParam,LParam);
end;

function HookOn(lpHwnd:HWND;lpType:Longint): Longint;stdcall; export;
begin
hThread :=GetWindowThreadProcessId(lpHwnd,hmod);
//注入开始
if lpHwnd<>0 then hHk :=SetWindowsHookEx(lpType,@HookProc,hInstance,hThread); //  WH_KEYBOARD
Result :=hHk
end;

function HookOff:Boolean;stdcall; export;
begin
if hHk<>0 then
begin
//移除挂钩
UnHookWindowsHookEx(hHk);
hHk :=0;
Result :=true;
end
else
Result :=false;
end;

end.

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
调用DLL的执行文件Unit1.pas源代码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
function HookOn(lpHwnd:HWND;lpType:Longint):Longint;stdcall;external 'Hook32.dll' name 'HookOn';
function HookOff:Boolean;stdcall;external 'Hook32.dll' name 'HookOff';
implementation

{$R *.dfm}



procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
hookoff;
end;

procedure TForm1.Button1Click(Sender: TObject);
var

h1:HWND;
begin

h1:=FindWindow(NIL,'无标题 - 记事本');//这是窗口的句柄,要自己找到后,填写入。
if h1=0 then showmessage('没找到进程!');
if h1>0 then showmessage('找到进程!');
sleep(2000);
HookOn(h1,WH_KEYBOARD);


end;

procedure TForm1.Button2Click(Sender: TObject);
begin
HookOff;
end;

end.

完成后,打开空的记事本,按上F8去体会下效果!

在这里,我要特别感谢一个真正的朋友:lewei2000!我向他求帮助,他马上自己测试然后给我回复,感激中!


成功DLL注入源代码1399940533906.rar    

演示DLL注入.7z    
善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线guke_

只看该作者 沙发  发表于: 2017-08-26

只看该作者 板凳  发表于: 01-05
找到个最新翻墙软件,无界,超好用!!!

电脑版+ 安卓版

有时360软件可能会误报,身在中国,原因你懂的

vvv777.ys168.com
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个