![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
Задача такая: надо добавить дллку в таблицу импорта готового бинарника (aka PE-файла), не меняя размер последнего.
Ее надо решить практически для всех возможных бинарников собранных различными компиляторами\линкерами. Разумеется в бинарнике должно быть достаточно неиспользованного места чтобы там можно было осуществить эту операцию. Также следует рассматривать бинарники только с обычным выравниваем (0x200 в файле, 0x1000 в памяти). Как такое сделать? |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Тебе нужно найти достаточно свободного места для старой таблицы импорта + 1 новая запись. Т.е. необходимо переместить таблицу импорта на новой место и поменять RVA в IMAGE_DATA_DIRECTORY
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
W4FhLF, а как такое место найти?
|
|||
|
||||
| alias_trinity |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 10.5.2007 Репутация: 1 Всего: 1 |
Ну, не надо здесь спрашивать как писать вирусы!!! А то хороший модератор забанит!
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
alias_trinity, в нормальных вирусах такое заражение неиспользуют, ибо это слишком тривиально, и мгновенно лечится
а при расширении функциональности готовой программы используют |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Почему бы тогда не добавить новую секцию? Это упрощает задачу.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
W4FhLF, не меняя размер файла
если увеличивать размер файла - тогда уж просто расширять последнюю Это сообщение отредактировал(а) GoldFinch - 20.1.2009, 19:43 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Я читал. НО я подумал, что пишется что-то плохое, но раз всё легально, почему бы не добавить/расширить секцию? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
потомучто внешне файл должен выглядеть также как и был.
так красивее, и конечному пользователю вовсе не надо знать как именно функциональность программы была расширена |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
GoldFinch, поясни, пожалуйста, цели своей задачи
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
задача - прицепить к какой-то программе какую-то свою дллку
но сделать это надо красиво, желательно с минимальным изменением программы очевидно самое простой критерий "красоты" решения - размер модулей программы не должен меняться в основном это ограничение вводится из чисто эстетических соображений но также есть пара других причин: автор программы может не хотеть чтобы к ней чтото цепляли, например эта дллка будет креком, а автор программы не должен с 1го взгляда понять что же такое с его программой сделали или например эта дллка должна защищать чужую программу, а те кто ее будут ломать не должны сходу понять как это она к проге цепляется или например эта дллка будет распространятся среди большого числа пользователей, а юзверь по определению глуп и боится вирусов, поэтому чем незаметнее действия дллки, тем спокойнее юзверю да мало ли какие бывают цели %) |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
GoldFinch, неужели взлом ПО - более легальная тема для обсуждения, нежели вирус?
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
GremlinProg, почему взлом? изменение и расширение функциональности, улучшение интерфейса, а в ряде случаев обеспечение дополнительной защиты ПО
Добавлено через 54 секунды алсо вы по вопросу чтонибудь сказать можете? |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Никто не может гарантировать, что в файле найдётся достаточно свободного места для размещения новой записи таблицы импорта. Если задача решается для какой-то конкретной программы, то проблем не вижу, можно сделать анализ вручную, если же задача решается в общем, то нужно анализировать наиболее вероятные места с учётом выравнивания.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| alias_trinity |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 10.5.2007 Репутация: 1 Всего: 1 |
Вот умник... Если ты думаешь, что это лечится, то я тебе скажу, что задача вычисления обратного смещения неразрешаема, тоесть НЕ ИМЕЕТ ОБЩЕГО РЕШЕНИЯ!!! Если ты уверен в обратном - покажи пример
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Кроме прочего, стандартноая лицензия на софт, которую, в основном все производители так или иначе клонируют, запрещает копаться в своих бинарных файлах с целью их изменения. Если чужая программа поддерживает какие-то плагины, то делай это штатно, если нет - значит, низя. Если программа твоя - то вообще никаких проблем нет, делай что хочешь на уровне кода.
Насколько я понимаю, можно свою DLL внедрить в чужой процесс во время выполнения, это ничьих прав вроде не нарушает. -------------------- ... |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
alias_trinity, какая еще задача вычисления обратного смещения? ты вообще о чем?
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
по моему этого достаточно расширение функционала в том плане, в котором ты его сформулировал, не вяжется с легальной работой ПО, поскольку "любой бинарник" не пересекается с твоей DLL ни по каким вопросам обеспечения безопасности и улучшения интерфейса твоя DLL будет иметь доступ к структуре бинарника, что не подразумевает доступ к внутренним интерфейсам (а они могут сильно различаться на разном ПО), и уж тем более, защита - это двусторонний процесс, подразумевающий участие как приемной, так и передающей стороны, ты можешь защитить чего-то, в данном случае, только на уровне перехвата приемо-передающих функций, использование которых, опять же, не обязательно для всех бинарников, а ведь ты сформулировал задачу именно "для всех бинарников" так что, идея взлома ПО и несанкционированных манипуляций на стороне пользователя здесь явно присутствуют -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
GremlinProg, не выдирай слова из контекста, приводи полные цитаты
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
не слова, а фразы, а в данном случае, "или" - смысла сказанного не меняет -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
приведи пример легального в твоем понимании расширения функционала чужой программы |
|||
|
||||
| GremlinProg |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
пожалуйста, публичный заголовок расширения:
GetExternal - точка соприкосновения программы и DLL, возвращающая инородный объект воздействия IExternal - интерфейс объекта воздействия DLL работает в режиме slave, т.е. программа сама вызывает методы IExternal, а DLL отвечает на них а в самой программе предусмотрено добавление плагинов, экспортирующих функцию типа GetExternal аналогично можно и без интерфейсов обойтись: через функцию, фильтрующую события и состояния приложения, т.е. типа такого
по такому принципу работает оконная процедура все легально, без премудростей а если приложение не поддерживает расширения, значит оно ему и не надо, обращайся в систему поддержки этого ПО и проси такой механизм добавить -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||||
|
|||||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
есть такая штука как сетевые игры. для них пишутся читы, которые обычно тоже представляют собой дллки, которые както патчат клиент игры
вариант обратиться к разработчику в 99% случаев не подходит, поэтому античиты пишутся примерно также как и читы, своими силами и античиты тоже вобщем-то представляют собой дллки которые тоже патчат клиент игры, и не дают другим модулям его патчить да и вообще, вариант "обратиться к разработчику" это абсурдный вариант, никто никогда по просьбе пользователя ничего в проге улучшать не будет, если это сложно и не несет выгоды разработчику GremlinProg, вы бы лучше по теме чтонибудь написали, а не то "почему тема плоха" |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну конечно, как ты опишешь разработчику причину? "Я не могу поломать Вашу программу, помогите пожалуйста, дайте доступ к управлению" смешно )
бороться с колорадским жуком можно и лопатой, бегая за каждым по огороду ) нормальную защиту всегда пишет разработчик, а если не может - привлекает тех, кто может и ни в каком вменяемом проекте не внедряются такого рода заплатки-прилипалы, которые потенциально - уже клиенты антивируса боже мой, GoldFinch, а что такое форум поддержки, чем занимаются службы поддержки? анкеты? опросы? Просто так, убивают время?
ради взлома ПО я ни чего советовать не буду, совесть не позволяет -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
GremlinProg, признайтесь честно, вы просто не знаете как решить эту задачу
|
|||
|
||||
| alias_trinity |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 10.5.2007 Репутация: 1 Всего: 1 |
GoldFinch, почитай Жесткое внедрение
Посмотриш как вычислается адрес секции импорта, а потом попробуешь решить обратную задачку - узнать на сколько сместилась таблица импорта в секции импорта |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
alias_trinity, не тупи, что "вылечить" такую "зараженную" прогу достаточно просто удалить из таблицы импорта эту дллку.
про сложность с преобразованием rva<->raw я так и не понял, в этом нет ничего сложного алсо понятие "секция импорта" исчезло уже с десяток лет назад Это сообщение отредактировал(а) GoldFinch - 21.1.2009, 18:53 |
|||
|
||||
| alias_trinity |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 10.5.2007 Репутация: 1 Всего: 1 |
Говорю, покажи код, где лечится... ПОКАЖИ!!!!
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
что показать? как удалить из таблицы импорта один дескриптор?
//char *pImpDir - VA таблицы импорта //int ImpDirSize - размер таблицы импорта //char *pImpDescr - указатель на "лишний" дескриптор импорта //0x14 - 5 dword'ов memcpy(pImpDescr,pImpDescr+0x14,(pImpDir+ImpDirSize)-(pImpDescr+0x14)); |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |