Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехватить открытие файла 
:(
    Опции темы
tigger
Дата 8.3.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Как можно перехватить например открытие любых txt файлов?


--------------------
user posted image
PM MAIL   Вверх
bartram
Дата 8.3.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



1. Поиск Перехват Api
2. Перехватывай CreateFile


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
MetalFan
Дата 8.3.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



bartram
+ назначить в реестре на расширение txt свое приложение...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
bartram
Дата 9.3.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(MetalFan @  8.3.2007,  21:03 Найти цитируемый пост)
+ назначить в реестре на расширение txt свое приложение...

А зачем? Можно просто перехватывать обращение и фильтровать по расширению txt smile



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
MetalFan
Дата 11.3.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(bartram @  9.3.2007,  09:19 Найти цитируемый пост)
Можно просто перехватывать обращение 

по моему перехват апи эт не совсем "просто"....


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
tigger
Дата 12.3.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Начал делать на CreateFile сделал, на файле тыкаешь блокнот грузится хотя пустой не запускается. В чем дело не пойму.


--------------------
user posted image
PM MAIL   Вверх
bartram
Дата 12.3.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(tigger @  12.3.2007,  12:43 Найти цитируемый пост)
Начал делать на CreateFile сделал, на файле тыкаешь блокнот грузится хотя пустой не запускается. В чем дело не пойму. 

Код в студию smile тут телепатов нет



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
tigger
Дата 12.3.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



За основу был взят пример по перехвату MessageBoxA.

Присоединённый файл ( Кол-во скачиваний: 25 )
Присоединённый файл  adwarebox.rar 18,62 Kb


--------------------
user posted image
PM MAIL   Вверх
bartram
  Дата 12.3.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Мдя....
Код

library AdvBox32;

uses
  Windows;

type
 OldCode = packed record
  One: dword;
  two: word;
 end;


far_jmp = packed record
  PuhsOp: byte;
  PushArg: pointer;
  RetOp: byte;
 end;

var
 JmpMbw, JmpMba: far_jmp;
 OldMbw, OldMba: OldCode;
 MbwAdr, MbaAdr: pointer;


function TrueCreateFile(lpFileName: PWideChar; dwDesiredAccess,
                       dwShareMode: DWORD;
                       lpSecurityAttributes: PSecurityAttributes;
                       dwCreationDisposition, dwFlagsAndAttributes: DWORD;
                       hTemplateFile: THandle): THandle; stdcall;
var
 Written: dword;
begin

WriteProcessMemory(INVALID_HANDLE_VALUE, MbwAdr,
                     @OldMbw, SizeOf(OldCode), Written);

Result:=0;//CreateFileW(lpFileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes,dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile);


WriteProcessMemory(INVALID_HANDLE_VALUE, MbwAdr,
                     @JmpMbw, SizeOf(far_jmp), Written);
end;

function MyCreateFileW(lpFileName: PWideChar; dwDesiredAccess,
                       dwShareMode: DWORD;
                       lpSecurityAttributes: PSecurityAttributes;
                       dwCreationDisposition, dwFlagsAndAttributes: DWORD;
                       hTemplateFile: THandle): THandle; stdcall;
begin
Result := TrueCreateFile(lpFileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes,dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile);
end;

function MyCreateFileA(lpFileName: PAnsiChar; dwDesiredAccess,
                       dwShareMode: DWORD;
                       lpSecurityAttributes: PSecurityAttributes;
                       dwCreationDisposition, dwFlagsAndAttributes: DWORD;
                       hTemplateFile: THandle): THandle; stdcall;
var
 cLen: dword;
 FileName:PWideChar;
begin
cLen := lstrlen(lpFileName) * SizeOf(WideChar) + 2;
GetMem(FileName, cLen);
StringToWideChar(lpFileName, FileName, cLen);
Result := MyCreateFileW(FileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes,dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile);
FreeMem(FileName);
end;


Procedure SetHook();
var
 hkernel32: dword;
 Bytes: dword;
begin
  hkernel32 := GetModuleHandle('kernel32.dll');

  MbwAdr  := GetProcAddress(hkernel32, 'CreateFileW');
  MbaAdr := GetProcAddress(hkernel32, 'CreateFileA');

  ReadProcessMemory(INVALID_HANDLE_VALUE, MbwAdr, @OldMbw, SizeOf(OldCode), Bytes);
  ReadProcessMemory(INVALID_HANDLE_VALUE, MbaAdr, @OldMba, SizeOf(OldCode), Bytes);


  JmpMbw.PuhsOp  := $68;
  JmpMbw.PushArg := @MyCreateFileW;
  JmpMbw.RetOp   := $C3;

  JmpMba.PuhsOp  := $68;
  JmpMba.PushArg := @MyCreateFileA;
  JmpMba.RetOp   := $C3;




  WriteProcessMemory(INVALID_HANDLE_VALUE, MbwAdr, @JmpMbw, SizeOf(far_jmp), Bytes);
  WriteProcessMemory(INVALID_HANDLE_VALUE, MbaAdr, @JmpMba, SizeOf(far_jmp), Bytes);

end;

Procedure Unhook();
var
 Bytes: dword;
begin
  WriteProcessMemory(INVALID_HANDLE_VALUE, MbaAdr, @OldMba, SizeOf(OldCode), Bytes);
  WriteProcessMemory(INVALID_HANDLE_VALUE, MbwAdr, @OldMbw, SizeOf(OldCode), Bytes);
end;


// залепа
Function MessageProc(code : integer; wParam : word;
                    lParam : longint) : longint; stdcall;
begin
 CallNextHookEx(0, Code, wParam, lparam);
 Result := 0;
end;

Procedure SetGlobalHookProc();
begin
 SetWindowsHookEx(WH_GETMESSAGE, @MessageProc, HInstance, 0);
 Sleep(INFINITE);
end;
//

Procedure SetGlobalHook();
var
 hMutex: dword;
 TrId: dword;
begin
 hMutex := CreateMutex(nil, false, 'AdvareHook');
 if GetLastError = 0 then
 CreateThread(nil, 0, @SetGlobalHookProc, nil, 0, TrId) else
 CloseHandle(hMutex);
end;

//входная точка dll
procedure DLLEntryPoint(dwReason: DWord);
begin
  case dwReason of
    DLL_PROCESS_ATTACH: begin
                             //установка глобальной ловушки
                          SetGlobalHook();
                          SetHook()
                        end;
    DLL_PROCESS_DETACH: UnHook();
  end;
end;


begin
 DllProc := @DLLEntryPoint;
 DLLEntryPoint(DLL_PROCESS_ATTACH);
end.

Так где ты собственно перехватываешь? Я не вижу например имени файла
Из кода я понял что ты просто пропускаешь эту функцию через свою dll, при этом ничего не изменяя. из-за этого и ошибки
И вообще ты взял плохой пример для понимания ИМХО smile
Вот держи  модули, и примеры перехвата, которые реализованы более "просто" для понимания. Если что то будут непонятно, то спрашивай smile

Это сообщение отредактировал(а) bartram - 12.3.2007, 15:43

Присоединённый файл ( Кол-во скачиваний: 109 )
Присоединённый файл  advapihook.rar 39,62 Kb


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
tigger
Дата 12.3.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Спасибо посмотрю, завтра напишу.


--------------------
user posted image
PM MAIL   Вверх
tigger
Дата 12.3.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Не могу скачать????


--------------------
user posted image
PM MAIL   Вверх
bartram
Дата 12.3.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



tigger, почему? сейчас проверил, все нормально качается. Ты как качаешь?


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
tigger
Дата 13.3.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Сохранить объект как... и сохраняет под именем файла id-1061614.html


--------------------
user posted image
PM MAIL   Вверх
bartram
Дата 13.3.2007, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



tigger, просто переходи по ссылке, все должно быть норм


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Yanis
Дата 13.3.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Цитата(tigger @  13.3.2007,  13:02 Найти цитируемый пост)
Сохранить объект как... и сохраняет под именем файла id-1061614.html 

Хитрый какой ;) Должен же форум посчитать кол-во скачиваний.

