Вызов метода.

Тема в разделе "WASM.BEGINNERS", создана пользователем vintprog, 16 ноя 2011.

  1. vintprog

    vintprog New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2011
    Сообщения:
    4
    Здравствуйте, как мне вызвать метод из чужого процесса через отдельную программу. Чужой процесс это игра, а программа это трейнер. Есть адрес метода и его параметры, а вот как вызвать метод из своей программы? Что-бы в игре игрок получил оружие.
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    смотри CreateRemoteThread, примеров куча... если винда канеш... в линуксах можно поискать по ptrace api...
     
  3. vintprog

    vintprog New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2011
    Сообщения:
    4
    Винда XP, а где эти примеры и статьи хорошии найти, в гугле лажа всякая... Мне же надо не библиотеку туда инжектить!
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    с твоими знаниями ты ничего кроме библиотеки не заинжектишь...
     
  5. vintprog

    vintprog New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2011
    Сообщения:
    4
    Давай по существу, причем тут мои знания? Ты телепат? Я про что тему ввел?
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    если бы ты знал что-либо о процессах и о виртуальной памяти, ты бы не спрашивал как вызвать метод в контексте другого процесса... потому что это невозможно, максимум - вызов stdcall-функции с одним параметром с помощью удаленных потоков... для вызова любого метода необходимо заинжектить код... поскольку опять же судя по твоиму вопросу, ты об ассемблере вряд ли что-то знаешь, то единственный выход для тебя инжектить dll по любому методу, которых в интенете пруд-пруди... никакой телепатии... логическая цепь...
     
  7. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    vintprog
    Попробую расшифровать слова Rel:)
    Инжектишь в целевой процесс свою библиотеку, делаешь CreateRemoteThread в этой библиотеке (главное правильно определить стартовый адрес), из созданного потока вызываешь свой метод с какими хочешь параметрами.
     
  8. vintprog

    vintprog New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2011
    Сообщения:
    4
    Это я тоже знаю. А что кроме библиотек нету других способов?
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    vintprog
    Знаете или нет, а Squash всё переврала. Для инжекта самой библиотеки обычно используется CreateRemoteThread. А из кода самой библиотеки вызов CreateRemoteThread уж точно не нужен. В крайнем случае просто CreateThread.

    Если Ваш метод не принимает ровно один параметр, причём не требующий дополнительных данных, Вам всё равно придётся что-то инжектировать в процесс. И проще всего библиотеку. Вот Вам и предлагают самый простой вариант.
     
  10. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    vintprog
    есть, инжектить шеллкод.

    Squash
    зачем CreateRemoteThread, если библиотека и так уже в целевом процессе?
     
  11. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    l_inc,K10
    А как вы собираетесь метод дергать? Из DllMain?

    Есть туева хуча методов заинжектить библиотеку без него.
     
  12. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Squash
    Почему бы нет?
    Ну или просто CreateThread.
    Хотя лучше все же инжектить шеллкод.
     
  13. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Не учите нуба плохому :)
    Не говоря уже о том, что чревато дедлоком.
     
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    вообще, насколько я помню, CreateThread в своей работе вызывает CreateRemoteThread с параметром -1ого хендла)))

    это интересно... какие еще кроме SetThreadContext, патча частовызываемой API-функции, QueryUserAPC вы знаете? само собой интересует только юзер-мод)))
     
  15. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Да хоть аппинит_дллз и хук оконный, для данной цели вполне.

    Эмм... Может, квэве?
     
  16. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    а что, нельзя что ли, где идёт проверка на наступание игроком на ящик с оружием поставить программно бряк, а при срабатывании "пасти" поток процесса дальше, меняя значение регистров и записывая в разные структуры в адресном пространстве игры....
    эдд: и может быть, если сделать через поток и длл, то оба потока будут записывать в один и тот же адрес памяти.... проблемы могут быть....
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    имелась ввиду именно передача управления на код, а не инжект длл как таковой...
     
  18. Ramik

    Ramik Роман

    Публикаций:
    0
    Регистрация:
    17 ноя 2011
    Сообщения:
    1
    вот у меня записываются в один и тот же адрес памяти
     
  19. AndjellaArtavazdovna

    AndjellaArtavazdovna New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2010
    Сообщения:
    615
    Все верно. Ну к примеру перезапись VEH/SEH-хендлеров в ап или на диске и вообще коллбеки как таковые.
    А какая разница как инжектить и что? Почему шелл-код? Грузите через LdrLoadDll dll/exe, нет релоков - добавьте,
    пропишите в кучу,настройте релоки,передайте управление. Инжект - внедрение кода + передача управления.
    Форма кода и способ передачи управления значения не имеют. И если правильно почесать репу можно еще много что
    придумать. В общем патчите IAT kernel32 в нативе - не ошибетесь. :)
     
  20. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    AndjellaArtavazdovna
    Вот поэтому лучше шеллкод.