Ребята, где почитать про PE-формат, но с примерами?

Тема в разделе "WASM.BEGINNERS", создана пользователем amvoz, 22 ноя 2008.

  1. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    amvoz
    Зацени как оля тупит :)))
    http://narod.ru/disk/3916942000/msg.rar.html
     
  2. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Я тебя побаиваюсь. Там вирус какой-нибудь, наверное.
     
  3. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    CrystalIC, оля ещё с тлс тупит
     
  4. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    litrovith
    TLS не подходит для динамической защиты.
     
  5. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    Ет я так, к слову. На всякую олю есть свой коля.
     
  6. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    Ты бы вместо того, чтобы "пурхаться" и тут без дела трепать - попробовал бы еще раз гугл
    Документ очень давно написан был, хидеры частично разбираются на примере http://www.codebreakers-journal.com/content/view/60/97/
    но лучше взять почитать на васме "От зеленого к красному". Для начала лучше этой статьи и на русском языке скорее всего не найти (интересно где ее автор пропал)
     
  7. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    На английском предлагать- издевательство. А вообще я уже разбираться начал вот с этим
    http://www.wasm.ru/article.php?article=vgw03
    Вроде совпадает с тем, что у меня в файле. Хоть я разобрался, что по умолчанию (или всегда?) OllyDbg загружает секцию кода. Всё вперёд, а я голову ломал, куда у меня остальные байты делись. Но через гугл не найти было этот труд, только через личную подсказку- в его заголовке нет слова pe-формат или например *exe
    ...Теперь дел сдвинулось с мёртвой точки, ура. Нет, мне самому бы ни за что не найти эту статью. Теперь и от зелёного к красному можно пробовать и прочее.
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    amvoz
    Вы издеваетесь? Вам про статью сколько раз сказали?
    Объясняю один раз. :) НЕТУ ВООБЩЕ НИКАКОЙ СВЯЗИ между интервалом с 401000h по 401fffh и размером файла. И не должно быть. И не высчитаете Вы размер файла на основе этого интервала. Этот интервал - виртуальный размер одной секции образа (файла) дополненный до размера, кратного выравниванию секции (по сути увеличенный на некоторое значение). А всего секций там шесть штук! Плюс заголовок. И если Вы нажмёте на буквочку M на панели инструментов Olly, то увидите карту памяти со всеми шестью секциями и заголовком:

    Начиная с адреса 400000h (база образа) находится заголовок. Его размер на диске - 600h (упрощённо), а выравненный в памяти - 1000h.
    Начиная с адреса 401000h находится первая секция (секция кода). Её размер на диске - 600h, а выравненный в памяти - 1000h (4096 байт - то, что Вы упорно пытались связать с размером файла).
    Далее просто адреса и размеры последующих секций:
    Адрес в памяти Размер в памяти Размер на диске
    1) 402000h 1000h 200h
    2) 403000h 1000h 800h
    3) 404000h 1000h 200h
    4) 405000h 1000h 200h
    5) 406000h 2000h 1400h
    Но и это ещё не всё. В файле присутствует также область, не относящаяся ни к заголовку, ни к одной из секций. Такая область называется оверлей. Размер этого оверлея - 200h. Оверлей не загружается в память загрузчиком.
    Ну вот теперь можно считать реальный размер файла на диске:
    600h (заголовок) + 600h (первая секция) + 200h + 800h + 200h + 200h + 1400h + 200h (оверлей) = 3000h = 12288 байт
    Всё? Знакомую циферю увидели? Удовлетворены? А теперь, смутно догадываясь о том, что некоторые вещи могут быть сложнее, чем кажутся поначалу, вооружаемся терпением, читаем статьи, думаем и не будоражим форум пустяковыми вопросами. А если возникает непосильный вопрос, то пишем на форум и прислушиваемся к советам. А GoldFinch дал Вам в соседней ветке в третьем посте дельный совет, потому как ответ на Ваш вопрос - это тупое перепечатывание того, что лежит в статьях здесь на сайте.
    P.S. Слегка опоздал с ответом, но думаю, не помешает.
    P.P.S.
    Загружает не OllyDebug, а загрузчик. А OllyDebug только показывает, что системный загрузчик загрузил. Так вот загружаются все секции (и заголовок). Всегда. Никаких умолчаниев.
     
  9. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Да я уж разобрался, см. сообщение выше. А всё-таки самому мне ту статью никак не найти было. Ни у кого не убыло ведь, что мне на неё указали... Блин, я не наю, кто как ищет, я набирал в ГУГЛЕ "PE-формат чайник" и прочее. Ну не посылает Гугл меня на эту понятную статью.
    ...А вопрос нормальный, я считаю. Изначально я просил просто статьи с примерами, коих днём с огнём не сыщешь. Хотя нет, сыщешь. На английском языке вон дали.
    ...Ваш ответ очень понятен и полезен. Его бы впихнуть на какое-нибудь лобное место и пусть пришедшие следом за мной его читают, а не лазают где ни попадя. Ничего плохого в том, что человек читает понятное объяснение я не вижу.
    ...Вот безо всякой лести- почему человеку, чтобы написать так, как Вы, нужно обязательно психануть? В противном случае получается муть какая-то на 10-ти страницах...
    ...Короче, я Ваш должник, а мне все те, кто за мной придут должники, что получили такое понятное объяснение.
     
  10. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    amvoz
    Понимаешь, если человек не знает но пытаетсо разобраться, для чего и спрашивает чтобы бать направленным - это одно. Когда человек предпринимает недостаточные усилия чтобы понять, просто трепитсо, не читая предоставленый материал как в твоём случае - это другое. Прочитал, не понятно - бере бинарный редактор, либо туже олю и разбирайсо, на опыте быстрее поймёшь, что не поймёшь тебе подскажут. А если просто каждый прочитанный момент даже не вдумолся в который спрашивать - ничего хорошего не будет в конце.
     
  11. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Вообще-то весь сыр-бор разгорелся из-за руководству по взлому. Там неправильно объяснено . Люди жалуются и не я один. Там сказано: берём и ставим бряк на функцию MessageBoxA.
    http://wasm.ru/article.php?article=ollydbg09
    Во здесь читаем, абзацев 7 сверху и два, что ли рисунка пропускаем.
    Зачем ставим, почему ставим, непонятно. Без объяснений. Поэтому я плюнул на их метод и пошёл по своему пути. А что такое свой путь? Где начало файла, где конец... То есть понимаешь, я бряки научился ставить в OllyDbg, и вдруг вижу- размер файла определить не могу. Вот я и запаниковал!!!
    ...В том руководстве не с бряков надо было начинать. И не с MessageBoxA А именно, наверное, с размеров файла и с этих вот шести секций. Какая куда загружена. А кто тому руководству слепо следует и не ставит на этой стадии вопрос- где остальные байты (и что важно, он спокойно-то не ставится- надо знать, пора уже знать, бряки ведь ставить умею... а не знаю)... Ну пусть дальше следует.
    ...Меня ещё спасает, что я с пограммированием знаком. Я уже писал- вскрыл я кряк. Самостоятельно. И много изящнее, чем там они- смотрите, дескать, ребятки, "перед нами типичный код сравнения"...
    Ну вы уж простите пожалуйста мне моё паникование. Надеюсь, оно объяснено.
     
  12. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    С чего ты взял, что изящнее?
    Насколько я понял, в статье был восстановлен алгос генерации серийника, а ты просто пропатчил проверку...
    Битхак типа не самый изящный способ, изящный - это написать кейген.
     
  13. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    amvoz
    У тебя изначально неверный подход. Не имеет значения размер модуля. Поток общается с системой посредством малого числа входов. Не вызывая сервисы он ничего сделоть не может и всё через них идёт. Отсюда и нужно исходить при вскрытии любой юзермодной защиты. Весь функционал апи и сводится к чтению разделяемой памяти/вызову сервисов и калбаков. Просто нужно знать для какого действия что вызываетсо. В большинстве случаев, когда ставится точка останова не известно откуда произойдёи вызов, но известно что поток это вызовет для исполнения необходимой работы.
     
  14. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Можно написать "изящнее", можно написать "пропатчил проверку", дело не в названии, а в сути. А она такова, что в моём варианте вообще какой код ни введи- всё схавает программа. Хотя на вкус и цвет, как говорится, товарищей нет.
    ...Я вообще потом хотел приколоться- думал, так может пусть по запуску программы сразу выводится собщение "Good work". Не получилось. Там я вручную вводил то ли в память, то ли в регистр, (я забыл уже) значение, которое- внимание- в ходе исполнения программы являлось первым параметром функции MessageBoxA. Дескриптором родительского окна (не разобрался, что такое). Но если его вручную ввести, то оно таковым не является и функция MessageBoxA не вызовется с самого начала. Короче, разбираться надо.

    ...То, что надо найти номер, я знаю. И, конечно же найду, хотя бы для обучения. Но опять же ни там они ищут "перед нами типичный код сравнения", а надо не так. Надо... Ну, короче, много чего надо, но первое... В общем, там в случае неудачи 2 вызова MessageBoxA. Так вот, я их не различал. Потом нашёл их в тексте и догадался как идентифицировать- они обращаются к памяти , а там текст заголовка... В общем, они у меня эти вызовы бращаются к разныи участкам памяти, где текст заголовка я изменил на 1 или 2. То есть я понимать начал- вот вывелся 1-ый MessageBoxA, а вот второй.
    Конечно, это я тоже поставил телегу впереди лошади, но это для понятности.
    ...Ну, с этого начать хотя бы. Другие места тоже критике подвержены- вы у новичков поспрашивайте. Главы с 1-ой по 8-ую у всех на ура проходят. А потом начинается "перед нами типичный код сравнения". Но это ладно, не буду больше рассусоливать. Да я бы вам показал, парень тоже на подобное сетует на http://cracklab.narod.ru
    Но там форум прикрыли.
    Битхак, калбак и кейген. Слов таких не знаю.
     
  15. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    ne stroi iz sebya duraka, a to stanovitsya ochen' uj pohoje
    ti hot' smotrish chto tebe pishut? dumayu stoit clerk'a poslushat', a ne pisat' tut kuchi i kuchi guana - zrya tol'ko vremya tratish
     
  16. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    only
    да ладн, норм флудотема

    amvoz
    время потраченное на написание бреда на форуме лучше бы было потратить на изучение сабжа.
     
  17. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Да мне всё равно, как это называется- дурак, так дурак, гавно так гавно. Говорить названия- прерогатива не могущих говорить сути. Я могу. Она такова, что английского языка я не знаю. Это называется дурак? То, что я написал называется гавно? Да Бога ради.
    ...Короче, скучно с вами становится.
    За сим второй (?) раз попрошу не отвлекать меня по пустякам.
     
  18. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    amvoz
    Товарисчь, ничего себе скозал..
    %
     
  19. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    640
    Не, ну а что... Вот, я же вчера сказал
    И изучал. И относительно успешно. И поблагодарил того, кто меня всё же отвлёк по делу. Теперь-то что? Ну, закройте тему, да и дело с концом, чем браниться здесь.
     
  20. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Так в чем проблема? В точке входа забиваешь
    Код (Text):
    1. PUSH 0
    2. PUSH OFFSET "Ya krut!"
    3. PUSH OFFSET "Good work"
    4. PUSH 0
    5. CALL MessageBox
    6. PUSH 0
    7. CALL ExitProcess