Это сообщение отредактировал(а) Yanis - 13.3.2007, 13:56


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
tigger
Дата 13.3.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Кликаю на прямую открывается страница http://forum.vingrad.ru/act-Attach/type/post/id-1061614.html со следующим содержимым:

Rar!;Рs $gzЂ#*в¬^яП3CMT ”СLЛХЃиНBFГ}Ш ҐЃm…¶Y%…Ґ?р0-APЏВ?ЅЉIШ‚KcпItћ‹3іf5Џ'ђ4УM4фqsеП ЂeXтЈ1ы°(Aњыђy–рSxЅ”q%ЇаL)i.ЈIBрОЊъфЗФДЌ‘рІћИШ%ъRq¤(йЗЊбЕ9Е)L хв`7ІNњДJ»]Ш%rцМчжzvЎqМЂіLЈї&·„пІЦѓ°}уЏb‹ФCс“oь жЪш5гщKх7 Д§HєЈaБlp ЃҐ,‹U©sљТ>qЬ;З№9b_уМ¦†i5лvЋЕж"ХЅ@кЮ/:О©ц U‚ѕ>xмНОїВzVBлї»9d*ІJ/‘ЌцuTM JщYљЃЁїґXjtАђ/ҐЛ !3ј ў¦?23 Readme.txtр' ЌLМНь?»иаь©Р$ckFЧш·§LеєБҐІi ЦдJИ¶q&R[?ьлkУєh·`/nЌV«гm%N8н[0ФЪфДУiЖеВхЮ‡@u5О ръзЖIррыxGп ’рьш5;mЦ+”™ИnOO]/ =xSц&ЉZКПWt•,qy‹,[\®”ьЫцљЇАjЩ„лх—iЉ—йЈ<*нФї¦y6[ёkoQЉО:»Г#„№kЪfOБАГЋт?х№ЯYБ Ь=Tїъ:^IЄ Њ±ъоЉ‰&І*ц љFЮ»р±`|&м4Я±ІY-V`@ °ЙZ©w”їµu`}д|H &bУUMycхЙьaыW uщ` 5HпІнЦ9ХФпN8О‚Є:лj¬«змmTџy*ЉЎЭ$д|Л^љsvgЄ ?Эу>Э–лљшFвqNЩUиq°юм-µрyѕE1~ћй2Я«ўЉxAµOn‚А-¬ў”A>Ж3+П»–e3иPИdј* щ(йП[gxBјьx2еФ©d†гҐАµпb¶8Kи,9vЄеiІЁу=|f“ЅжИiuUЗЌ]KFFXuєЌІFkЪАМlsћhЈ +-n?HйcH+zУсЉ|љАўRo–µ‹Еq¦ыwаЎТq рлхЃЊkц…GИњЖх§+‘Ђ¤x~ё3%lг—Яљ{!_Ё}*dQ§цРX‘`·ЗиЌp¤SФ°T/ѓp†зҐJ~µu{уA/Тн{‡m5wi>†С;ф9PXд”L‚>;¶ЋГю¬+МдT>R0ЎF)ЉсOЪG3© qшт(zАIЧ іоЂхbў!,ъ›±j&pоЮ+rДт™г»ВCИb+1,Ґ Фm $ zbsБe ёЕ±¦¦+aё9Ах6Ущ _МP®4oщH_DЗ# ЙѓУЏrВЫН?Eb¶ейјUэБzяV « е?…m„Щ§!Х"ћ™)uпXоє№~!AиОТB°ў ЙvЩ$-N“ЮLeRЬKўШG-#xybЋш­S†`И'»&\ПУм1ўЗ.эКй}Xєь|К d9i„&%&z:Ы{YF;u gW¤“Ф‘1ъІюl;%є‘Tg•‰tzN;&ЯМ(ГaС3!Г вЄpґ%зюќ»Eт2•+NЦюшжЌОtО@‹"ш­цмІ^`•M'µ%ѓА‡–Dьgшфµ3шк1;Ўtё™ТШб}{-У.ХЦcАСЖ&„ѕ¬Џи¦ЦІHЗU”(НЅц§¦†ЉIбІЧЙґG*Ь ЁGUВyUрЯOzvOіюC2ЩЉqєµ _`+J«”Н+0-™]¶‚%ѓЅ\xйЪ© бScЄїј#`2ыѓљ:31ІЮО ·Пhш}7ЁгуA0є<єlU$OWQ АUЕШг“МЕ'фщ7µ kгљ!JБj7s§у~?ш,wЄ`Ж›L№ња:їШч‡ХЮaїlџЉбќ+ј$\=AqвыКх`ЛМќгБФс¤љ yiЕ8’Зl_І:’ъГЭ'Kz9’ўіЧњлёЁ иZxC#±ГUµК' ЎFP`ЮmъЄс…‹м7—аиш­ж4ЫыёчёќжQµ=ћЯh7’'хл$¬3) 6JжфYC‹R`Ю ·ЩpCаqмжdцq+ьуъ%яqЭкФ†ФЧхs РМ›±:ђYVz8°° ~yџGЗфХ(оЄ–ЖКДычIᥚю„\аШ/P}”‡z$UЬE ‘wZ~ёX;?vиY•4ЕvЙЎ7т'gя}Ѕ®ЯХЫъюБнЙя µШtРђ.*'5 ?°[n25 clean.batр$э=я`§dg‚с A-9ш%Ѓ’Rуk?Я$;–&@ьПа‡?.............. 

