ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

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

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

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

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

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

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

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

CreateRemoteThread

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

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

  #3  
Старый 17.03.2010, 17:48
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

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

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

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

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

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

Репутация: 395


По умолчанию

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

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

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

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

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

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


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

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

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

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

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

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

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

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

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

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

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

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

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

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

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


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

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Низкоуровневое исследование клиента игровой платформы Garena Dosia Статьи 28 29.05.2010 11:34
Splicing _Great_ Авторские статьи 3 14.05.2010 22:53
Процесс создания программного обеспечения для распределенных вычислений (С++). c0n Difesa Авторские статьи 9 09.06.2009 16:33
Кейлогер на Vb или как правильно играть в Gta!!! je0n Авторские статьи 6 25.05.2007 23:55
Многопоточность в Unix KEZ С/С++, C#, Delphi, .NET, Asm 11 10.08.2005 18:29



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


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




ANTICHAT.XYZ