Code: Select all
library T2Boot;
uses
madCodeHook,
Windows,
WinSock,
SysUtils;
type TConType = (ctClient, ctServer, ctUnknown);
type TPackage = record
Msg: array[0..MAX_PATH] of Char;
ParamStr: array[0..1023] of Char;
ParamInt: Integer;
end;
var
ConType: TConType;
listen_NextHook: function(s: TSocket; backlog: Integer): Integer; stdcall;
accept_NextHook: function(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;
function listen_HookProc(s: TSocket; backlog: Integer): Integer; stdcall;
begin
ConType := ctServer;
Result := listen_NextHook(s, backlog);
end;
function accept_HookProc(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket; stdcall;
var Package: TPackage;
Resp: Boolean;
address: TSockAddr;
addresslen: Integer;
begin
Result := accept_NextHook(s, addr, addrlen);
getpeername(Result, address, addresslen);
if Result <> SOCKET_ERROR then
begin
Package.Msg := 'accept';
StrPCopy(@Package.ParamStr, inet_ntoa(address.sin_addr));
Package.ParamInt := Result;
if SendIpcMessage('TheBootQueue', @Package, SizeOf(Package), @Resp, SizeOf(Resp)) then
if Resp then
if closesocket(Result) = 0 then
Windows.Beep(500,100);
end;
end;
{$R *.res}
begin
HookApi('wsock32.dll', 'listen', @listen_HookProc, @listen_NextHook);
HookApi('wsock32.dll', 'accept', @accept_HookProc, @accept_NextHook);
ConType := ctUnknown;
end.
BTW i removed some of the unimportant or unused code.