|
|
|
Перехват API функций
|
|||
|---|---|---|---|
|
#18+
Исходная задача. Есть служба, которая загружает и выполняет произвольные плагины. В одном из плагинов, написанном на С, создается собственный поток. В этом потоке возникает исключение и падает весь процесс службы. Мой вариант решения: найти в памяти загруженную kernel32, пропатчить в функции CreateThread первые 5 байт, поставив джамп на мою функцию, в своей функции заменить переданную функцию потока на свою и вызвать оригинальный CreateThread. Свою функцию потока реализовать так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Оцените работоспособность и степень кривизны решения С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 16:10:29 |
|
||
|
Перехват API функций
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, посмотри в сторону SetUnhandledExceptionFilter. Ставь свой обработчик, в нём делай логгинг + ExitThread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 16:14:59 |
|
||
|
Перехват API функций
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Я несколько сомневаюсь в совместимости Cшных и дельфийских исключений, но по теме вопроса: https://github.com/MahdiSafsafi/delphi-detours-library ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 17:03:36 |
|
||
|
Перехват API функций
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, 1. Код времён Turbo Pascal 7.0 1992 года. 2. Передавать E в параметре нельзя. Читай, как делфи обрабатывает исключения и освобождает память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 17:24:06 |
|
||
|
Перехват API функций
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Есть служба, которая загружает и выполняет произвольные плагины. сделай им песочницу через свой доп процесс, учитывая службы в W10 и GChrom - это нынче трендный тренд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 17:50:43 |
|
||
|
Перехват API функций
|
|||
|---|---|---|---|
|
#18+
Valery_B_Vasilisk_, 2. Передавать E в параметре нельзя. Читай, как делфи обрабатывает исключения и освобождает память. Эээм.... а можно ссылку по теме? Потому что, AFAIK, E существует до выхода из блока Except-End, а куда ты её передаёшь в это время вроде значения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 17:53:36 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=140&tid=2042145]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 315ms |

| 0 / 0 |
