Прошу помощи.

Тема в разделе "WASM.BEGINNERS", создана пользователем langoner, 31 май 2007.

  1. langoner

    langoner New Member

    Публикаций:
    0
    Регистрация:
    31 май 2007
    Сообщения:
    6
    Доброго времени суток. Решил пройти тернистый путь распаковки программ. До этого был опыт системного программирования, поэтому понимание материала по структуре PE формата и загрузчика присутствовали (по моему скромному мнению, но чем больше я узнаю тем больше убеждаюсь что ничего не знаю). Прочитал различные статьи по распаковке и связанным темам. Честно небольшая каша в голове, так что где не прав прошу указать на ошибки. Простое нажатие кнопочек в программах меня не интересует (во многих статьях этим ограничивается), мне хочется добиться понимания протекающих процессов. Чтобы мог с пониманием дела совершать действия, а не просто из-за того что кто-то так сказал (сделал) и у него получилось.
    Для тренировки выбрал первый попавшийся на машине запакованный файл WebMoney.exe.
    Натравил на него PEid и Pe Tools, они показали наличие ASProtect v1.23 RC1 (выбор для начала может не самый лучший, но уже просто спортивный интерес :)). (Я понимаю что есть возможность того, что различные утилиты покажут различные упаковщики. Что тогда вы предпринимаете, какие методы РУЧНОГО ОПРЕДЕЛЕНИЯ УПАКОВЩИКА вы знаете, поделитесь пожалуйста. По названию секций, по стартовой функции упаковщика и т д).
    Начал распаковку с поиска OEP. Как понял некоторые сначала восстанавливают импорт а потом ищут OEP. Когда какой метод вы применяете?
    Начал поиск OEP. В OllyDbg (с использованием SuperBpm) поставил бп на ESP-4 и попал на 0x00415CD2 (по состоянию стека и регистров вроде все сходиться). Но вот незадача PEid выдает другую OEP (0x004010E0).
    Снял дамп с использованием OllyDump (Rebuild import убрал, OEP взял равный EIP (0x00415CD2)). Затем в PE tools c использованием PE editor начал изучать заголовок и секции полученного дампа (IDA вполне адекватно разбирает дамп находит WinMain). В файле шесть секций: три безымянных и .rsrc, .data, .adata.
    Первая секция.
    Начало первой секции (Raw offset) совпадает с полем BaseOfCode в Optional Header, а также SizeOfCode совпадает с размером данной секции. Да и OEP лежит в данной секции. Сделал вывод что это скорее всего .text. (Я понимаю что данные рассуждения не совсем верны и на этом нельзя основываться)
    Вторая секция
    Аналогично совпадает с BaseofData b SizeofData. Возможно это .data.
    Третья секция не понял.
    .rsrc – данная секция ресурсов. Я понял что протекторы ее все таки могут корежить. Во всех статьях используют редакторы ресурсов чтобы слить в одну секцию и прикрутить к дампу. Делали Вы когда-нибудь это руками. Если да то как. И пожалуйста методы которыми пользуются протекторы для модификации ресурсов.
    .adata – я понимаю это от ASprotect. Почти везде ее отрезают. Я понял что там находиться код AsProtect, а возможна ситуация когда в ней находиться нужная нам информация?
    С помощю ImpRec нашел импорт, но вот незадача восстановил не все. Так вот я поныл что в данном случае работают анализируя заглушки установленные пакером. Как вы боритесь с этим? Как определяете куда ведет заглушка?
    И еще вопросы.
    1. Поиск OEP. Как понимаю метод с бп на esp-x (x = 4, …) срабатывает не всегда. Как найти OEP если данный метод не сработал. Какие методы нахождения OEP вы знаете?
    2. PEiD выдает одну OEP, а бп на esp-4 или другой метод выдают отличный от PEiD результат. Как определить правильный OEP (я понимаю что с опытом приходит, но прошу если можно опешите свои рассуждения, поделитесь опытом). Или все знают наизусть все стандартные стартовые функции всех компиляторов?
    3. Импорт. Нажимать на кнопочки в IpmRec и других утилитах конечно хорошо, но если их нет (в смысле утилит под рукой нет)? Можно ли привести пару методов восстановления импорта руками (когда он подпорчен заглушками протектора, желательно поподробнее).
    4. SEH. Кто какие методы использует для обхода таких методов.
    5. Краденые байты. Пожалуйста ссылочки или описание алгоритма данного метода защиты и как с ним бороться (вопрос глупый согласен, но все же кто как считает где лучше всего описана данная ситуация).
    6. Насчет моих рассуждений (выше).
    - можно ли сделать вывод о назначении секции по значениям полей заголовка (назначение полей смотрел в документации в статьях на Wasm.ru и книгах Криса Касперски).

    P.S. Вопросов еще куча :) Но я и так уже задал достаточно. Если хотя бы на несколько будут даны развернутые ответы – это уже будет поистине огромная помощь. Заранее благодарю.
    P.P.S. Если я по невнимательности просто не заметил статью или что-то еще… Пожалуйста не судите строго. Просто дайте ссылочку.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    выхода 2:
    1) убрать в олли реакцию на все абсолютно исключения - пусть исследуемая программа сама все свои исключения обрабатывает
    2) при попадании на исключение открыть в олли окошко с сехом, поставить бряк на сех обработчик и перейти туда - а дальше по обстановке

    думаю, тут действительно нужен опыт. бп на есп - далеко не надежный вариант. PEiD в этом плане точнее, т.к. со стеком так можно извратиться, что бряки ставить просто бессмысленно. PEiD тоже очень легко обмануть, поставив push ebp/mov ebp,esp... Скорее всего, надо смотреть на код. Косвенных признаков точки входа (по моему мнению и скромному опыту) 3 (но и они не 100% признаки):
    1) если код начинается с создания стекового кадра
    2) если код выполняется как можно ближе к базе образа (к примеру, 401538 больше напоминает OEP, чем 4F3325)
    3) если код идет более "ровный" и читабельный, т.е. идут вызовы процедур, работа с переменными, а не куча условных прыжков и работа со множеством регистров

    На этом пока все. Если придумаю, что ответить на остальное, напишу
     
  3. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    MSoft
    ИМХО, человек пытается свой код внутрь ВебМани внедрить...
    Я бы не стал помогать...

    Многие проггеры пользуются этой системой... Мне не хотелось бы, чтобы у меня с кошелька деньги уплывали. До сих пор ВебМани показывал себя как самый надежный способ рассчетов.... Иной раз около года у меня там штука бакинских хрнилась... )))
     
  4. langoner

    langoner New Member

    Публикаций:
    0
    Регистрация:
    31 май 2007
    Сообщения:
    6
    "ИМХО, человек пытается свой код внутрь ВебМани внедрить...
    Я бы не стал помогать..."

    Ну почему сразу так плохо думать.... Я не у кого не хочу ничего уводить... Еслиб были такие мысли я бы наверное как нибудь все это завуалировал. Возьмите другой пример если вам этот не нравиться... Просто у меня не получилось и я его привел вот и все...
     
  5. langoner

    langoner New Member

    Публикаций:
    0
    Регистрация:
    31 май 2007
    Сообщения:
    6
    К тому же он распаковывается стрипером если мне это только было нужно я бы не спрашивал логика есть?