![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
поверь, ты жертвуешь не универсальностью, а временем, причем своим же
время, потраченное на стандартизированный вызов функции - это ничто, по сравнению с временем, потраченному на запуск приложения, поскольку загрузчик всякий раз читает структуру PE в соответствии спецификации для его корректного запуска. Так что в скорости ты не выигрываешь (попробуй посчитать процент выигрыша, ты сильно расстроишься, как он будет ничтожен) Если уж нужно часто запускать приложение, то подумай, как его оптимизировать, чтобы запускать взамен приложения - только функцию, причем функцию уже загруженную в память. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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-файлов вручную проверять, полезно иногда
да не в соответствии спецификации он его читает... он игнорирует половину полей, некоторые поля использует совсем не так как они называются, а влияние некоторых полей на правильность файла в спецификации и вовсе не написано. Это сообщение отредактировал(а) GoldFinch - 16.1.2009, 09:24 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
а какова кстати цель такой идентификации? определить загрузила ли библиотеку своя программа или нет? тогда можно и без изысков с PE форматом обойтись, компилить эту свою программу с уникальным стабом (dos stub) и проверять с него ли начинается модуль
т.е. по адресу GetModuleHandle(NULL) должна будет лежать заранее известная последовательность байт совсем будет красиво засунуть в стаб ехешки часть кода DllMain(), например декриптор дллки |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ни чего не путаешь, может наоборот? приведи список этого чрезвычайно опытного большинства, хотя бы десяток, которые не используют API там, где требуется соблюдение стандартов? Всем будет интересно увидеть подписавшихся под этим списком (я лично сомневаюсь, что ты получишь даже 1 голос от системных программистов, не всякий захочет ставить такое пятно на своей репутации)
Какие же они глупые эти программисты майкрософт, наворотили зачем-то кучу бесполезных функций. GoldFinch, ты уже отлично показал свою эрудированность, не усугубляй свое положение. Стандарт майкрософт поддерживается в API чтобы разработчики могли свободно управлять своими программами, не заморачиваясь на соблюдении этого стандарта. Майкрософт тебе сделала подарок этим набором API, так что если ты действительно хочешь добиться успехов в программировании, научись его ценить и использовать. А любые "финтифлюшки" из рода "мелкософт - неподумал", "мелклсофт - глупый" от одного индивидуума, расцениваются в первую очередь как невежество этого индивидуума, так что, наберись сначала достаточного опыта в этой сфере деятельности прежде чем делать такие заявления. ps: любой твой последующий неаргументированный выпад на майкрософт будет отражен у тебя в репутации со знаком минус, а при продолжении такого флуда, будет бан. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
По-моему, ты злоупотребляешь. Например я никогда API для работы с PE не юзал, а опыт работы с PE у меня приличный. И никогда не видел, чтобы кто-нибудь их моих знакомых реверсеров или системщиков их юзал. Пишут ли они антируткит или протектор... всегда всё делается ручками. Хотя работать непосредственно со смещения -- глупость конечно, структуры/юнионы должны быть. Это сообщение отредактировал(а) W4FhLF - 16.1.2009, 14:54 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
нет не злоупотребляю, почитай сообщения GoldFinch, которые он уже старательно перетирает, но в цитатах суть хорошо видна
если я не прав, меня всегда могут поправить модераторы, но суть от этого не меняется, такое хамское поведение на форуме меня не удовлетворяет GoldFinch, уже не раз и не два был предупрежден, бан - мера вынужденная, я его использовать не хочу
это твой голос, и он тут останется, не забывай об этом, GoldFinch, тоже расписывает чуть ли не в каждом посте, какой он профессионал и выглядит это, сам понимашь, наивно. Опыт и знания - не одно и то же, и мне жаль, что ты сейчас напрямую противоречишь очевидному: кто вводит правила - тому и проще их соблюдать. Это вопрос, как ты уже заметил, о целесообразности. На форуме, посвещенному API, согласие с этой формулировкой уже закреплено в названии, так что пока я здесь ответственен за порядок, я не допущу расхождения тематики форума с его содержанием. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Пока, что я вижу только, что ты в каждом посте пытаешься доказать ему обратное.
Чему я противоречу? Только из своего опыта я вспоминаю два проекта, где я работал с PE без API как минимум потому то не мог их использовать в прицнипе(это был драйвер под WinNT и бинарник под линукс для работы с PE). И я могу привести ещё много частных случаев, когда следует отбросить API. На самом деле вы оба впадаете в крайности. Один говорит: "API is the evil", а другой говорит "Only API", а фактически истина посередине. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
GremlinProg, раздел форума называется C/C++: Системное программирование и WinAPI, как видите апи здесь на последнем месте. Я прекрасно понимаю что без апи многого в винде не сделать, но во всем надо соблюдать меру - гдето использование апи бессмысленно, а гдето и вредно.
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
нет, я его комментировал очень редко, и не доказываю ему ничего, а прошу не сыпать заведомо ложными заявлениями, цитируя в основном майкрософт, а это совершенно разные вещи. в данном случае для драйвера API меняется на DDK, ее рекомендациям и нужно следовать, если там нет инструментов для работы с PE, значит native-API тут опускать, по крайней мере, бессмысленно. Под ядро даже SDK отличается. А линукс - есть линукс, майкрософт ни какой ответственности за него не несет. Надеюсь, я понятно объяснил, почему твои пример неуместны. Я понимаю, что ты хочешь смягчить обе стороны, но если склоняешься на одну, то хотя бы не подкупай вторую псевдоаргументами. и не пишу я, что использовать нужно только API, но если уже есть решение проблемы, зачем изобретать самокат? Это не то, чтобы неправильно, но если привыкнешь лазать в омут, так его и будешь искать при любом удобном случае. GoldFinch, если бы ты писал о системном программировании, но ты взялся разворачивать спецификацию, которая явно реализуется в функции API, так что держи удар как есть, здесь с названием раздела все в порядке. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
GremlinProg, раз уж тебе хочется оставаться в рамках темы, то я думаю те следует признать что тема относится к защите ПО, а при написании защиты использования АПИ стараются избегать
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
защиту в данном случае API ни коим образом ни усилит ни уменьшит, вредитель вторым делом может сразу подменить базу модуля в обоих случаях, а первым - просто поставить джампер перед проверкой сигнатур, так что овчинка выделки не стоит.
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Что ты объяснил? Я и так знаю, что такое DDK и что "Линукс != Виндовс".
А кто изобретает самокат? Ты вообще посмотри, что за библиотека такая dbghelp.dll(новые версии этой библиотеки вообще являются исключительно частью debugging tools), тебя её название на какие мысли наводит? Там пара функций для непосредственно работы с PE, поэтому даже если сильно захотеть, при работе с PE одними API ты не ограничишься. Даже если ты используешь функции из этой библиотеки, параметрами выступают те же самые структуры, из одного и того же хедера. Т.е. в любом случае в программе ты привязываешься к этим структурам, только вместо обращения к члену структуры ты предлагаешь использовать API из библиотеки, которая вообще являются инструментом для других задач. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
зачем приводишь пример, когда уже знаешь, что он в данном случае не может подкрепить точку зрения?
ну и зачем опять вопрос, на который, подозреваю, ты и сам знаешь ответ: как раз для debugging-инструментов она и поддерживается, а полноценно существует ее урезанная версия - ImageHlp, которая ни куда не исчезает.
об этом я даже не спорю, ты не найдешь ни одного поста, где я бы говорил, что использовать нужно только API. Хочешь копать глубже, значит используй спецификацию и следи за ее изменениями (не хочешь - ищи другие решения (по моему, jonie уже приводил пример в этом ракурсе)). -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
GremlinProg, что-то я не понимаю о чём мы тогда спорим?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
спорим, скорее всего, все о той же целесообразности.
ты приводишь платформозависимые примеры в теме, где о ядре не было ни слова и не подразумевается я пытаюсь просто отстоять точку зрения, что там где за тебя уже подумали, не нужно городить огород это и для разработчика удобно и для переносимости в чужие умы тем более, не нужно на ровном месте героически создавать проблемы и так же героически их решать, это, как говорится, не наш метод. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "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. |