Посл.ответ |
Сообщение |
Ранг: 11.4 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 08 января 2008 16:59 · Личное сообщение · #1
Пусть моя программа называется My.exe. Чужая прога называется Program.exe. В ней есть поток PrThread.
Как мне из моей программы My.exe передать управление в поток PrThread? Желательно чтобы эта передача управления происходила моментально.
| Сообщение посчитали полезным: |
|
 Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 08 января 2008 17:07 · Личное сообщение · #2
Поток принадлежит процессу, как это ты собрался взять и перелезть в другой процесс? Юзай инжект длл что ли, не совсем то, но всё же. Топику место в другом подфоруме.
| Сообщение посчитали полезным: |
Ранг: 11.4 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 08 января 2008 19:00 · Личное сообщение · #3
мне просто надо чтобы была приостановлена работа текущего потока и как можно быстрее (желательно моментально) управление было передано на определенный поток в другом процессе.
| Сообщение посчитали полезным: |
Ранг: 159.1 (ветеран), 7thx Активность: 0.13↘0 Статус: Участник
|
Создано: 08 января 2008 20:00 · Поправил: tempread · Личное сообщение · #4
shob_vas
Подробно я конечно не расскажу, но если иметь много времени и желания, то делай так, как делает арма - своей програмой отлаживай другую программу, и при определенных условиях стопай отлаживаемую программу и дальше делай все что хочешь. Вот только наверняка тебе нужно что-то другое, опиши подробно, что именно ты там делаешь.
| Сообщение посчитали полезным: |
Ранг: 11.4 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 08 января 2008 20:09 · Личное сообщение · #5
tempread
К тому процессу прикреплена некоторыя нужная мне длл. Мне надо из под того процесса вызвать эту функцию и передать значение (результат в другой процесс (мой)). Только сделать это надо не один раз, а постоянно. То есть вариант с потоком (в том процессе) который будет сидеть и ждать пока не изменится какая нибудь переменная а потом вызывать функцию не подходит.
| Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 09 января 2008 05:54 · Личное сообщение · #6
shob_vas пишет:
К тому процессу прикреплена некоторыя нужная мне длл. Мне надо из под того процесса вызвать эту функцию и передать значение (результат в другой процесс (мой)). Только сделать это надо не один раз, а постоянно
тогда тебе надо будет реализовать interprocess communication (IPC). Сделать это модно исмользуя pipe, windows message или socket.
| Сообщение посчитали полезным: |
 Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 09 января 2008 08:08 · Личное сообщение · #7
пишите базонезависимый код, который буит находить библу, получать в ней нужные функи и исполнять их.. потом инжект его в program.exe, CreateRemoteThread, там полученный результат пусть через WriteProcessMemory записываецо в АП my.exe и всё.
з.ы. если ты все это напишешь - ты извращенец :D
----- invoke OpenFire | Сообщение посчитали полезным: |
 Ранг: 240.5 (наставник) Активность: 0.19↘0 Статус: Участник Author of ACKiller
|
Создано: 09 января 2008 17:49 · Поправил: HoBleen · Личное сообщение · #8
Можно попробовать через евенты реализовать - второй процесс ждет евент. Когда поток первого процесса выставляет этот евент, то поток из второго процесса тут же должен очнуться. То же самое, только более извращенный способ предлагает tempread =)
| Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 09 января 2008 22:58 · Поправил: s0larian · Личное сообщение · #9
HoBleen, прав, "именной" event можно создать в одном процессе и получить в друом. Но этого мало - надо ведь ещё и данные послать/получить. Конечно, можно извратится с (Read/Write)ProcessMemory но это бессмысленно т.к. это есть переписывание named pipe.
| Сообщение посчитали полезным: |
 Ранг: 126.7 (ветеран) Активность: 0.14↘0 Статус: Участник #CCh
|
Создано: 10 января 2008 00:26 · Личное сообщение · #10
HoBleen я почему то так понял, что второй поток это стороняя программа. Как она будет ждать event? Кто её об этом попросит? ))) Или я чото непонял..
----- invoke OpenFire | Сообщение посчитали полезным: |
 Ранг: 240.5 (наставник) Активность: 0.19↘0 Статус: Участник Author of ACKiller
|
Создано: 10 января 2008 11:24 · Личное сообщение · #11
s0larian пишет:
Но этого мало - надо ведь ещё и данные послать/получить.
Я отвечал на 1й пост ТС - как быстрее передать управление) Если передавать управление с параметрами, то, наверное да, лучше пайпов ничего нет.
Ice-T
shob_vas пишет:
К тому процессу прикреплена некоторыя нужная мне длл. Мне надо из под того процесса вызвать эту функцию и передать значение (результат в другой процесс (мой)).
Т.о. мы имеем власть во 2м процессе.
| Сообщение посчитали полезным: |
Ранг: 11.4 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 10 января 2008 15:29 · Личное сообщение · #12
в обоих процессах есть мой тред, которым я могу управлять.
| Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 10 января 2008 21:28 · Личное сообщение · #13
shob_vas, RTFM: named pipe.
| Сообщение посчитали полезным: |
Ранг: 30.2 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 11 января 2008 13:40 · Личное сообщение · #14
shob_vas
Если тебе нужно тупо передать что то из одного процесса в другой и есть своя библа , то юзай Шаред мемори shared memory в гугле.
| Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 11 января 2008 22:37 · Личное сообщение · #15
undb, шеард  И ты советуешь ему реализовать IPC через shared memory и event? Можно, но зачем в пустую тратить время?
| Сообщение посчитали полезным: |
Ранг: 11.4 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 12 января 2008 00:30 · Личное сообщение · #16
про shared мемори я прочитал еще до того как написать этот топик. Я через него и думаю передавать данные. вопрос весь в том как передать управление другому потоку с наименьшими затратами времени.
| Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 12 января 2008 03:25 · Личное сообщение · #17
shob_vas, SetEvent(named_event); WaitForSingleObject(named_event); это и есть IPC.
| Сообщение посчитали полезным: |