eXeL@B —› Программирование —› Upx Oep Finder - тулза для развлечения. |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 25 марта 2011 10:54 · Личное сообщение · #1 Чисто для морального удовлетворения написал тулзу, которая строит граф, проходя по коду упх, начиная от ЕР, и анализируя граф, находит ОЕР. Тестил на разных (не скрэмблированных) версиях упх - вроде, работает, в конечном варианте тулза выглядит как плаг для PeId, но её вполне можно юзать и в своих проектах, изначально задумывалась для быстрого анализа малвари, первый слой упаковки которой состоял бы из упх, но потом просто стало интересно накодить плаг, чтоб не падал с выходом очередного обновления, как всякие UPX Info из стандартного релиза PeID, который можно скачать на Когда я рисовал (назовём это так) в редакторе ресурсов главное окно, то рамка там была синенькая, некоторые буковки - тоже, я потом, после компиляции и линковки - всё серое и печальное. В идеале, хотелось бы интерфейс, как у AsprInfo, чтоб Drag'&'Drop поддерживался, чтоб кнопочки нестандартные и всё такое. Может, кто книгу посоветует хорошую по этому делу? Или совет дельный даст? Курил исходники какого-то другого проекта, т.к. вначале решил хотя б добиться того, чтоб ресурсы в конечной программе выглядели бы так, как редакторе ресурсов, не не нашёл, как автор это делает. d3bf_25.03.2011_EXELAB.rU.tgz - UPXOEP.rar ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: int 26h, ressa |
|
Создано: 25 марта 2011 11:30 · Личное сообщение · #2 |
|
Создано: 25 марта 2011 12:06 · Личное сообщение · #3 |
|
Создано: 25 марта 2011 13:21 · Личное сообщение · #4 ARCHANGEL пишет: Когда я рисовал (назовём это так) в редакторе ресурсов главное окно, то рамка там была синенькая, некоторые буковки - тоже, я потом, после компиляции и линковки - всё серое и печальное. Это происходит от того что нет правильной директивы в манифесте. Держи утиль(в аттаче), облегчающую работу с манифестами. Конкретно за эту задачу ответит галка "Include common controls v6.0 in manifest" ARCHANGEL пишет: В идеале, хотелось бы интерфейс, как у AsprInfo, чтоб Drag'&'Drop поддерживался, чтоб кнопочки нестандартные и всё такое. У меня где-то был f76b_25.03.2011_EXELAB.rU.tgz - ManifestCreator.exe ----- все багрепорты - в личные сообщения | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 25 марта 2011 13:28 · Личное сообщение · #5 HandMill Спасибо, если так сразу не найдётся, то можно хотя б в двух словах описание, за счёт чего такое достигается. Я думаю, что в общем и целом, я не безнадёжен, т.е. я понимаю, как прорисовать то или иное изображение на области окна, как поместить картинку в ресурсы приложения, понимаю, что окна обрабатывают сообщения (!!!), но как создать нестандартный элемент управления - ну хоть пальцы мне дверью жмите - не пойму (( ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 25 марта 2011 13:47 · Личное сообщение · #6 |
|
Создано: 25 марта 2011 13:53 · Поправил: HandMill · Личное сообщение · #7 ARCHANGEL, поясняю в кратце: 1. Создаются 3 картинки состояний одной кнопки: а) кнопка находится в нормальном состоянии б) над кнопкой установлен курсор мыши в) кнопка нажата 2. В редакторе ресурсов используются элементы управления не кнопки, а картинки 3. В обработке сообщений ловятся события, отвечающие состояниям кнопок, ну и в ходе присваивается соответствующее изображение. Похожий чем-то пример реализации можно найти в исходниках шаблона кигена от FFF ARCHANGEL пишет: как создать нестандартный элемент управления - ну хоть пальцы мне дверью жмите - не пойму Нестандартные элементы управления делаются через сабклассинг, наконец-то нашёл пример нестандартных кнопок(в аттаче). e2db_25.03.2011_EXELAB.rU.tgz - RgnBtns.zip ----- все багрепорты - в личные сообщения | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 28 марта 2011 10:04 · Личное сообщение · #8 |
|
Создано: 28 марта 2011 10:41 · Поправил: Модератор · Личное сообщение · #9 |
|
Создано: 28 марта 2011 10:53 · Поправил: Модератор · Личное сообщение · #10 |
|
Создано: 28 марта 2011 11:16 · Личное сообщение · #11 ARCHANGEL, конечно можно! В настройках проекта студии: Проект --> Свойства --> Свойства конфигурации --> Компоновщик --> Файл манифеста, поле "Создавать манифест", выставляешь в "Нет" (обрати внимание для какой конфигурации "Release" или "Debug"!). Затем в "manifest creator" жмякаешь вышеописанную галку, заполняешь поле "Executable's Name", и выбираешь внизу, в комбобоксе "Create From VBP File" меняешь на "WriteManifest" и давишь кнопку "Go", указываешь имя файла как сохранить, например "blank.manifest". Нужно помнить что файлы манифесты по своей структуре являются XML файлами, поэтому я стараюсь(чисто для себя) менять расширение у файла на xml (это делать не обязательно!). Потом в студии, или через отдельный редактор ресурсов (я, например, пользуюсь ResEdit, взять можно тут: ThugboyZ, держи ----- все багрепорты - в личные сообщения |
|
Создано: 28 марта 2011 11:25 · Личное сообщение · #12 ThugboyZ пишет: ты просто тупо мог стырить код или скрипт и накрыть её крутым протом У меня такое чувство, что этот пост адресовался не мне. О каком скрипте или коде идёт речь - ума не приложу. А тем более ещё и прот какой-то крутой упоминается. И это при том, что в архиве приложен практически весь основной код на С. Да, собрать только с помощью того файла, что в аттаче, тулзу нельзя, но понять, как она работает, вполне возможно. HandMill Ок, спасибо, буду пробовать. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 28 марта 2011 18:59 · Личное сообщение · #13 |
|
Создано: 29 марта 2011 06:02 · Поправил: Isaev · Личное сообщение · #14 не работает если прога на Delphi ... постоянно вот так и проверку на упх вообще бы, т.к. если MASM файл кидаешь, PEiD вешается ARCHANGEL пишет: тулзу, которая строит граф, проходя по коду упх, начиная от ЕР, и анализируя граф, находит ОЕР. визуализацию графа сделай, интересно посмотреть ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 29 марта 2011 10:34 · Поправил: ARCHANGEL · Личное сообщение · #15 Isaev Пока не придумал, как сделать проверку. Т.к. если юзать сигнатуры, то какой тогда смысл юзать методику построения графа? Тогда можно использовать уже существующие статические распаковщики. PeID вешается достаточно часто (надеюсь, что только пока), если файл не пакован упх. Поправлю скоро, пока всё руки не доходят. Но на данном этапе, если юзаете, то юзайте на пакованых файлах. (для интереса, запустите на файле, упакованном аспаком!). С визуализацией - тоже проблемы. Основная проблема в том, что граф не обязательно строить полностью, чтоб найти ОЕР. Первый переход за пределы секции, в которой находится ЕР, и есть ОЕР. Поэтому тут граф полностью не строится. Если нитересуют подробности работы тулзы, и вы чего-то не увидели/поняли/разобрали, то спрашивайте, может, вместе что и улучшим. HandMill А я всё пытаюсь получить более красивый вид ресурсов. Вчера опять с бубном совершал ритуальные танцы. Создал манифест: Созданный манифест добавил в ресурсы проекта: В студии, как вы и писали, отключил создание манифеста. Собрал проект. Но! Ничего не изменилось. Если снимаю галку про Vista Security, то проект собирается, но возникает иксепш при загрузки плагина (на LoadLibrary), и DllMain возвращает FALSE. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 29 марта 2011 10:52 · Личное сообщение · #16 ARCHANGEL С утилитой "manifest creator" всё нормально, нужные настройки стоят правильно. Картинка с "добавлением ресурсов в проект" отображает суть проблемы. Вы добавляете манифест не "в те ресурсы". В студии необходимо добавить его в *.rc файл. В ResEdit это будет выглядить как-то так(проделайте в студии аналогично): ----- все багрепорты - в личные сообщения | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 30 мая 2012 20:48 · Поправил: ARCHANGEL · Личное сообщение · #17 Товарищи, спустя столь длительное время опять вернулся к нерешённому вопросу про Include common controls v6.0 in manifest. Сейчас у меня есть учебное приложение, сделал его, посещая курсы - само по себе приложение безынтересное, просто считает площадь фигуры по простейшим формулам. Но вот беда - опять кнопочки выглядят не так, как в редакторе ресурсов студии. Начал я опять рыть землю - создал манифест через Manifest creator, отключил создание манифеста в студии, базовую инфу брал 9077_30.05.2012_EXELAB.rU.tgz - 26052012.rar ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 30 мая 2012 21:12 · Поправил: F_a_u_s_t · Личное сообщение · #18 ARCHANGEL пишет: Может, кто книгу посоветует хорошую по этому делу? Р. М. Ганеев - Проектирование интерфейса пользователя средствами Win32 API Есть еще несколько годных, названия на память не помню, если надо будет у себя посмотрю. Add: Извинтиляюсь, как всеuда не глянул дату первого поста, ну не моя вина что цифры не приметные. |
|
Создано: 30 мая 2012 21:17 · Поправил: ARCHANGEL · Личное сообщение · #19 |
|
Создано: 30 мая 2012 21:39 · Личное сообщение · #20 |
|
Создано: 30 мая 2012 23:12 · Поправил: ARCHANGEL · Личное сообщение · #21 Слава яйцам - это случилось! Удалось! Теперь рассказываю (кому интересно) как. Вначале я перешёл по ссылке от F_a_u_s_t, там нашёл кейворды для мсдн и начал искать. Сразу же нашлось 1. Создать файл манифеста. 2. Прилепить его в ресурсы к ехе. 3. Получить красивые кнопки. Для создания файла я юзал всё тот же Manifest Creator, но манифесты, которые он выдавал, студия почему-то не принимала. Я не стал особо выяснять, почему, просто в студии в: Проект -> Свойства -> Свойства конфигурации ->Инструмент манифеста -> Вход и выход ->Внедрённый манифест выбрал Нет. Собрал проект. Рядом с ехешником появился манифест, открыл его и в блокноте к нему добавил кусок из манифеста, сгенерированного тулзой Manifest Creator. Code:
Потом сохранил его в папке с исходниками (.cpp). Потом вернулся в Проект -> Свойства -> Свойства конфигурации ->Инструмент манифеста -> Вход и выход ->Внедрённый манифест и выбрал Да. А в поле Проект -> Свойства -> Свойства конфигурации ->Инструмент манифеста -> Вход и выход ->Дополнительные файлы манифеста вписал result.exe.manifest (имя файла манифеста). И да, всё это не работало, пока в код не добавил вызов InitCommonControlsEx. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 31 мая 2012 10:55 · Личное сообщение · #22 |
|
Создано: 13 июня 2012 10:07 · Личное сообщение · #23 Если кому интересно, то нашёлся более простой путь. Просто нужно добавить строку: Code:
И тогда можно не пользоваться Manifest Creator'ом. И, что ещё более странно, не нужен вызов InitCommonControls/Ex. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 13 июня 2012 11:37 · Личное сообщение · #24 |
|
Создано: 13 июня 2012 16:07 · Личное сообщение · #25 |
|
Создано: 13 июня 2012 17:03 · Личное сообщение · #26 |
|
Создано: 14 июня 2012 10:03 · Личное сообщение · #27 ajax В архиве два ехе-шника, один с вызовом InitCommonControlsEx, другой без. У первого comctl32 есть в таблице импорта, у второго нет, а Common-Controls'version='6.0.0.0' отображается для обоих. 5d18_14.06.2012_EXELAB.rU.tgz - Release.rar ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 14 июня 2012 10:59 · Поправил: ajax · Личное сообщение · #28 |
|
Создано: 14 июня 2012 11:30 · Поправил: -=AkaBOSS=- · Личное сообщение · #29 у меня "Without comctl32.dll.exe" не запустился. винда XPSP3, версия user32.dll 5.1.2600.5512 что интересно, при попытке создать класс кнопки (без загруженной comctl32), система натыкается на облом, после чего проверяет LastError на ERROR_CANNOT_FIND_WND_CLASS если ошибка совпала, происходит hComctl = LoadLibrary ("comctl32.dll") GetProcAddress (hComctl, "RegisterClassNameW") такой функции в comctl32, естесственно, нет (хотя, может и есть, только вызывается по ординалу) поэтому далее вызывается FreeLibrary(hComctl) походу, это просто еще один косяк винды... ajax пишет: или стартует, и процесс завершается он-то стартует, и даже доходит до передачи WM_SETFONT в DialogProc просто потом ловит ошибку при попытке создать класс дочерних элементов (в этом случае - кнопок) и передаёт WM_DESTROY после чего всё и завершается |
|
Создано: 14 июня 2012 13:17 · Личное сообщение · #30 Значит вывод один - юзать InitCommonControls/Ex и не выделываться. Походу дело в строке publicKeyToken='6595b64144ccf1df'. Т.к. в таком случае comctl32.dll у меня грузится из сборки по адресу C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.6028_x-ww_61e65202, а если у кого-то она отсутствует, то софт не запускается. Вот только интересно, почему она есть у меня, и отсутствует у других. ----- Stuck to the plan, always think that we would stand up, never ran. |
. 1 . 2 . >> |
eXeL@B —› Программирование —› Upx Oep Finder - тулза для развлечения. |