bartram
может на ящик кинешь [email protected]


--------------------
user posted image
PM MAIL   Вверх
bartram
Дата 14.3.2007, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(tigger @  13.3.2007,  14:49 Найти цитируемый пост)
может на ящик кинешь [email protected] 

отправил



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Yanis
Дата 14.3.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 13
Всего: 111



Цитата(tigger @  13.3.2007,  15:49 Найти цитируемый пост)
Кликаю на прямую открывается страница http://forum.vingrad.ru/act-Attach/type/post/id-1061614.html со следующим содержимым:

Я подозреваю, что ты используешь в качестве броузера Opera.... У меня такая ситуация там постоянно повторялась.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 14.3.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(tigger @  13.3.2007,  14:49 Найти цитируемый пост)
со следующим содержимым:
Клик правой кнопой.
В меню "Save target as..." (сохранить по ссылке как).
PM MAIL   Вверх
Coffein
Дата 18.4.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Всех приветствую! У меня похожая проблема, и заключается она в следующем:

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

Я плохо понимаю перехват Апи-функций, bartram, ты выложил исходники, поясни мне пожалуста код и принцип advApiHook:
Код

function HookProc(lpModuleName, lpProcName: PChar;
                  NewProc: pointer; var OldProc: pointer): boolean;
var
 hModule: dword; 
 fnAdr: pointer;
