Посл.ответ |
Сообщение |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 09 июля 2007 15:51 · Личное сообщение · #1
Вот недавно задался вопросом.
Есть прога, которая выполняет опр. действия (напр. получение данных с кокого-либо устр-ва, ну или какие-либо др. действия, неважно), т.е. в коде есть функция, которая это осуществляет. Вопрос вот в чём, можно-ли как-нить программно управлять этой прогой, т.е. напр. в определённое время принудительно вызвать эту функцию с помощью другой программы (или драйвера). Что для этого нужно. Хде можно об этом почитать?
Зарание спасибо.
ЗЫ
Дело в том, что прогу патчить нельзя (в этом случае можно было просто дописать свой код  ), возможен патч в памяти, но тож не желательно  , у меня есть идея юзать для этого DebugAPI, но может есть ещё какие-нить способы...
| Сообщение посчитали полезным: |
|
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 09 июля 2007 16:03 · Личное сообщение · #2
лоадер сделай
| Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 09 июля 2007 16:08 · Личное сообщение · #3
прописать в реестр (непомню куда но куда ся мылвара пишет) dll которая будет атачиться ко всем процессам и в InitDll проверять тот ли модуль а потом делать то что надо =] не красиво, но первое что пришло в голову...
а так если прога твоя и тебе надо построить сервер/клиент локально то можно юзать WM_COPYDATA, Named Pipe или mailslot для передачи данных между процессами...
----- Shalom ebanats! | Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 09 июля 2007 16:14 · Личное сообщение · #4
Самый тупой вариант, если не использовать драйвер - это если прога выполняет функу по какому либо событию (нажатие кнопки, таймер) то сгенерить это событие. =)
----- radio uno in ibisa ... | Сообщение посчитали полезным: |
 Ранг: 340.0 (мудрец), 22thx Активность: 0.12↘0 Статус: Участник THETA
|
Создано: 09 июля 2007 19:11 · Личное сообщение · #5
SLV пишет:
прописать в реестр (непомню куда но куда ся мылвара пишет) dll которая будет атачиться ко всем процессам и в InitDll проверять тот ли модуль а потом делать то что надо =]
По-моему, чересчур круто.
Такой глобальности скорее всего не понадобится. Как посоветовал Ara проще всего сделать лоадер, запускающий нужный процесс и ждущий окончания распаковки.
Но здесь сложность видимо в том, каким образом инициировать вызов нужной функции. Но это уже будет зависеть от специфики проги и интересующей функции.
----- Программист SkyNet | Сообщение посчитали полезным: |
 Ранг: 240.5 (наставник) Активность: 0.19↘0 Статус: Участник Author of ACKiller
