Перехват API

Тема в разделе "WASM.BEGINNERS", создана пользователем Wereww, 13 июн 2009.

  1. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    amvoz
    все это называется "сплайсинг", когда в начале кода функции ты прописываешь прыжок на свой обработчик :) Просто твой метод это делать - с отладчиком и прочим - действительно только ты придумал. Все остальные пишут просто в память процесса и не заморачиваются с олькой и т.д. :)
     
  2. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    amvoz изобрёл сплайсинг. хвала амовозу.

    ну правда, дайте человеку хоть немного порадоваться )
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Сплайс конечно прикольная штука, но однопотоковость это очень плохо. Тут можно поступить следующим образом: скопировать целиком секцию кода из памяти в другую область и перенаправить. Если будет абсолютный прыжок, то ничего страшного не произойдёт, он просто прыгнет на оригинальную секцию. Хотя сейчас это не так актуально.
     
  4. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Я бы назвал это не сплайсингом, а ещё одним способом исследования программ.
    Очень удобно.
    Если проги, конечно, открываются в отладчике и нормально работают.
     
  5. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    а я бы назвал это сплайсингом.

    иди читай о сплайсинге и не выпендривайся "оябы назвал это мегопоездатым способом жарить рис!" )
     
  6. Wereww

    Wereww Дмитрий

    Публикаций:
    0
    Регистрация:
    13 июн 2009
    Сообщения:
    55
    Покопался в статьях и исходниках сайта - в сорце заменил функцию из user32.dll на ntdll.dll (ZwOpenProcess) но перехват не работает (

    (архив на сайте advapihook.rar, исходник HookProc)
     
  7. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Дело-то не в названии вообще-то.
    Дело в том, что дурак я сам до него дошёл, а ты умный не дошёл.
    Привет.
     
  8. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    а тебе почём знать до чего я дошёл, а до чего - не дошёл?)
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    amvoz
    Молодец, возьми с полки пирожок.
     
  10. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Я вообще-то считал, что это товарищеский форум и решил поделиться чисто и честно своими наработками. И смею думать, они некоторым новичкам помогли бы.
    ...А некоторых штатских в более сильных ветках шпыняют, видать, вот они сюда и приходят злобу срывать.
     
  11. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    скоро и я стану твоим поклонником :)))
    да не, никто не спорит, ты крут. Но такое уже есть и в более "обработанном" виде, где все просто и никаких действий руками. Грубо говоря, ты щас изобрел квадратный велосипед без сиденья, потому и реакция такая
     
  12. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Так-то да.
    Завидую умению отлаживать без отладчика. В уме.
     
  13. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    И это...
    Чёт я не пойму...
    Классический сплайсинг не предполагает прописывание кода руками? А там как? Подумал и оно само прописалось?
    Ну, пацаны...
     
  14. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Классический сплайсинг, это так: ты написал в сорце код. Ты никуда его не копируешь и ничего с ним не делаешь. Его скомпилировал компилятор, собрал линкер и ты забыл про него - не надо здесь отладчик привлекать.
    Чтобы заменить первые инструкции - тоже не надо отладчика. Дизассемблер длин возьми, скопируй первые инструкции, вставь jmp far xxx. Это все делается с пом. rep movsb. Не надо ничего сторонними программами открывать, куда-то прописывать, делать дамп и прочее. Это все делается програмным способом в несколько строк кода.
     
  15. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    здорово, но, честно признаться - > я
    > 1. не помню чтобы я такое писал, потому удивился, когда меня процитировали
    > 2. вобще не понимаю и не догадываюсь что значит эта фраза про рис
    > 3. фшоки - ведь это было всего 20 минут назад Х_х

    мои мозги живут отдельной жизнью. отдельной от мозгов Х_х

    меня подбросило и разорвало.
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    MSoft
    Извиняюсь, но зачем здесь дизасм. длин?
     
  17. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    чтобы скопировать ровное количество инструкций и не восстанавливать каждый раз старые байты на место. Старые инструкции перед передачей управления можно исполнять в отдельном буфере (там редко бывают прыжки в числе первых инструкций), а потом делать безусловный прыжок на остальные оригинальные инструкции. А чтобы инструкции были целыми, надо знать их длину при копировании...
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Это-то и смущает, будет там относительный прыжок и до свиданья.
     
  19. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    1) инструкций jx там правда почти нет
    2) прыжки в начале бывают только после сплайсинга (например антивирусом или фаерволом)
    3) проверить наличие прыжка и скорректировать его не составит особого труда - крайне маловероятно, что прыжок там будет условным. Для сплайсинга надо 5 байт. А инициализировать как минимум одну переменную, с чем-то ее сравнить и сделать прыжок - такое в 5 байт не вместишь. Следовательно, прыжок если и будет, то 99.99% безусловный. А это только 2 опкода - EB или E8 (E9?). Сделай краткую проверку и скорректируй прыжок - и никаких проблем :)
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Так прыжки бывают и назад.

    Это как интересно?