begin
 Result := false;
 hModule := GetModuleHandle(lpModuleName);
 if hModule = 0 then hModule := LoadLibrary(lpModuleName);
 if hModule = 0 then Exit;
 fnAdr := GetProcAddress(hModule, lpProcName);
 if fnAdr = nil then Exit;
 Result := HookCode(fnAdr, NewProc, OldProc);
end;


и HookProc:
Код

program aHookProc;

uses
  Windows,
  advApiHook;
  
var
TrueMessageBoxA: function(hWnd: HWND; lpText, lpCaption:
                          PAnsiChar; uType: UINT): Integer; stdcall;

function NewMessageBoxA(hWnd: HWND; lpText, lpCaption:
                        PAnsiChar; uType: UINT): Integer; stdcall;
begin
  TrueMessageBoxA(0, 'Перехват установлен!', 'HookProc', 0);
end;

begin
  MessageBoxA(0, 'Новый метод API перехвата.', 'HookProc', 0);

  HookProc('user32.dll', 'MessageBoxA', @NewMessageBoxA, @TrueMessageBoxA);

  MessageBoxA(0, 'Не работает!', 'HookProc', 0);

  UnhookCode(@TrueMessageBoxA);
  
  MessageBoxA(0, 'Перехват снят.', 'HookProc', 0);
end.




PM MAIL WWW ICQ   Вверх
bartram
  Дата 19.4.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Кратко:
Код

begin
  MessageBoxA(0, 'Новый метод API перехвата.', 'HookProc', 0); //показываем сообщение :)
  HookProc('user32.dll', 'MessageBoxA', @NewMessageBoxA, @TrueMessageBoxA); //установка перехвата
//первый аргумент - системная библиотека где находиться функция
//второй аргумент - имя функции (которую мы перехватываем) в этой библиотеке 
// третий аргумент - указатель на функцию КОТОРОЙ будет заменена оригинальная
// четвертый аргумент - указатель на оригинальную функцию (не перехваченную)
  MessageBoxA(0, 'Не работает!', 'HookProc', 0); //проверяем сработал ли перехват
  UnhookCode(@TrueMessageBoxA); //снимаем перехватчик
  
  MessageBoxA(0, 'Перехват снят.', 'HookProc', 0); // показываем сообщение о том что перехват снят
end.

Все предельно просто. Будут вопросы пиши.


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Coffein
Дата 27.4.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



bartram, Спасибо за коментарии, с примером разобрался, но свою задачу так решить и не смог. Помоги разобраться:

