Не встречал кто-нибудь такой проги (или плагина к PeTools к примеру), которой скармливаешь pe файл, а она анализирует его на правильность, и если что-то неправильно, то говорит что. А то надоело на одни и те же грабли(типа SizeofImage) наступать.
khv_test Спасибо за прогу, кое что для своей выдеру. Если Тебя интересуют замечания, то вот пару нашёл сразу: EP вне образа - не ругается размер директории импорта (к примеру)- ставим 80000000h - не ругается.
Вот что получилось. Просьба потестить кто может. Есть 2 значения: warning - необычное значение, но файл будет работать error - файл работать не будет интересуют такие случаи: 1. говорит, что error, а на самом деле прога работает 2. говорит, что warning, а прога не работпет 3. Прога не работает, но сообщений никаких нет 4. Говорит "PEChecker error." Так же просьба, кому не лень, то посмотреть код, и высказать своё мнение по поводу стиля. Начал недавно на с++ писать учиться, и хочется сразу учиться писать понятно. Естественно баги в коде тоже интересуют. Спасибо за внимание.
Сейчас есть проверки. 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). Если кому известны ещё различия, то пишите, добавлю.
глянул прогу и исходник. в целом намана что касается стиля: твой стиль - твоё личное дело по поводу недочётов: во-первых, ошибки в построении английских фраз, неправильное использование анг. слов. примеры: "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"? Удачи!
Спасибо за отзыв. Эта проверка выполняется если есть тлс директория. Без User32.dll в xp калбеки работать не будут. Значит что 1-ая секция начинается, к примеру с 0. Может это и лишнее. Остальное будет в следующей версии.
> Без User32.dll в xp калбеки работать не будут. Будут, как нестранно, более того файл будет работать если tls callbaks будут не в имадже, и более того будет работать даже если колбэки сгенерят неловимое исключение. Слава Били!
В аттаче 2 файла. Один с User32 в импорте, другой без. Тот что без на моём xp sp2 не выдаёт сообщений. Т.к. адрес MessageBox находится в каллбеке при старте, то => каллбек не срабатывает в том файле, где нет user32 в импорте.
Вот новая версия.Теперь 1.можно в едит вставлять имя 2.Drag-n-Drop 3.есть Register shell extension(как это по русски то будет?). 4.незначительное изменение проверок 5.Надеюсь с английским стало хоть чуть-чуть получше. Вот Комментарии и замечания приветствуются.
Странно. Опять не весь архив распаковывается нормально. EvilsInterrupt Тут копия http://slil.ru/23660986
asd А какая фаза луны должна быть, чтобы прога твоя работала? А то у мну WinXP SP2 и прога, что слил.ру показывает: 1. Под тоталом вылезает: Caption: "Total Commander", Text: "Error executing programm!" 2. Под Win+E, в мессаге бокс указывается путь к файлу и приложение не будет запущено, поскольку оно некорректно настроено. Повторный инсталл может все поправить. Ты так задумывал?
EvilsInterrupt У меня на WinXP SP2 всё работает. Что такое могло с ней случиться, что даже окна тебе не показывает ума не приложу. Да и инсталов никаких она не требует. Она вообще не запускается, или ошибка в проге при запуске? Народ, есть у кого нибудь аналогичные проблемы?
asd Я использую MS Visual Studio .NET 2003 может вышлешь проект целиком? Я с компилю и буду смотреть че задурь!
EvilsInterrupt Тут всё: http://slil.ru/23665194 В том числе собраный незапакованый екзешник. rmn паковать меньше надо всякой хренью Так у тебя тоже не запускается? А та хрень, что на нём висит - тестовая версия моего пакера(посмотрите на размеры екзешников