|
Создано: 09 июля 2007 19:14 · Личное сообщение · #6
FrenFolio пишет:
Но здесь сложность видимо в том, каким образом инициировать вызов нужной функции.
CreateRemoteThread если не используется синхронизация.
| Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 09 июля 2007 19:23 · Личное сообщение · #7
+гугл
rsdn.ru/article/baseserv/runcode.xml
----- radio uno in ibisa ... | Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 09 июля 2007 21:22 · Личное сообщение · #8
> CreateRemoteThread
есть тока в nt'подобных системах если что...
----- Shalom ebanats! | Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 09 июля 2007 22:20 · Личное сообщение · #9
Спосибо за советы, буду пробовать
Ara пишет:
лоадер сделай
FrenFolio пишет:
Но здесь сложность видимо в том, каким образом инициировать вызов нужной функции. Но это уже будет зависеть от специфики проги и интересующей функции.
Именно, вот в этом и сложность, как вызвать эту ф-ию (конечно со своими параметрами/аргументами, но это уже формальности  ), прога написана на дельфях, нужная ф-ия вызывается в обработчике нажатия кнопки...
есть идея генерирование этого события, но тохда в выполнится весь код обработчика, а мну нужно только одну ф-ию вызвать, вот и получается
И всё же думаю с помощью драйвера это реализовать, но во жаль инфы мало, буду копать далее
SLV пишет:
есть тока в nt'подобных системах если что...
да осъ - WinXP SP2, т.е. с этим всё впорядке
| Сообщение посчитали полезным: |
Ранг: -4.4 (нарушитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 09 июля 2007 22:32 · Личное сообщение · #10
SLV пишет:
есть тока в nt'подобных системах если что
А что, есть не NT подобные?
| Сообщение посчитали полезным: |
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 09 июля 2007 22:33 · Поправил: Ara · Личное сообщение · #11
При чем тут драйвер-то? Немного непонятная твоя задача. Если по нажатию копки выполняется какое-то действие - сэмулируй нажатие по таймеру и всего делов. Если нужно выполнить тока одну определенную процедуру - реверси прогу, определяй входные данные и делай патч проги в памяти, затем эмулируй нажатие кнопки и возвращай всё обратно.
| Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 09 июля 2007 22:47 · Поправил: alexey_k · Личное сообщение · #12
Infernal_Terror пишет:
А что, есть не NT подобные?
хочеш сказать, что Win95,98,ME - относятся к линейки NT
у осей 9x/ME и NT (NT4, 2k,XP,2k3) разная архитектура...
Ara пишет:
Если нужно выполнить тока одну определенную процедуру - реверси прогу, определяй входные данные и делай патч проги в памяти, затем эмулируй нажатие кнопки и возвращай всё обратно.
Скорее всего так и сделаю, спосибо за совет
| Сообщение посчитали полезным: |
Ранг: -4.4 (нарушитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 09 июля 2007 23:17 · Личное сообщение · #13
alexey_k пишет:
Win95,98,ME
Никогда не видел таких чудо-осей. Вы бы еще MS-DOS или спектрум вспомнили.
| Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 10 июля 2007 06:40 · Личное сообщение · #14
alexey_k пишет:
жаль инфы мало
в googl'е море инфы. Статью читал, что я дал? Находишь таблицу экспорта, ищещь свою функу, получаешь её адрес... вообщем там написано подробно. А если по кнопке, то вообще просто. Ara впринципе объяснил уже всё.
----- radio uno in ibisa ... | Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 10 июля 2007 06:41 · Личное сообщение · #15
Infernal_Terror пишет:
Вы бы еще MS-DOS или спектрум вспомнили.
Нехорошо забывать про такие вещи.
----- radio uno in ibisa ... | Сообщение посчитали полезным: |
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 10 июля 2007 07:18 · Личное сообщение · #16
В таблице экспорта ничего он не найдет - твоя статья не прокатит.
| Сообщение посчитали полезным: |
 Ранг: 85.4 (постоянный) Активность: 0.08↘0 Статус: Участник
|
Создано: 10 июля 2007 07:36 · Личное сообщение · #17
Ну там хотя бы решается этот вопрос:
FrenFolio пишет:
каким образом инициировать вызов нужной функции.
Остаётся найти адрес.
----- radio uno in ibisa ... | Сообщение посчитали полезным: |
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 10 июля 2007 07:45 · Личное сообщение · #18
В статье разъясняется, как вызвать функцию из чужой dll, тут же немного другое.
| Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 10 июля 2007 07:52 · Поправил: alexey_k · Личное сообщение · #19
Ara пишет:
В статье разъясняется, как вызвать функцию из чужой dll, тут же немного другое.
совершенно верно, вызов не из DLL...
хотя статья тож. полезная
ЗЫ
Infernal_Terror пишет:
ы бы еще MS-DOS или спектрум вспомнили.
будешь смеятся, но там, хде я работаю (почта россии) треть сидит в D0S, остальные - Win98,ME, ток процентов 10 - XP...
| Сообщение посчитали полезным: |
Ранг: -4.4 (нарушитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 10 июля 2007 08:10 · Личное сообщение · #20
alexey_k
А на спектрум у вас работают? Или может PDP11 еще где-то используется?
Имхо не стоит заботиться о совместимости программ с осями старее win2000. Если кто еще ими пользуется, то это его проблемы.
| Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 10 июля 2007 08:34 · Личное сообщение · #21
Infernal_Terror пишет:
Имхо не стоит заботиться о совместимости программ с осями старее win2000. Если кто еще ими пользуется, то это его проблемы.
Дело в том, что железо очень старое, есть напр. раритеты как Pentium 133, 32 MB RAM, 700 MB HDD, PCI-VGA Trio 3D....
| Сообщение посчитали полезным: |
Ранг: 162.4 (ветеран), 11thx Активность: 0.06↘0 Статус: Участник
|
Создано: 10 июля 2007 11:12 · Личное сообщение · #22
Я обычно беру системную dll которую импортирует прога
Цепляю к её импорту свою прогу (копия в тойже дир. что и прога)
( в маиндлл свой код.)
В итоге мою длл грузит распаковщик.
P.S. Я пока не встечал пакер который сначала импорт делает а потом распаковку . всегда наоборот.
| Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 10 июля 2007 11:31 · Личное сообщение · #23
SWR пишет:
В итоге мою длл грузит распаковщик.
ты чуть не понял, прога не упакована, чистый Delphi код, а патчить нельзя, т.к. она обновляет постоянно БД из инета, а там (в файлах обновления) прописан MD5-хэш файла, если не совпадёт, то обновлятся не будет, это типа защиты от вирей, походу...
| Сообщение посчитали полезным: |
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 10 июля 2007 11:41 · Личное сообщение · #24
о, дык подмени мд5 в апдейтах =)
| Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 10 июля 2007 11:52 · Поправил: alexey_k · Личное сообщение · #25
Ara пишет:
о, дык подмени мд5 в апдейтах =)
получается, нужно писать прогу, которая будет ловить апдейты и подменять хэш...
| Сообщение посчитали полезным: |
 Ранг: 1288.1 (!!!!), 273thx Активность: 1.29↘0 Статус: Участник
|
Создано: 10 июля 2007 12:03 · Личное сообщение · #26
Угу. Дык это будет проще. Можешь даже перехватить момент окончания апдейтов и дописать код туда, вызов длл например, которая сама пофиксит мд5 в апдейтах.
| Сообщение посчитали полезным: |
Ранг: 135.2 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 10 июля 2007 13:53 · Личное сообщение · #27
во скорее так и сделаю, спасибо
| Сообщение посчитали полезным: |