Сейчас на форуме: _MBK_, tyns777, UniSoft (+11 невидимых)

 eXeL@B —› Программирование —› Upx Oep Finder - тулза для развлечения.
. 1 . 2 . >>
Посл.ответ Сообщение


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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


Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 25 марта 2011 11:30
· Личное сообщение · #2

Криво считает
http://floomby.ru/content/8cMT09PVq0/

-----
Nulla aetas ad discendum sera





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 25 марта 2011 12:06
· Личное сообщение · #3

Flint
Спасибо, гляну.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 25 марта 2011 13:21
· Личное сообщение · #4

ARCHANGEL пишет:
Когда я рисовал (назовём это так) в редакторе ресурсов главное окно, то рамка там была синенькая, некоторые буковки - тоже, я потом, после компиляции и линковки - всё серое и печальное.

Это происходит от того что нет правильной директивы в манифесте. Держи утиль(в аттаче), облегчающую работу с манифестами. Конкретно за эту задачу ответит галка "Include common controls v6.0 in manifest"
ARCHANGEL пишет:
В идеале, хотелось бы интерфейс, как у AsprInfo, чтоб Drag'&'Drop поддерживался, чтоб кнопочки нестандартные и всё такое.

У меня где-то был класс или функции велосипед(winapi c++) для создания немного нестандартных кнопочек, могу поискать, если нужно.

f76b_25.03.2011_EXELAB.rU.tgz - ManifestCreator.exe

-----
все багрепорты - в личные сообщения


| Сообщение посчитали полезным: ARCHANGEL


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 25 марта 2011 13:28
· Личное сообщение · #5

HandMill
Спасибо, если так сразу не найдётся, то можно хотя б в двух словах описание, за счёт чего такое достигается. Я думаю, что в общем и целом, я не безнадёжен, т.е. я понимаю, как прорисовать то или иное изображение на области окна, как поместить картинку в ресурсы приложения, понимаю, что окна обрабатывают сообщения (!!!), но как создать нестандартный элемент управления - ну хоть пальцы мне дверью жмите - не пойму ((

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 25 марта 2011 13:47
· Личное сообщение · #6

ARCHANGEL
Выложи сосры на SVN (с правами * = r), раз тулза для развлечения)



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 25 марта 2011 13:53 · Поправил: HandMill
· Личное сообщение · #7

ARCHANGEL, поясняю в кратце:
1. Создаются 3 картинки состояний одной кнопки:
а) кнопка находится в нормальном состоянии
б) над кнопкой установлен курсор мыши
в) кнопка нажата
2. В редакторе ресурсов используются элементы управления не кнопки, а картинки
3. В обработке сообщений ловятся события, отвечающие состояниям кнопок, ну и в ходе присваивается соответствующее изображение.
Похожий чем-то пример реализации можно найти в исходниках шаблона кигена от FFF

ARCHANGEL пишет:
как создать нестандартный элемент управления - ну хоть пальцы мне дверью жмите - не пойму

Нестандартные элементы управления делаются через сабклассинг, наконец-то нашёл пример нестандартных кнопок(в аттаче).

e2db_25.03.2011_EXELAB.rU.tgz - RgnBtns.zip

-----
все багрепорты - в личные сообщения


| Сообщение посчитали полезным: ARCHANGEL


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 28 марта 2011 10:04
· Личное сообщение · #8

