HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

чужой процесс , вызов функции c++
  #1  
Старый 17.03.2010, 17:06
fromegg
Новичок
Регистрация: 20.02.2010
Сообщений: 6
С нами: 8538856

Репутация: 0
По умолчанию чужой процесс , вызов функции c++

Добрый день! Win xp.
Есть такая задача - в процессе p1
существует функция f1 -> как заставить p1 выполнять f1 из процесса p2 ??

грубо говоря управлять некими функциями одной программой с помощью другой )

я понимаю что это вторжение в адресное пространства чужого процесса ,Но еще одно условие ! нужно узнать адрес или название самой f1 . известно например что f1 выполняет некое конкретное действие в программе..

собственно вот сама цель.. хотелось бы увидеть пример кода для реализации если не всей идеи на примере любой стандартной программы винды , то хотябы частичной.
 
Ответить с цитированием

  #2  
Старый 17.03.2010, 17:39
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
С нами: 8795069

Репутация: 79
По умолчанию

CreateRemoteThread

функцию ищешь сигнатурно, читаешь память с помощью ReadProcessMemory

либо с помощью натива, но тебе ещё рано
 
Ответить с цитированием

  #3  
Старый 17.03.2010, 17:48
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

Если обе проги твои, то лучший вариант - оформить функцию для вызова в виде экспорта. Так легче искать )
 
Ответить с цитированием

  #4  
Старый 17.03.2010, 19:11
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
С нами: 8795069

Репутация: 79
По умолчанию

2slesh
в таком варианте лучше использовать другие методы межпроцессного взаимодействия, типа пайпов, секций и тд
 
Ответить с цитированием

  #5  
Старый 17.03.2010, 23:00
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
С нами: 9023100

Репутация: 395


По умолчанию

Hiro Protagonist есть какие либо алгоритмы сигнатруного поиска? ну и вообще можешь поделишься на ссылки по теме что такое сигнатура - сигнатурный анализ

как я понимаю. p1 нужно запустить под отладчиком и найти там точку входа в нужную процедуру далее тупо скопировать ее дамп. И уже исследуя память процесса p1 из своей программы искать стартовый адрес процедуры. так?

опять же встает вопрос о том где как лучше и быстрей искать в адресном пространстве процесса? похоже изначально нужно проанализировать PE заголовок... в общем куча вопросов вылазит у меня лично ) я этим не занимался но интересно )
 
Ответить с цитированием

  #6  
Старый 18.03.2010, 09:44
fromegg
Новичок
Регистрация: 20.02.2010
Сообщений: 6
С нами: 8538856

Репутация: 0
По умолчанию

исследуемая программа не моя )
для примера можно взять pinball.exe


например нажав <space> пружинка сработает, шарик улетит ... это я так думаю легко эмулировать отослав sendmessage(... <space>) к Pinball ... но это не то.

надо вызвать функ f1 и точка !
1)про f1 я знаю что после ее вызова происходит какоето действие
2)больше сведений нет о f1
 
Ответить с цитированием

  #7  
Старый 18.03.2010, 14:21
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
С нами: 8795069

Репутация: 79
По умолчанию

2Gar|k
ну сигнатурой можно назвать что угодно на самом деле. В классике это последовательность байт, ещё из простого считать контрольные суммы.
быстрее всего я думаю пройтись по коллам от точки входа и проверять сигнатуру (crc или байтеги), так приблизительно ида делает в случае с flirt-сигнатурами. Естественно возможны ложные срабатывания если размер сигнатуры подберешь слишком маленьким или возмешь по какимто часто встречаюшимся командам (типа стаба, etc). Тут конечно нужен дизасм, но это самый интеллектуальный подход )), если конечно нужно искать неэкспортируемую функцию в обычном исполняемом файле, для поли\метаморфного кода уже другие конечно подходы )) типа выделения паттернов, анализа кода и поведенческого анализа )) тоже в своем роде сигнатуры. Ага по байтикам кстати нужно сигнатуры брать (в случае неполиморфного кода) в районах локального максимума энтропии желательно, естественно от какихто "уникальных" данных (потипу адресов строк и тд). Впрочем все это банально и мало интересно, честно ))

2fromegg
перед тем, как будет искать твой процесс в автомате неэкспортируемый символ, тебе придется его найти руками.
 
Ответить с цитированием

  #8  
Старый 18.03.2010, 20:54
zeppe1in
Постоянный
Регистрация: 12.07.2006
Сообщений: 327
С нами: 10437270

Репутация: 117
По умолчанию

а тупо по адресу то не вызвать функцию)
 
Ответить с цитированием

  #9  
Старый 19.03.2010, 08:32
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
С нами: 8795069

Репутация: 79
По умолчанию

2zeppe1in
не универсально )
 
Ответить с цитированием

  #10  
Старый 19.03.2010, 08:40
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию

Цитата:
Сообщение от fromegg  
исследуемая программа не моя )
для примера можно взять pinball.exe


например нажав <space> пружинка сработает, шарик улетит ... это я так думаю легко эмулировать отослав sendmessage(... <space>) к Pinball ... но это не то.

надо вызвать функ f1 и точка !
1)про f1 я знаю что после ее вызова происходит какоето действие
2)больше сведений нет о f1
Я думаю в данном случае такое скорее невозможно, чем возможно. Почему.
Когда ты отсылаешь нажатие кнопки, в обработчике системных сообщений главный поток программы переходит в ту функцию, которая в свою очередь вызывает еще что-то и т.д. CreateRemoteThread создаст новый поток, и 90% что он крашнет программу.
Как вариант - поэкспериментировать с SetThreadContext
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Низкоуровневое исследование клиента игровой платформы Garena Dosia Статьи 29 10.10.2010 00:09
Многопоточность в Unix KEZ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 11 10.08.2005 18:29



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.