Проверка pe на правильность.

Тема в разделе "WASM.WIN32", создана пользователем asd, 18 ноя 2006.

  1. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Не встречал кто-нибудь такой проги (или плагина к PeTools к примеру), которой скармливаешь pe файл, а она анализирует его на правильность, и если что-то неправильно, то говорит что. А то надоело на одни и те же грабли(типа SizeofImage) наступать.
     
  2. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
    вот поделка проверяет в текущий папке все файлики
    показывает че не так мож добавить че хошь...
     
  3. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    khv_test
    Спасибо за прогу, кое что для своей выдеру.

    Если Тебя интересуют замечания, то вот пару нашёл сразу:
    EP вне образа - не ругается
    размер директории импорта (к примеру)- ставим 80000000h - не ругается.
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    для hiew есть плагин PEVerify
     
  5. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Вот что получилось.
    Просьба потестить кто может. Есть 2 значения:
    warning - необычное значение, но файл будет работать
    error - файл работать не будет
    интересуют такие случаи:
    1. говорит, что error, а на самом деле прога работает
    2. говорит, что warning, а прога не работпет
    3. Прога не работает, но сообщений никаких нет
    4. Говорит "PEChecker error."

    Так же просьба, кому не лень, то посмотреть код, и высказать своё мнение по поводу стиля. Начал недавно на с++ писать учиться, и хочется сразу учиться писать понятно. Естественно баги в коде тоже интересуют.

    Спасибо за внимание.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    asd
    Неплохо бы учитывать различное поведение под 9x/2k/XP.
     
  7. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Сейчас есть проверки.
    error
    1. MZ signature
    2. PE Signature
    5. Проверяет не установлены ли биты 31,11-0 в ImageBase
    6. Попадает EP в образ или нет
    7. SectionAlignment на кратность 2
    8. FileAlignment на кратность 2
    10. Проверяет SizeOfImage
    12. Проверяет поле Subsystem
    13. Проверяет поле DllCharacteristics
    16. Проверяет директории импорта: валидность указателей на имя библиотеки и указателей на FirstThunk и OriginalFirstThunk

    warning
    3. поле CPUType на равенство i386
    4. SizeOfOptionalHeader!=0e0h
    9. Проверяет MajorSubsystem на равенство 4
    11. Не пересекаются ли 1-ая секция и заголовок
    14. Проверяет поле NumberOfRvaAndSizes на равенство 0ч10
    15. Проверяет на попадание в образ директорий экспорта и ресурсов
    17. Проверяет валидность дирректории тлс. А именно адреса начала и конца блока данных на попадание в образ адрес поля Index, AddressOfTlsCallBack и всех калбеков на попадание в образ
    18. Соответствие физических размеров секций и размера файла
    19. нет таблицы импорта

    Неплохо бы учитывать различное поведение под 9x/2k/XP.
    Я в этом не силён. Пока в таких случаях выдаются варнинги(9,19). Если кому известны ещё различия, то пишите, добавлю.
     
  8. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    530
    Адрес:
    Russia
    глянул прогу и исходник. в целом намана ;)
    что касается стиля: твой стиль - твоё личное дело
    по поводу недочётов:
    во-первых, ошибки в построении английских фраз, неправильное использование анг. слов.
    примеры:
    "Don't mapping file", должно быть (вариант): "Can't map file"
    "Uncorrect ImageBase", должно быть: "Incorrect ImageBase"
    "First section situated in header", должно быть: "First section located in header"
    "User32.dll no in import. it's problem in XP", должно быть: "No User32.dll in import. Image may not run on XP"

    во-вторых, если в edit с именем файла вставить имя файла, и нажать Check, то прога его не берёт, т.е. всегда нужен диалог выбора, что неудобно

    в-третьих, нет Drag-n-Drop

    в-четвёртых, наличие User32.dll не обязательно в WinXP

    в-пятых, не ясно, что конкретно имеется в виду под "First section situated in header"?

    Удачи!
     
  9. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Спасибо за отзыв.
    Эта проверка выполняется если есть тлс директория. Без User32.dll в xp калбеки работать не будут.
    Значит что 1-ая секция начинается, к примеру с 0. Может это и лишнее.

    Остальное будет в следующей версии.
     
  10. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > Без User32.dll в xp калбеки работать не будут.

    Будут, как нестранно, более того файл будет работать если tls callbaks будут не в имадже, и более того будет работать даже если колбэки сгенерят неловимое исключение. Слава Били!
     
  11. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    В аттаче 2 файла. Один с User32 в импорте, другой без. Тот что без на моём xp sp2 не выдаёт сообщений. Т.к. адрес MessageBox находится в каллбеке при старте, то => каллбек не срабатывает в том файле, где нет user32 в импорте.
     
  12. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Вот новая версия.Теперь
    1.можно в едит вставлять имя
    2.Drag-n-Drop
    3.есть Register shell extension(как это по русски то будет?).
    4.незначительное изменение проверок
    5.Надеюсь с английским стало хоть чуть-чуть получше.

    Вот:) Комментарии и замечания приветствуются.
     
  13. PE_Kill

    PE_Kill New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    107
    > есть Register shell extension(как это по русски то будет?).
    Добавить в контекстное меню
     
  14. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    А у меня уже который файл по счету, с форума не хочет качаться! (
     
  15. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Странно. Опять не весь архив распаковывается нормально.
    EvilsInterrupt
    Тут копия http://slil.ru/23660986
     
  16. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    asd
    А какая фаза луны должна быть, чтобы прога твоя работала?
    А то у мну WinXP SP2 и прога, что слил.ру показывает:
    1. Под тоталом вылезает: Caption: "Total Commander", Text: "Error executing programm!"
    2. Под Win+E, в мессаге бокс указывается путь к файлу и приложение не будет запущено, поскольку оно некорректно настроено. Повторный инсталл может все поправить.

    Ты так задумывал?
     
  17. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    EvilsInterrupt
    У меня на WinXP SP2 всё работает. Что такое могло с ней случиться, что даже окна тебе не показывает ума не приложу. Да и инсталов никаких она не требует.
    Она вообще не запускается, или ошибка в проге при запуске?

    Народ, есть у кого нибудь аналогичные проблемы?
     
  18. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    asd
    Я использую MS Visual Studio .NET 2003 может вышлешь проект целиком? Я с компилю и буду смотреть че задурь!
     
  19. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.331
    паковать меньше надо всякой хренью :)
     
  20. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    EvilsInterrupt
    Тут всё:
    http://slil.ru/23665194
    В том числе собраный незапакованый екзешник.

    rmn
    паковать меньше надо всякой хренью :)
    Так у тебя тоже не запускается? А та хрень, что на нём висит - тестовая версия моего пакера(посмотрите на размеры екзешников :)