Крутил этот ManifestCreator.exe, но что с ним делать, так и не вкурил (( Ну, кроме правки, .res - файлов, можно как-то ещё с его помощью поправить вышеописанную проблему?

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 28 марта 2011 10:41 · Поправил: Модератор
· Личное сообщение · #9

ARCHANGEL
зачем нужна твоя тулза когда до тебя UPX уже по полочкам разложили ты просто тупо мог стырить код или скрипт и накрыть её крутым протом...

От модератора: А ты мог просто промолчать...



Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 28 марта 2011 10:53 · Поправил: Модератор
· Личное сообщение · #10

ThugboyZ Ты мозг не От модератора: censored.. В названии темы спешл фо ю написанно, зачем она нужна и для чего она кодилась...

От модератора: Без оскорблений, пожалуйста... Бан на сутки...



Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 28 марта 2011 11:16
· Личное сообщение · #11

ARCHANGEL, конечно можно! В настройках проекта студии:
Проект --> Свойства --> Свойства конфигурации --> Компоновщик --> Файл манифеста, поле "Создавать манифест", выставляешь в "Нет" (обрати внимание для какой конфигурации "Release" или "Debug"!). Затем в "manifest creator" жмякаешь вышеописанную галку, заполняешь поле "Executable's Name", и выбираешь внизу, в комбобоксе "Create From VBP File" меняешь на "WriteManifest" и давишь кнопку "Go", указываешь имя файла как сохранить, например "blank.manifest". Нужно помнить что файлы манифесты по своей структуре являются XML файлами, поэтому я стараюсь(чисто для себя) менять расширение у файла на xml (это делать не обязательно!). Потом в студии, или через отдельный редактор ресурсов (я, например, пользуюсь ResEdit, взять можно тут: resedit.net) добавляешь этот файл манифеста в ресурсы. Стоит отметить что в одном ЕХЕ может храниться только один действующий файл манифеста, это можно проверить после компиляции любым подходящим редактором ресурсов.

ThugboyZ, держи

-----
все багрепорты - в личные сообщения





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 28 марта 2011 11:25
· Личное сообщение · #12

ThugboyZ пишет:
ты просто тупо мог стырить код или скрипт и накрыть её крутым протом

У меня такое чувство, что этот пост адресовался не мне. О каком скрипте или коде идёт речь - ума не приложу. А тем более ещё и прот какой-то крутой упоминается. И это при том, что в архиве приложен практически весь основной код на С. Да, собрать только с помощью того файла, что в аттаче, тулзу нельзя, но понять, как она работает, вполне возможно.

HandMill
Ок, спасибо, буду пробовать.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 28 марта 2011 18:59
· Личное сообщение · #13

ARCHANGEL
прошу прощения тогда, хм странно у меня в первый раз то что ты приатачил вообще с ошибкой работала и там была .exe прога, а щас .dll хм вообще странно...




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 29 марта 2011 06:02 · Поправил: Isaev
· Личное сообщение · #14

не работает если прога на Delphi ...
постоянно вот так

и проверку на упх вообще бы, т.к. если MASM файл кидаешь, PEiD вешается

ARCHANGEL пишет:
тулзу, которая строит граф, проходя по коду упх, начиная от ЕР, и анализируя граф, находит ОЕР.

визуализацию графа сделай, интересно посмотреть

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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.




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 29 марта 2011 10:52
· Личное сообщение · #16

ARCHANGEL С утилитой "manifest creator" всё нормально, нужные настройки стоят правильно. Картинка с "добавлением ресурсов в проект" отображает суть проблемы. Вы добавляете манифест не "в те ресурсы". В студии необходимо добавить его в *.rc файл. В ResEdit это будет выглядить как-то так(проделайте в студии аналогично):



-----
все багрепорты - в личные сообщения


| Сообщение посчитали полезным: ARCHANGEL


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 мая 2012 20:48 · Поправил: ARCHANGEL
· Личное сообщение · #17

Товарищи, спустя столь длительное время опять вернулся к нерешённому вопросу про Include common controls v6.0 in manifest. Сейчас у меня есть учебное приложение, сделал его, посещая курсы - само по себе приложение безынтересное, просто считает площадь фигуры по простейшим формулам. Но вот беда - опять кнопочки выглядят не так, как в редакторе ресурсов студии. Начал я опять рыть землю - создал манифест через Manifest creator, отключил создание манифеста в студии, базовую инфу брал --> Здесь <-- и в этом топике. Потом через ResEdit , который я до этого скачал и настроил так, чтоб он нормально открывал студийные .rc, попытался добавить манифест. Добавил, но софт упал при запуске. Тогда я собрал его с первоначальными опциями (т.е. когда манифест вставляется в ресурсы) и там через Restorator заменил текст xml-манифеста на текст манифеста, созданного через Manifest Creator - результат тот же, программа упала. Товарищи, что же я делаю не так? Может, кто добрый поправит проект и выложит правильный вариант, ведь можно же такое сделать, во многих паблик тулзах я видел, что людям это удавалось. За примерами не надо даже далеко ходить - например, Execryptor Unpacker от RSI содержит в себе манифест, который позволяет отображать кнопочки красиво.

9077_30.05.2012_EXELAB.rU.tgz - 26052012.rar

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 30 мая 2012 21:12 · Поправил: F_a_u_s_t
· Личное сообщение · #18

ARCHANGEL пишет:
Может, кто книгу посоветует хорошую по этому делу?

Р. М. Ганеев - Проектирование интерфейса пользователя средствами Win32 API

Есть еще несколько годных, названия на память не помню, если надо будет у себя посмотрю.
Add:
Извинтиляюсь, как всеuда не глянул дату первого поста, ну не моя вина что цифры не приметные.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 мая 2012 21:17 · Поправил: ARCHANGEL
· Личное сообщение · #19

F_a_u_s_t
Ещё раз заново просмотрел эту книгу, там нет и упоминания про манифесты и нет инфы, как их создавать, редактировать и т.д. Или я так невнимательно читаю?

Добавлено
Ясно

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 30 мая 2012 21:39
· Личное сообщение · #20

Общее описание rsdn, а дальше по кейвордам в MSDN, а в книгах пишут только как юзать.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 30 мая 2012 23:12 · Поправил: ARCHANGEL
· Личное сообщение · #21

Слава яйцам - это случилось! Удалось! Теперь рассказываю (кому интересно) как. Вначале я перешёл по ссылке от F_a_u_s_t, там нашёл кейворды для мсдн и начал искать. Сразу же нашлось --> Это <--. Покурив, я понял, что мне нужно руками создать манифест, потом его в качестве дополнительного указать студии. Итак, план был таков:
1. Создать файл манифеста.
2. Прилепить его в ресурсы к ехе.
3. Получить красивые кнопки.

Для создания файла я юзал всё тот же Manifest Creator, но манифесты, которые он выдавал, студия почему-то не принимала. Я не стал особо выяснять, почему, просто в студии в:
Проект -> Свойства -> Свойства конфигурации ->Инструмент манифеста -> Вход и выход ->Внедрённый манифест
выбрал Нет. Собрал проект. Рядом с ехешником появился манифест, открыл его и в блокноте к нему добавил кусок из манифеста, сгенерированного тулзой Manifest Creator.

Code:
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  3.   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  4.     <security>
  5.       <requestedPrivileges>
  6.         <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
  7.       </requestedPrivileges>
  8.     </security>
  9.   </trustInfo>
  10.     <dependency>
  11.         <dependentAssembly>
  12.             <assemblyIdentity
  13.                 type="win32"
  14.                 name="Microsoft.Windows.Common-Controls"
  15.                 version="6.0.0.0"
  16.                 processorArchitecture="X86"
  17.                 publicKeyToken="6595b64144ccf1df"
  18.                 language="*"
  19.              />
  20.         </dependentAssembly>
  21.     </dependency>
  22. </assembly>


Потом сохранил его в папке с исходниками (.cpp). Потом вернулся в Проект -> Свойства -> Свойства конфигурации ->Инструмент манифеста -> Вход и выход ->Внедрённый манифест и выбрал Да. А в поле Проект -> Свойства -> Свойства конфигурации ->Инструмент манифеста -> Вход и выход ->Дополнительные файлы манифеста вписал result.exe.manifest (имя файла манифеста). И да, всё это не работало, пока в код не добавил вызов InitCommonControlsEx.

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 31 мая 2012 10:55
· Личное сообщение · #22

ARCHANGEL пишет:
И да, всё это не работало, пока в код не добавил вызов InitCommonControlsEx.

Часто наступают на эти грабли )
http://forum.xakep.ru/m_2266987/tm.htm

-----
Nulla aetas ad discendum sera





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 13 июня 2012 10:07
· Личное сообщение · #23

Если кому интересно, то нашёлся более простой путь. Просто нужно добавить строку:

Code:
  1. #pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls'version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"")


И тогда можно не пользоваться Manifest Creator'ом. И, что ещё более странно, не нужен вызов InitCommonControls/Ex.

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 13 июня 2012 11:37
· Личное сообщение · #24

ARCHANGEL пишет:
что ещё более странно, не нужен вызов InitCommonControls/Ex

сравнить таблички импорта?

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 13 июня 2012 16:07
· Личное сообщение · #25

ajax
А нет там comctl32, в этом-то и странность.

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 13 июня 2012 17:03
· Личное сообщение · #26

ARCHANGEL
2 exe в студию. хотя, "все дело может быть в волшебных пузырьках" (манифестах и их именах)

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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.





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 14 июня 2012 10:59 · Поправил: ajax
· Личное сообщение · #28

ARCHANGEL
"на скорую руку" отличий не видать, но "Without comctl32.dll.exe" у меня не стартует, или стартует, и процесс завершается (лениво дебажить)

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 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
после чего всё и завершается




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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 - тулза для развлечения.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати