Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перехват


Страницы:   1 2 3 4 5 6 7 8

Powerland ©   (2004-08-26 00:35:00) 

необходимо было реализовать перехват вызова некоторых системных функции. в процесс внедряется dll, а затем из неё производится замена адреса перехода на нужную фунцию. но это почему-то не работает. кто-нить встречался с этой проблемой?


хакер_новичок   (2004-09-02 21:30:00) [101]

Удалено модератором


VMcL   (2004-09-02 19:24:00) [102]

>> хакер_новичок  (02.09.04 18:45) [46]

От кого скрыть?


хакер_новичок   (2004-09-02 18:45:00) [103]

Удалено модератором


хакер_новичок   (2004-09-02 18:24:00) [104]

Удалено модератором


Digitman   (2004-09-02 18:21:00) [105]


> не так давно начал кадить


оч надеюсь, что не гадить

остальное - завтра


хакер_новичок   (2004-09-02 18:19:00) [106]

Удалено модератором


хакер_новичок   (2004-09-02 18:14:00) [107]

Удалено модератором


Digitman   (2004-09-02 18:10:00) [108]


хакер_новичок  



> шоб прогу спрятать ?


а нахрена ?


> дай


на


пример перехвата  NTкуерсусинфо


см. выше

отличий (за исключением имени библиотеки и имени ф-ци) -  никаких


хакер_новичок   (2004-09-02 17:53:00) [109]

Удалено модератором


хакер_новичок   (2004-09-02 17:50:00) [110]

Удалено модератором


Digitman   (2004-09-02 15:40:00) [111]


> kaZaNoVa   (02.09.04 15:34) [37]


работает ? ну так - ура ?! .. а куда оно денется !)


kaZaNoVa   (2004-09-02 15:34:00) [112]

[35] Digitman ©   (02.09.04 14:43) Огромное спасибо !!!
всё получилось !
я правда немного "извратился" и сделал так:

function MyMessageBoxA(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall;
begin
SetApiHook(GetModuleHandle('USER32.DLL'), 'MessageBoxA', pOldMessageBoxA);
result:=MessageBoxA(0, PChar('Call intercepted'#$A#$D'Original text is :'+lpText),
 'MessageBoxA intercepted', 0);
pOldMessageBoxA:= SetApiHook(GetModuleHandle('USER32.DLL'), 'MessageBoxA', @MyMessageBoxA);
end;

- я сам удивился, как сделал такую глупую ошибку с рекурсией .. совсем забыл, что функцию, которую вызываю, уже перехватил !
теперь понятно, откуда зависание и безумное потребление памяти !!!
ещё раз спасибо :)

p.s. интересно, почему все в примерах перехватывают messagebox  ??
я сперва хотел перехватить sleep() но показалось что слишком "смешная" функция .... :)))


Digitman   (2004-09-02 14:45:00) [113]

function MyMessageBoxA(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall;
begin
result:= pOldMessageBoxA(0, PChar('Call intercepted'#$A#$D'Original text is :'+lpText),
'MessageBoxA intercepted', 0);
end;


Digitman   (2004-09-02 14:43:00) [114]


> kaZaNoVa   (02.09.04 14:35) [34]


дык ... еклмн! ... ты ж здесь влупил бесконечную рекурсию !

каждый вызов MessageBoxA приводит к вызову MyMessageBoxA, который , в свою очередь, вновь приводит к вызову MessageBoxA !

это из серии "У попа была собака .."(С)


kaZaNoVa   (2004-09-02 14:35:00) [115]

function MyMessageBoxA(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall;
begin
result:=MessageBoxA(0, PChar('Call intercepted'#$A#$D'Original text is :'+lpText),
 'MessageBoxA intercepted', 0);
end;

begin
SetDebugPriv;
pOldMessageBoxA:= SetApiHook(GetModuleHandle('USER32.DLL'), 'MessageBoxA', @MyMessageBoxA);
if pOldMessageBoxA<>nil then beep;
end.


Digitman   (2004-09-02 14:34:00) [116]


> kaZaNoVa   (02.09.04 14:32) [32]
> Digitman у меня получилось скомпилировать


> чем это может быть вызвано ?


да всем чем угодно
покажи как используешь ф-цию


kaZaNoVa   (2004-09-02 14:32:00) [117]

Digitman у меня получилось скомпилировать, и запустить ..
но есть проблема ...
при попытке вызова "перехваченной" функции процесс начинает дико потреблять память и зависает !
- подскажите, чем это может быть вызвано ?


kaZaNoVa   (2004-09-01 13:47:00) [118]

[30] Digitman ©   (01.09.04 08:41)
thanks, ;)


Digitman   (2004-09-01 08:41:00) [119]

SIZE_OF_NT_SIGNATURE = SizeOf(DWord);

 IMAGE_MAX_SECTIONS                  = MAXWORD + 1; //Note that the Windows NT loader limits the Number of Sections to 96.
 IMAGE_MAX_IMPORT_MODULES            = MAXWORD + 1;
 IMAGE_MAX_IMPORT_MODULE_ENTRIES     = MAXWORD + 1;

type

 PImageImportByName = ^TImageImportByName;
 TImageImportByName = packed record
   Hint: Word;
   Name: packed array[0..0] of char;
 end;

 PImageThunkData = ^TImageThunkData;
 TImageThunkData = packed record
   case Byte of
     0: (ForwarderString: PByte);
     1: (Func:   PLongWord);
     2: (Ordinal: LongWord);
     3: (AddressOfData: PImageImportByName);
   end;

 PImportLookupTable = ^TImportLookupTable;
 TImportLookupTable = packed array[0..IMAGE_MAX_IMPORT_MODULE_ENTRIES - 1] of TImageThunkData;

 PImportAddressTable = ^TImportAddressTable;
 TImportAddressTable = packed array[0..IMAGE_MAX_IMPORT_MODULE_ENTRIES - 1] of TImageThunkData;

 PImageImportDescriptor = ^TImageImportDescriptor;
 TImageImportDescriptor = packed record
   RVAImportLookupTable: PImportLookupTable;
   TimeDateStamp: LongWord;
   FowarderChain: LongWord;
   RVAImportModuleName: LongWord;
   RVAImportAddressTable: PImportAddressTable;
 end;


kaZaNoVa   (2004-08-31 18:49:00) [120]

Digitman , осталась проблема с PImageImportDescriptor,PImageThunkData и SIZE_OF_NT_SIGNATURE, будьте добры, помогите :)
please !


Страницы:   1 2 3 4 5 6 7 8

Наверх

Титульная страница Поиск, карта сайта Написать письмо