Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых) |
![]() |
eXeL@B —› Основной форум —› Новый Quick Unpack ? |
Посл.ответ | Сообщение |
|
Создано: 22 июля 2005 11:49 · Личное сообщение · #1 |
|
Создано: 22 июля 2005 11:53 · Личное сообщение · #2 |
|
Создано: 22 июля 2005 12:10 · Личное сообщение · #3 |
|
Создано: 22 июля 2005 12:17 · Личное сообщение · #4 |
|
Создано: 22 июля 2005 12:41 · Личное сообщение · #5 FEUERRADER Если есть возможность, добавь больше известных сигнатур. Пробовал, прога упакована ASPack 1.06b / 1.061b -> Alexey Solodovnikov (PEiD так говорит), а у тебя Quick Unpack v0.7 (c) stripper 2.11 rc3 engines by syd (c) by FEUERRADER [AHTeam] 12:42:52 - Opened s2games.exe 12:42:52 - Signature analyze.... unknown Конечно, это не главное, но, если есть возможность, добавь. Кстати, а прогу распаковал... ![]() ----- Сколько ни наталкивали на мысль – все равно сумел увернуться ![]() |
|
Создано: 22 июля 2005 13:09 · Личное сообщение · #6 |
|
Создано: 22 июля 2005 19:39 · Личное сообщение · #7 ValdiS пишет: Если есть возможность, добавь больше известных сигнатур. Пробовал, прога упакована ASPack 1.06b / 1.061b -> Alexey Solodovnikov (PEiD так говорит), а у тебя Кстати, FEUERRADER, ты бы поприставал к авторам пеида, пусть бы DLLку выпустили, чтобы тебе, например, её юзать в благих для общего дела целях. ----- Всем не угодишь ![]() |
|
Создано: 22 июля 2005 20:55 · Личное сообщение · #8 Bad_guy пишет: Кстати, FEUERRADER, ты бы поприставал к авторам пеида, пусть бы DLLку выпустили, чтобы тебе, например, её юзать в благих для общего дела целях. Проще у меня или NEOx'а dll попросить или самому написать... я в дотфикс уже давно детектор пакеров встроил ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 22 июля 2005 22:00 · Личное сообщение · #9 |
|
Создано: 22 июля 2005 22:06 · Личное сообщение · #10 |
|
Создано: 22 июля 2005 22:27 · Личное сообщение · #11 Bad_guy пишет: Ну такой же анализатор и Фейер может написать, а профессиональную штуку, такую как пеид ещё никто не сделал, там ведь основная сила в базах обновляемых, вот если бы они параллельно с релизом проги релизили бы и dll - вот было бы дело. Ну базу я обновляю, эт ты зря ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! ![]() |
|
Создано: 22 июля 2005 22:53 · Личное сообщение · #12 |
|
Создано: 23 июля 2005 03:46 · Личное сообщение · #13 |
|
Создано: 23 июля 2005 10:14 · Личное сообщение · #14 |
|
Создано: 23 июля 2005 13:24 · Личное сообщение · #15 |
|
Создано: 23 июля 2005 15:51 · Личное сообщение · #16 |
|
Создано: 23 июля 2005 17:19 · Личное сообщение · #17 |
|
Создано: 23 июля 2005 20:08 · Поправил: FEUERRADER · Личное сообщение · #18 Так, всё что вы пожелали - учту. Уже заделал восстановление импорта у upx не через imprec.dll а перехватом GetProcAddress. Внедрил CADT и улучшил интерфейс. Как анализатор - прикручу дополнительно pesniffer.dll с базами. Самая большая проблема с импортом у пакеров. imprec.dll реально устарел и не справляется часто. Постараюсь восстановление импорта без imprec.dll сделать у популярных пакеров. Ну а с распаковкой dll дело зависит от того, насколько я разберусь с импортом у пакеров, потому что imprec.dll не поддерживает dll.. В принципе возможно и сделаю распаковку dll, благо в движке стриппера все уже написано ![]() Релиз планирую к сентябрю. ![]() |
|
Создано: 25 июля 2005 00:49 · Личное сообщение · #19 |
|
Создано: 25 июля 2005 11:59 · Личное сообщение · #20 |
|
Создано: 26 июля 2005 07:57 · Личное сообщение · #21 |
|
Создано: 26 июля 2005 08:11 · Личное сообщение · #22 |
|
Создано: 26 июля 2005 11:49 · Личное сообщение · #23 FEUERRADER Предложите свой интерфейс плагинов привожу как есть мои рассуждения на тему 'Hiew Modules' из переписки с Sen'ом в начале этого года несмотря на то, что в письме обсуждается Hiew, ты, надеюсь, сможешь найти что-нить интересное и для себя итак, цитирую часть письма как есть с незначительными купюрами [Цитата] ES> просят сделать plugin-interface и я даже подумываю над этим. ну совсем ES> навороченным он конечно не будет но что-то извне делать можно будет. очень кстати, т.к. я сам заморочился разработкой модульного интерфейса для моего текущего проекта SmartUnPacker (SUP) в итоге (как я сейчас уже понял) самое правильное - это начать писать плагин и по ходу разработки плагина будет яснее понятно, что ему нужно, а что нет т.е. я изначально накидал интерфейс, а потом уже подгонял его под конкретные нужды (не вдаваясь в дебри) при этом я смотрел, как подобное реализовано в других прогах моей задачей было предоставить функциональный, но не перегруженный интерфейс, т.е. чтобы для написания модуля не нужно было два дня разбираться в тонкостях реализации инерфейса, но при этом можно было бы реализовать возможность плагина относительно полно. итак, плагины (я их называю модули) находятся в подпапке Modules, представляют собой DLL с набором экспортируемых функций для начала я разграничил плагины по функциональности (при том, что каждый может совмещать в себе несколько функций) задачи следующие (привожу список экспортируемых функций, не комментирую т.к и так понятно): AnalyzeFile AnalyzeData DumpFile DumpProcess UnpackFile UnpackData RebuildFile RebuildData ModifyFile ModifyData и, возможно, Debug помимо этих, существуют ещё и функции, не относящиеся напрямую к функциональности модуля: GetModuleInfo - плагин передаёт всякую инфу о себе SetStartupInfo - хост передаёт модулю необходимую инфу Configure - в зависимости от параметров функции, модуль вызывает (свои) настройки, либо показывает About, либо Help, либо... по-моему всё CloseModule - принудительное завершение модуля, модуль обязан завершить выполнение текущей операции, освободить все ресурсы etc при запуске хост-программы, она проверяет папку Modules на наличие библиотек (DLL), проверяет наличие тех или иных функций в каждом из модулей (при помощи GetProcAddress), создаёт внутренний список (типа структуры) плагинов, в котором хранится основная инфа, связанная с модулем, в т.ч. и то, какие функции поддерживает плагин после этого вызывается GetModuleInfo далее вызывается функция SetStartupInfo (название взято из Far Plugin API) набрав всей полезной информации SUP создаёт меню (опять же таки в соответствии с пожеланиями модуля, взятыми при вызове GetModuleInfo), добавляя модуль в то или иное меню: Analyze, Dump, Unpack, Rebuild, Modify, Pack (Protect), Debug с названиями меню я пока не определился, т.к. пока не знаю, нужно ли их как-то группировать или нет на данный момент все плагины вызываются по запросу, т.е. нет real-time плагинов плагин должен экспортировать как минимум базовые функции (GetModuleInfo, SetStartupInfo, Configure, CloseModule) плюс любую функцию по делу. т.о. образом модуль может и анализировать файл, и распаковывать, и дампить; а может только изменять/патчить всё упирается лишь в то, какую функциональность обеспечивает модуль (хочет автор) прости, что я уже полез в дебри, объясняя принцип интерфейса своей программы, но, надеюсь, тебе это небезынтересно итак, хост загружен, SUP ожидает команды от пользователя юзер может вызвать модуль несколькими способами: 1. Через меню хоста 2. Через параметр командной строки 3. Через команду, введённую с клавы 4. Через другой модуль пока всё для того, чтобы один модуль мог вызывать другой, каждому из модулей передаётся инфа обо всех модулях (в т.ч. и поддерживаемые функции) я, правда, не уверен, что это особенно нужно ;) просто когда начал писать скелет для каждого модуля (по типам), понял, что при потенциальной возможность впихать возможности в один модуль несколько функций (т.е. чтоб он мог и анализировать файл на упакованность тем или иным пакером [AnalyzeFile], и, при положительном результате, его распаковать [UnpackFile]), всё же иногда предпочтительнее для анализа содержимого файла вызывать специальный модуль, хотя тривиальная проверка, всё же присутствует и так. что касается real-time плагинов, которые висят в памяти на протяжении всей работы хоста, то наиболее предпочтительным вариантом мне кажется работа через PostThreadMessage плагин, соответственно, обрабатывает GetMessage но я пока отказался от подобной реализации в виду её не востребованности (как мне кажется, проще юзать экспортируемые функции) <...> некоторые замечания из собственного опыта: * сами модули лучше хранить в одной папке (чтобы тебе не приходилось сканировать кучу папок внутри папки Modules), если модуль тащит с собой ещё кучу файлов, то он может грузить их из любой подпапки сам, например: Modules PEVerify.dll <- hiew грузит только его Modules\PE Verify <DIR> <- модуль PE Verify хранит в этой папке всё, что ему нужно * модуль лучше вызывать в отдельном потоке (thread) - так с ним проще работать и завершать в случае чего, да и его ошибки обрабатывать менее болезненно * кучу данных лучше предавать через структуры (указатели на них), а не как параметры функции * по возможности использовать именно указатели на данные * не зависеть от программной реализации и языка (C, ASM, Pascal) * изначально предусмотреть обработчик ошибок плагинов (они ж, твари, кривые иногда бывают) * если будешь использовать меню плагинов, то сортируй его по алфавиту * пробей комбинацию клавиш на вызов меню плагинов (и так понятно ;) * сделай возможность запуск Hiew вообще без плагинов (через параметр коммандной строки) * возможность безболезненно выгружать плагин из памяти, т.е. чтоб он не заваливал весь hiew вместе с собой * на всякий случай должна быть возможность не грузить тот или иной плуг (enable/disable), хотя это редко нужно если уж юзеру не нужен конкретный плуг - пусть сам его удаляет единственное, что я не знаю - как реализовать в рамках консольного окна вывод окошек и т.д. будешь ли ты реализовывать это своими средствами, как Far, или же пусть плуг сам выводит, что надо - хз в случае с GUI всё, конечно, гораздо проще - окошки для GUI не проблема, а вот для сonsole - не знаю или плуг вообще не будет показывать окошек, а просто напрямую передавать инфу hiew, а уж тот сам решит как её выводить - опять таки не знаю в общем, если ещё какие идеи появятся - пиши, обсудим -- EnJoy! Jupiter mailto:by.Jupiter[a]Gmail.com [Конец цитаты] на данный момент многое изменилось в моём представлении о модулях [в моей программе] спустя полгода, так что если что - пиши мне на мыло P.S. Возможно, имеет смысл организовать отдельное обсуждение по интерфейсу плагинов ----- EnJoy! ![]() |
|
Создано: 26 июля 2005 14:29 · Личное сообщение · #24 S_T_A_S_ Как раз с релоками проблем нету. Серьезные проблемы щас с импортом.. Для их решения контактирую с NEOx'ом и syd'у написал.. Но честно, я не справляюсь, реально знаний не хватает.. Если кто из спецов может помочь, пишите в 3 2 2 6 8 1 5 2 8. Движок для плагинов уже приделал. Чуть позже уже буду думать про параметры для управления QU.. Там и подумаем.. Скриптовый движок может и сделаю тоже, похоже возьму за основу OllyScript. Уже точно не обещаю, что к сентябрю всё успею. ![]() |
|
Создано: 30 июля 2005 17:42 · Личное сообщение · #25 1. Заделал поддержку обычных плагинов как в РЕ тулзах; также preferenes (always on top и register shell ext.) 2. Активировал новый классный метод восстановления импорта, который работает очень даже прилично, в отличие от imprec.dll. Первые испытания превосходят ожидания. 3. Теперь каждый может написать OEP Finder для какого-либо пакера. Выглядть это будет в виде списка пакеров (такой же на вид, как в прокдампе был список).. OEP Finderы пишутся в виде плагинов. Передаваться в главную функцию туда будет только 1 параметр - полное имя ехе. На выходе - ОЕР DWORD.. Прилагаю один из новых рабочих модулей - UPack 0.xx OEP Finder. Можете уже начинать писать свои модули ![]() Всё сводится к тому, что распаковка длл всё таки будет. Планирую прикрутить встроенный ребилдер ресурсов, который должен полностью переклеивать ресурсы.. ![]() ![]() |
![]() |
eXeL@B —› Основной форум —› Новый Quick Unpack ? |