Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> идентификация программ библиотеками, возможно ли? 
:(
    Опции темы
GremlinProg
Дата 16.1.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(shara @  16.1.2009,  01:39 Найти цитируемый пост)
жертвуем универсальностью за скорость

поверь, ты жертвуешь не универсальностью, а временем, причем своим же

Цитата(shara @  16.1.2009,  01:39 Найти цитируемый пост)
мне важна скорость работы моего приложения потому-что оно будет запускаться очень много раз

время, потраченное на стандартизированный вызов функции - это ничто, по сравнению с временем, потраченному на запуск приложения, поскольку загрузчик всякий раз читает структуру PE в соответствии спецификации для его корректного запуска. Так что в скорости ты не выигрываешь (попробуй посчитать процент выигрыша, ты сильно расстроишься, как он будет ничтожен)
Если уж нужно часто запускать приложение, то подумай, как его оптимизировать, чтобы запускать взамен приложения - только функцию, причем функцию уже загруженную в память.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 16.1.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



GremlinProg, никто кроме наверное редких С(++) программистов не использует ImageNtHeader и прочие API функции заменяемые 1-2 инструкциями
в винде вообще есть немало странных API функций типа ws2_32.ntohl которые только место в коде занимают
Я так просто не могу юзать код который будет ассемблироваться в push eax\call __imp_ImageNtHeader\jmp [ImageNtHeader] вместо add eax,0x3c , религия знаете-ли запрещает.

PE заголовок не может измениться потому, что если это произойдет, куча программ перестанет работать, в том числе все упакованные программы (думаю ни в одном из упаковщиков не используется ImageNtHeader или другая подобная api)

с точки зрения работы с PE форматом, куда как лучше выучить наизусть основные константы типа 0x3C, чем названия каких-то нелепых функций
в конце концов потом можно будет правильность PE-файлов вручную проверять, полезно иногда

Цитата(GremlinProg @  16.1.2009,  00:02 Найти цитируемый пост)
загрузчик всякий раз читает структуру PE в соответствии спецификации для его корректного запуска

да не в соответствии спецификации он его читает... он игнорирует половину полей, некоторые поля использует совсем не так как они называются, а влияние некоторых полей на правильность файла в спецификации и вовсе не написано. 

Это сообщение отредактировал(а) GoldFinch - 16.1.2009, 09:24
PM MAIL ICQ   Вверх
GoldFinch
Дата 16.1.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



а какова кстати цель такой идентификации? определить загрузила ли библиотеку своя программа или нет? тогда можно и без изысков с PE форматом обойтись, компилить эту свою программу с уникальным стабом (dos stub) и проверять с него ли начинается модуль
т.е. по адресу GetModuleHandle(NULL) должна будет лежать заранее известная последовательность байт

совсем будет красиво засунуть в стаб ехешки часть кода DllMain(), например декриптор дллки
PM MAIL ICQ   Вверх
GremlinProg
Дата 16.1.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(GoldFinch @  16.1.2009,  11:19 Найти цитируемый пост)
 никто кроме наверное редких С(++) программистов не использует ImageNtHeader и прочие API функции

ни чего не путаешь, может наоборот?
приведи список этого чрезвычайно опытного большинства, хотя бы десяток, которые не используют API там, где требуется соблюдение стандартов? Всем будет интересно увидеть подписавшихся под этим списком (я лично сомневаюсь, что ты получишь даже 1 голос от системных программистов, не всякий захочет ставить такое пятно на своей репутации)
Цитата(GoldFinch @  16.1.2009,  11:19 Найти цитируемый пост)
заменяемые 1-2 инструкциями

Цитата(GoldFinch @  16.1.2009,  11:19 Найти цитируемый пост)
в винде вообще есть немало странных API функций типа ws2_32.ntohl которые только место в коде занимают

Какие же они глупые эти программисты майкрософт, наворотили зачем-то кучу бесполезных функций. GoldFinch, ты уже отлично показал свою эрудированность, не усугубляй свое положение. Стандарт майкрософт поддерживается в API чтобы разработчики могли свободно управлять своими программами, не заморачиваясь на соблюдении этого стандарта. Майкрософт тебе сделала подарок этим набором API, так что если ты действительно хочешь добиться успехов в программировании, научись его ценить и использовать.

А любые "финтифлюшки" из рода "мелкософт - неподумал", "мелклсофт - глупый" от одного индивидуума, расцениваются в первую очередь как невежество этого индивидуума, так что, наберись сначала достаточного опыта в этой сфере деятельности прежде чем делать такие заявления.

ps: любой твой последующий неаргументированный выпад на майкрософт будет отражен у тебя в репутации со знаком минус, а при продолжении такого флуда, будет бан.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
W4FhLF
Дата 16.1.2009, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(GremlinProg @  16.1.2009,  14:22 Найти цитируемый пост)
ps: любой твой последующий неаргументированный выпад на майкрософт будет отражен у тебя в репутации со знаком минус, а при продолжении такого флуда, будет бан.


По-моему, ты злоупотребляешь. 

Например я никогда API для работы с PE не юзал, а опыт работы с PE у меня приличный. И никогда не видел, чтобы кто-нибудь их моих знакомых реверсеров или системщиков их юзал. Пишут ли они антируткит или протектор... всегда всё делается ручками. Хотя работать непосредственно со смещения -- глупость конечно, структуры/юнионы должны быть. 

Это сообщение отредактировал(а) W4FhLF - 16.1.2009, 14:54


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GremlinProg
Дата 16.1.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



нет не злоупотребляю, почитай сообщения GoldFinch, которые он уже старательно перетирает, но в цитатах суть хорошо видна
если я не прав, меня всегда могут поправить модераторы, но суть от этого не меняется, такое хамское поведение на форуме меня не удовлетворяет
GoldFinch, уже не раз и не два был предупрежден, бан - мера вынужденная, я его использовать не хочу
Цитата(W4FhLF @  16.1.2009,  16:53 Найти цитируемый пост)
Например я никогда API для работы с PE не юзал, а опыт работы с PE у меня приличный

это твой голос, и он тут останется, не забывай об этом, GoldFinch, тоже расписывает чуть ли не в каждом посте, какой он профессионал и выглядит это, сам понимашь, наивно. Опыт и знания - не одно и то же, и мне жаль, что ты сейчас напрямую противоречишь очевидному: кто вводит правила - тому и проще их соблюдать. Это вопрос, как ты уже заметил, о целесообразности. На форуме, посвещенному API, согласие с этой формулировкой уже закреплено в названии, так что пока я здесь ответственен за порядок, я не допущу расхождения тематики форума с его содержанием.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
W4FhLF
Дата 16.1.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(GremlinProg @  16.1.2009,  15:32 Найти цитируемый пост)
не забывай об этом, GoldFinch, тоже расписывает чуть ли не в каждом посте, какой он профессионал.


Пока, что я вижу только, что ты в каждом посте пытаешься доказать ему обратное.

Цитата(GremlinProg @  16.1.2009,  15:32 Найти цитируемый пост)
 что ты сейчас напрямую противоречишь очевидному: кто вводит правила - тому и проще их соблюдать.


Чему я противоречу? Только из своего опыта я вспоминаю два проекта, где я работал с PE без API как минимум потому то не мог их использовать в прицнипе(это был драйвер под WinNT и бинарник под линукс для работы с PE). И я могу привести ещё много частных случаев, когда следует отбросить API. 

На самом деле вы оба впадаете в крайности. Один говорит: "API is the evil", а другой говорит "Only API", а фактически истина посередине. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GoldFinch
Дата 16.1.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



GremlinProg, раздел форума называется C/C++: Системное программирование и WinAPI, как видите апи здесь на последнем месте. Я прекрасно понимаю что без апи многого в винде не сделать, но во всем надо соблюдать меру - гдето использование апи бессмысленно, а гдето и вредно.

PM MAIL ICQ   Вверх
GremlinProg
Дата 16.1.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(W4FhLF @  16.1.2009,  17:53 Найти цитируемый пост)
Пока, что я вижу только, что ты в каждом посте пытаешься доказать ему обратное.

нет, я его комментировал очень редко, и не доказываю ему ничего, а прошу не сыпать заведомо ложными заявлениями, цитируя в основном майкрософт, а это совершенно разные вещи.

Цитата(W4FhLF @  16.1.2009,  17:53 Найти цитируемый пост)
это был драйвер под WinNT и бинарник под линукс для работы с PE

в данном случае для драйвера API меняется на  DDK, ее рекомендациям и нужно следовать, если там нет инструментов для работы с PE, значит native-API тут опускать, по крайней мере, бессмысленно. Под ядро даже SDK отличается. А линукс - есть линукс, майкрософт ни какой ответственности за него не несет. Надеюсь, я понятно объяснил, почему твои пример неуместны. Я понимаю, что ты хочешь смягчить обе стороны, но если склоняешься на одну, то хотя бы не подкупай вторую псевдоаргументами.

и не пишу я, что использовать нужно только API, но если уже есть решение проблемы, зачем изобретать самокат? Это не то, чтобы неправильно, но если привыкнешь лазать в омут, так его и будешь искать при любом удобном случае.

GoldFinch, если бы ты писал о системном программировании, но ты взялся разворачивать спецификацию, которая явно реализуется в функции API, так что держи удар как есть, здесь с названием раздела все в порядке.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 16.1.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



GremlinProg, раз уж тебе хочется оставаться в рамках темы, то я думаю те следует признать что тема относится к защите ПО, а при написании защиты использования АПИ стараются избегать
PM MAIL ICQ   Вверх
GremlinProg
Дата 16.1.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



защиту в данном случае API ни коим образом ни усилит ни уменьшит, вредитель вторым делом может сразу подменить базу модуля в обоих случаях, а первым - просто поставить джампер перед проверкой сигнатур, так что овчинка выделки не стоит.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
W4FhLF
Дата 16.1.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(GremlinProg @  16.1.2009,  16:20 Найти цитируемый пост)
Надеюсь, я понятно объяснил, почему твои пример неуместны.


Что ты объяснил? Я и так знаю, что такое DDK и что "Линукс != Виндовс". 

Цитата(GremlinProg @  16.1.2009,  16:20 Найти цитируемый пост)
и не пишу я, что использовать нужно только API, но если уже есть решение проблемы, зачем изобретать самокат


А кто изобретает самокат? Ты вообще посмотри, что за библиотека такая dbghelp.dll(новые версии этой библиотеки вообще являются исключительно частью debugging tools), тебя её название на какие мысли наводит? Там пара функций для непосредственно работы с PE, поэтому даже если сильно захотеть, при работе с PE одними API ты не ограничишься. Даже если ты используешь функции из этой библиотеки, параметрами выступают те же самые структуры, из одного и того же хедера. Т.е. в любом случае в программе ты привязываешься к этим структурам, только вместо обращения к члену структуры ты предлагаешь использовать API из библиотеки, которая вообще являются инструментом для других задач. 





--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GremlinProg
Дата 16.1.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(W4FhLF @  16.1.2009,  19:06 Найти цитируемый пост)
Я и так знаю, что такое DDK и что "Линукс != Виндовс". 

зачем приводишь пример, когда уже знаешь, что он в данном случае не может подкрепить точку зрения?

Цитата(W4FhLF @  16.1.2009,  19:06 Найти цитируемый пост)
А кто изобретает самокат? Ты вообще посмотри, что за библиотека такая dbghelp.dll(новые версии этой библиотеки вообще являются исключительно частью debugging tools)

ну и зачем опять вопрос, на который, подозреваю, ты и сам знаешь ответ:
как раз для debugging-инструментов она и поддерживается, а полноценно существует ее урезанная версия - ImageHlp, которая ни куда не исчезает.
Цитата(W4FhLF @  16.1.2009,  19:06 Найти цитируемый пост)
...даже если сильно захотеть, при работе с PE одними API ты не ограничишься...

об этом я даже не спорю, ты не найдешь ни одного поста, где я бы говорил, что использовать нужно только API. Хочешь копать глубже, значит используй спецификацию и следи за ее изменениями (не хочешь - ищи другие решения (по моему, jonie уже приводил пример в этом ракурсе)).


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
W4FhLF
Дата 16.1.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



GremlinProg, что-то я не понимаю о чём мы тогда спорим?smile Я говорю, что для работы с PE файлами АПИ использовать, ну, как бы сказать, совсем даже не гуд. Вот у меня за время работы с PE наваялась своя собственная библиотека(модуль на С++) с различными функциями. Я её и в драйверах, и в нативных приложениях, и в прикладных использую. Она даже кроссплатформена, т.е. под линухом тоже всё собирается. Ну а по-скольку PE формат не менялся уже лет 15 и меняться не собирается, то зачем я буду заботиться об этом? Получается наоборот, твои API ограничивают меня в плане переносимости, я должен думать есть ли данная библиотека у пользователя... Зачем мне всё это?




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GremlinProg
Дата 16.1.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



спорим, скорее всего, все о той же целесообразности.
ты приводишь платформозависимые примеры в теме, где о ядре не было ни слова и не подразумевается
я пытаюсь просто отстоять точку зрения, что там где за тебя уже подумали, не нужно городить огород
это и для разработчика удобно и для переносимости в чужие умы
тем более, не нужно на ровном месте героически создавать проблемы и так же героически их решать, это, как говорится, не наш метод.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0613 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.