首页
社区
课程
招聘
为什么themida1.3.5.5不能加壳键盘勾子的Dll?
发表于: 2006-5-12 15:24 4450

为什么themida1.3.5.5不能加壳键盘勾子的Dll?

2006-5-12 15:24
4450
开始以为是SDK的问题,单独写了一个后,发现不用SDK一样的要出错。
LoadLibrary时出错.
程序代码如下:
DLL:
library Test;

uses
  SysUtils,
  Classes,
  UnitHook in 'UnitHook.pas';

{$R *.res}

exports SetHook, EndHook;
begin
  hNextHookProc := 0;
  procSaveExit := ExitProc;
  ExitProc := @HotKeyHookExit;
end.
//------------------UnitHook文件:
unit UnitHook;

interface
uses
   Windows,SysUtils,Dialogs,Messages;

var
  hNextHookProc: HHook;
  procSaveExit: Pointer;

  function SetHook: BOOL; export;
  function EndHook: BOOL; export;
  function HookProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM):LRESULT; stdcall;
  procedure HotKeyHookExit; far;
  
implementation

function HookProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM):LRESULT; stdcall;
var
  Hwnd:DWORD;
  AppRect:TRect;
  Title:PChar;
begin
  Result := 0;
  Title := '';
  if iCode < 0 then begin
    CallNextHookEx(hNextHookProc, iCode, wParam, lParam);
    Result := 0;
    Exit;
  end;
  if ((lParam and $80000000) = 0) and (wParam = $6A) then begin
    Showmessage('*');
  end;
end;

function SetHook: BOOL; export;
begin
  Result := False;
  if hNextHookProc <> 0 then Exit;
  hNextHookProc := SetWindowsHookEx(WH_KEYBOARD, HookProc, HInstance, 0);
  Result := hNextHookProc <> 0;
end;

function EndHook: BOOL; export;
begin
  if hNextHookProc <> 0 then
  begin
    UnhookWindowshookEx(hNextHookProc); // 解除 Keyboard Hook
    hNextHookProc := 0;
  end;
  Result := hNextHookProc = 0;
end;

procedure HotKeyHookExit;
begin
  if hNextHookProc <> 0 then EndHook;
  ExitProc := procSaveExit;
end;

end.

//----------------------EXE文件
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

//-----------Dll Start------
  TSetHook=procedure;stdcall;
  TEndHook=procedure;stdcall;
//-----------Dll End-------

var
  Form1: TForm1;
  SetHook:TSetHook;
  EndHook:TEndHook;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  DllHandle:THandle;
begin
  DLLHandle := LoadLibrary(PChar('Test.Dll')); //这里出错
  if DllHandle<>0 then begin
    @SetHook := GetProcAddress(DLLHandle, 'SetHook');
    @EndHook := GetProcAddress(DLLHandle, 'EndHook');
    SetHook;
  end;
end;

end.

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
2
下个低版本,包含SDK
2006-5-12 16:42
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
themida 的API复制出现的问题,这个BUG是内在的,你还是等等再用.
2006-5-12 17:23
0
雪    币: 205
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Thanks For  hnhuqiong
2006-5-12 18:16
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
5
外挂商~
2006-5-12 19:12
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
外挂也算一种产业了,如果从看MBA来看
2006-5-12 20:15
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
7
最初由 xuruifengc 发布
外挂也算一种产业了,如果从看MBA来看


有道理,“高级程序员”
2006-5-13 00:15
0
游客
登录 | 注册 方可回帖
返回
//