Вопросы по секциям и их работе

Тема в разделе "WASM.RESEARCH", создана пользователем Robix, 28 апр 2010.

  1. Robix

    Robix New Member

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

    0400000 00001000 PE header Imag R RWE
    00401000 000A0000 code Imag R RWE
    004A1000 00001000 data,resourc Imag R RWE
    004A2000 00001000 imports Imag R RWE
    004A3000 0017A000 SFX Imag R RWE

    1. Может ли быть, что в процессе выполнения секция code работает на VisualBasic а в секции SFX также выполняется код но на C++ и он свзязан с кодом из секции code через jump'ы и call'ы. Т.е. они в итоге связаны общей целью.
    2. Может ли быть, что код в секции SFX очень долго выполняется специально для того, чтобы запутать реверсера. Как- тогда отловить ключевую проверку ? Т.е. идут как-бы циклы а впринципе нифига не происходит. Такое легко написать ? (я сам c++ знаю, но много не программирую)
    3. Можно ли создать в памяти процесса вдобоавок например такую же структуру и там выполнять код. Я такое видел. С помощью каких функций это и как это примерно делатется подскажите, кто программирует хорошо.
    4. Как вы можете объяснить такое. Захожу внуть функции из windows dll, дохожу до return
    Допустим потом в eax некое значение, которое должно проверяться. Но затем вскоре без всяких проверок идет вызов сообщения о том, что серийник неверный. Это происходит после функции __RaiseEvent. Реально никаких проверок. Может быть что-то параллельно проверяет ?
     
  2. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Robix
    1. в принципе, почему бы и нет?
    2. вполне может.
    3. вопрос непонятен
    4. возможно, не используется прямая проверка серийника или примененяется защита от отладки.
     
  3. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    ловите создание потоков. или смотрите на их список
     
  4. Robix

    Robix New Member

    Публикаций:
    0
    Регистрация:
    16 мар 2008
    Сообщения:
    13
    Спасибо за ответ. Т.е. как я понял один поток может выполнять проверку скажем буфера после одной функции в то время пока я трассирую в секции code и ищу ее проверку, а потом оказыается, что я дохожу до сообщения о неправильном серийнике, но непонимаю, где было сравнение, типа того ? Тогда наверное если данные были верные в буфере, поток как-то должен не допустить, чтобы я дошел до сообщения. Кстати, перед этим сообщением вызывались несколько раз GetLastError и еще одна функция.
    Можно впринципе на буфер ставить bp.

    По третьему пункту я имею ввиду, что в адресном пространстве процесса размещаются что-то типа dll, не поток, а именно модуль. Но самого dll нет отдельно, все в экзешнике. Мне вот интересно это как dll реализуется или как-то иначе.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Robix
    Генерация исключения вероятно, при которой кстате может сбрасываться TF, что и есть прекращение трассировки. Хотя тут чтото иное, просто вы пропустили код проверяющий значение или типо того.
     
  6. Robix

    Robix New Member

    Публикаций:
    0
    Регистрация:
    16 мар 2008
    Сообщения:
    13
    Просто это для меня не крэкабельная цель. Прбовал по разному. Кто-то возможно бы и крякнул, но думаю, что очень мало кто.А не вкурсе случайно сколько в секунду процессор выполняет инстукций (допустим core)? А то я ради интереса решил протрассировать в лог в olly с момента когда в буфер кладется информация для проверки и до момента когда вылазит сообщение. Так вот дошел до полумиллиона инструкций (причем они делались в секции SFX. Я вообще восстановил IAT и ковенные переходы, но все равно с секции code есть вызовы в секцию SFX, может быть конечно это антидамп, но думаю вряд-ли)...думаю это что-то типа vm-протекта.) Ну и после того как лог стал вести 15 метров я прекратил.
     
  7. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    Скромность красит человека :)

    Выкладывай, чтоле. Уже интересно :)
     
  8. Robix

    Robix New Member

    Публикаций:
    0
    Регистрация:
    16 мар 2008
    Сообщения:
    13
    Я тогда подготовлю PDF-ку и опишу все в деталях, что сделал и до чего дошел со скриншотами. А в личку скину линки до 1 мая. Был бы реально признателен за исследование и мнение, так как любопытство присутствует до сих пор )
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Robix
    Это очень долго. Задержки для доставки сообщений на отладочный порт и их обработки замедляют обработку исключений в 700%1000 раз. Если без отладочного порта исключение может быть обработано несколько сот тысяч раз в секунду, то при отладочном порте всего несколько сотен.
     
  10. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    Clerk
    Ломаем Themida :)

    Никто не видел подробного мануала по ее внутренностям ? (не способа распаковки, а структуры. Интересная штука :) )
     
  11. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    Все, уже не нужно.