0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 17
|
|
1 | |
Перехват выполнения скрипта12.11.2015, 15:41. Показов 1340. Ответов 8
Метки нет (Все метки)
Недавно начал заниматься реализацией перехвата функций dll. (на примерах с MessageBox, в интернете их куча), по средствам Detours MS (v1.5) у меня получилось перехватить. Хочу сейчас перехватить выполнение скрипта с использованием jscript.dll или vbscript.dll. В импорте у них имеются 4 функции:
1. DllCanUnloadNow; 2. DllGetClassObject; 3. DllRegisterServer; 4. DllUnregisterServer; Достаточно будет их перехватить ? в какую сторону мне копать, что бы реализовать данный метод? Добавлено через 4 часа 46 минут Поправка по теме: Есть ли возможность в памяти пошагово отследить выполнение скрипта, то есть придется писать свой дебагер или же есть функция в dll(не экспортируемая), которую можно перехватить? Поправьте если несу бред) не понимая этого)
0
|
12.11.2015, 15:41 | |
Ответы с готовыми решениями:
8
Получить результат выполнения скрипта perl во время выполнения скрипта bash Результат выполнения программы в консоли пропадает после выполнения скрипта перехват загрузки скрипта Задержка выполнения скрипта |
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,424
|
|
14.11.2015, 23:45 | 2 |
для того что бы перехватить скрипт наверное нет.
тема настолько обширная что легче наверное будет копать к центру земли есть немного)
0
|
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 17
|
|
15.11.2015, 13:09 [ТС] | 3 |
Нашел и реализовал метод перехвата функции IActiveScriptParse::ParseScriptText, соответственно получаю текст скрипта перед выполнением. А как можно отследить вызовы всех методов в скрипте(во время выполнения), то есть получать название метода до выполнения его?
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,424
|
|
15.11.2015, 16:11 | 4 |
подозреваю что все вызовы идут через IDispatch - пробейте его функции и у вас будет картина всех вызовов
Добавлено через 1 минуту ...если мудрый пользователь скриптов цепляется к конкретному интерфейсу то конечно придется перехватывать все что вас интересует
0
|
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 17
|
||||||
20.11.2015, 09:02 [ТС] | 5 | |||||
Решил перехватить вот такую функцию __int32 __stdcall JsCreateObject2(class CSession*, class VAR*, class VAR*, int, class VAR*) из jscript.dll, таким способом ( за счет Detour):
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,424
|
|
20.11.2015, 09:48 | 6 |
к сожалению тут ничем не помогу...единственное что приходит в голову - может функция ждет их в обратном порядке
1
|
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 17
|
|
20.11.2015, 10:49 [ТС] | 7 |
Извините, забыл в посте выше указать, что return __int32 __stdcall GFN_JsCreateObject(class CSession* c , class VAR* a , class VAR* b , int Ti, class VAR* d ).
Добавлено через 8 минут Хотя указал)
0
|
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,424
|
|
20.11.2015, 10:52 | 8 |
да, я видел это, просто иногда бывает немножко магии) недавно передавал параметры через IDispatch и в функции AutoWrap почему то было с тремя восклицательными указано что передавать надо наоборот) просто мысли на уровне "а не попробовать ли протереть фары"
1
|
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 17
|
|
03.12.2015, 14:20 [ТС] | 9 |
Нашел решение с помощью IDA, там передавалось всего два параметра __int16* и __int32 , проблема была при вызове оригинальной функции, пришлось вызов писать по средства asm вставок, т.к регистр EAX поролся. Теперь думаю если выполнять свой код просто сохранить регистры а потом восстановить. Тему можно закрыть.
0
|
03.12.2015, 14:20 | |
03.12.2015, 14:20 | |
Помогаю со студенческими работами здесь
9
Порядок выполнения скрипта Скорость выполнения скрипта Время выполнения скрипта Процент выполнения скрипта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи | |||||
NoSQL базы данных: что это такое и какие существуют
bytestream 22.01.2025
В современную эпоху цифровой трансформации объемы данных растут экспоненциально, создавая новые вызовы для традиционных систем управления базами данных. NoSQL (Not Only SQL) представляет собой. . .
|
Обновление исследования от команды MCM (январь 2025 г.)
Programma_Boinc 22.01.2025
Обновление исследования от команды MCM (январь 2025 г. )
Мы продолжаем изучать молекулярные сигнатуры, связанные с раком легких, с текущим фокусом на GCM1, факторе транскрипции, участвующем в. . .
|
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
|
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
|
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
|
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
|
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
|
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
|
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач.
. . .
|
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
|
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
|
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
|