loader работает только из под отладчика

Тема в разделе "WASM.RESEARCH", создана пользователем maverick, 29 июл 2010.

  1. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    Доброго времени суток! Написал загрузчик для программы, защищенной ASProtect. Когда защищенная программа запущена из под отладчика, то всё в порядке...лоадер через WriteProcessMemory изменяет нужный мне код и всё работает. Но стоит только запустить программу загрузчиком, результат нулевой. При этом в лоадере и целевой процесс открывается нормально и запись в память происходит без проблем...Кто-нибудь с этим сталкивался?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну JIT'ом подрубайся.
    тогда коллизий будет меньше.
     
  3. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    пробовал OllyDbg. Программа завершает свое выполнение
     
  4. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    кроме того, запускаю защищенную прогу из под отладчика, затем отключаюсь от нее и закрываю Olly. После этого запускаю загрузчик, предварительно указав PID целевого процесса. И всё работает. А вот при запуске проги из лоадера никак :dntknw:
     
  5. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    maverick посмотри, какие плагины загружены в Оле - возможно, они обходят какие-нить фичи защиты ASProtect, о которых вы и забыли....
     
  6. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    701
    или аспр обходит ольку есть так называемая формат стринг атака
     
  7. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    А загрузчик вообще что делает, кроме записи байтов в память? Вражьи потоки перед записью морозит? Исправляемые байты проверяет? А то может оно ещё и распаковаться-то не успело, а ты его уже патчишь :)
     
  8. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    вполне возможно...

    под олькой как раз всё работает нормально...когда программа исполняется под отладчиком, либо только из под него загружена....(а дальше я от нее отключаюсь, закрываю отладчик и всё тип-топ)...Хотя, может быть, я просто Вас не понял.

    Алгоритм следующий:
    1. Из лоадера запускаю программу на исполнение
    2. Появляется окошко для ввода пароля, жду пару секунд (хотя к моменту появления окошка нужные байты распакованы и в процессе проверки серийника код программой никак не изменяется).
    3. Открываю процесс
    4. Замораживаю главный поток процесса
    5. Через WriteProcessMemory пишу в память открытого процесса
    6. Размораживаю...
    7. Завершаю работу лоадера
    8. Ввожу серийник "от балды" (лишь бы по размеру подходил)
    9. Нажимаю "ОК"
    ----------------------------------------------------------------------
    Изменяю я байты в процедуре проверки серийника из aspr_ide.dll.
    -----------------------------------------------------------------------
     
  9. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Всё же стоит проверить, нормально ли записываются байты (причём проверить не только через ReadProcessMemory, который можно перехватить, но и внедрением в адресное пространство или подрубить отладчик к уже крутящемуся процессу). А то вдруг WriteProcessMemory гнусно похучен? ASPR вроде таким раньше не страдал, но времена могли измениться.
     
  10. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Так морозь все потоки, а не главный.
     
  11. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    хм...возвращаясь к той же Olly, всё работает если защищенную прогу запустить под отладчиком с плагином Hide Debugger от Asterix, с галочками IsDebuggerPresent (что понятно) и Unhandled Exception Tricks...
     
  12. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    решение оказалось на поверхности) всем большое спасибо за ответы!
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    maverick
    И в чём решение заключается ?
     
  14. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    под отладчиком в защищенной программе адреса менялись, а я этого не учел. Вот и вся любовь...