- Мне нужно перехватывать функцию CopyFile глобально.  Для этого по примеру написал дллку:

Код

library Hook;

uses
  Windows,
  advApiHook;

{$R *.res}

const
  MutexName='__API_HOOK';

var
SH:HHOOK = 0;

  CopyFileNextHook: function (lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL; stdcall;

//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

function CopyFileHookProc(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL; stdcall;
begin
  MessageBox(0, 'Функция: CopyFile', 'Позволить ?', MB_YESNO or MB_ICONQUESTION);
end;

function MsgProc(code:DWORD;wParam,lparam:DWORD):DWORD;stdcall;
begin
  CallNextHookEx(SH,code,wParam,lparam);
end;

procedure SetWindowsHook(e:Boolean); stdcall;
var
  M:THandle;
begin
  if e then
   begin
    m:=CreateMutex(0,false,MutexName);
    if m=0 then exit;
    SH:=SetWindowsHookEx(WH_GETMESSAGE,@MsgProc,HInstance,0);
   end
       else
    UnhookWindowsHookEx(sh);
end;

procedure HandleEvents(reason: integer);
begin
  case reason of
    DLL_PROCESS_ATTACH:
      begin
        SetWindowsHook(true);
        HookProc('kernel32.dll', 'CopyFileW', @CopyFileHookProc, @CopyFileNextHook);
      end;
    DLL_PROCESS_DETACH:
      begin
        SetWindowsHook(false);  
        UnhookCode(@CopyFileNextHook);
      end;
  end;
end;

   //     HandleEvents(DLL_PROCESS_DETACH);

begin
  DllProc := @HandleEvents;
  MessageBox(0, 'Запускаем дллку', 'Позволить ?', MB_YESNO or MB_ICONQUESTION);
  HandleEvents(DLL_PROCESS_ATTACH);
///  CopyFile('C:\test.txt','C:\test1.txt',true);
end.
end.


ПРоблема в том что, если я в своем приложении вызываю функцию CopyFile, то она перехватывается, а если я в Винде жму копировать, то на меня ноль эмоций. ПОдскажи как быть? Может я не ту функцию отлавливаю, или чтобы подгрузит дллку к explorer'у надо что то еще сделать?

Это сообщение отредактировал(а) Coffein - 27.4.2007, 17:14
PM MAIL WWW ICQ   Вверх
bartram
Дата 27.4.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Цитата(Coffein @  27.4.2007,  16:55 Найти цитируемый пост)
ПРоблема в том что, если я в своем приложении вызываю функцию CopyFile, то она перехватывается, а если я в Винде жму копировать, то на меня ноль эмоций. ПОдскажи как быть? Может я не ту функцию отлавливаю, или чтобы подгрузит дллку к explorer'у надо что то еще сделать?

Если в своем приложении срабатывает значит делаешь правильно.  Ты внедряешь dll в Explorer?
Посмотри примеры advApiHook там есть пример внедрения dll в чужие процессы.



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Coffein
Дата 28.4.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Я в примере использую установку глобального хука на все события происходящие в Винде, тем самым внедряю свою дллку ко всем процессам. Отсюда я пологал что она внедряется и в explorer. Но в отличае всех приложений explorer  мне не выдал сообщение(при подключении дллки выполняется код вывода сообщения) о том что дллка к нему подключена. я завершал explorer, потом заново запускал, тогда сообщение мне выводилось, но результата ни какого. В примере advApiHook смотрел, но не разобрался как оно функцианирует. 
PM MAIL WWW ICQ   Вверх
bartram
Дата 28.4.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Попробуй завершить explorer и запустить его потом с помощью:
Код

function CreateProcessWithDll(lpApplicationName: pchar;
                              lpCommandLine: pchar;
                              lpProcessAttributes,
                              lpThreadAttributes: PSecurityAttributes;
                              bInheritHandles: boolean;
                              dwCreationFlags: dword;
                              lpEnvironment: pointer;
                              lpCurrentDirectory: pchar;
                              const lpStartupInfo: TStartupInfo;
                              var lpProcessInformation: TProcessInformation;
                              ModulePath: PChar): boolean;

И посмотри что будет.
эта функция есть в AdvApiHook
P.S. будет время напишу тебе рабочий код.


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Coffein
Дата 30.4.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



bartram, если не трудно поясни парамметры функции.
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1268 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.