Эх, да что же вы везде уголовщину-то видите, люди? Заверяю, что в том, как я использовал программу и чужую DLL, не было:
1) ничего противозаконного
2) никакого попрания авторских прав — человек был не против
3) и даже, думаю, ничего неэтичного с какой-либо другой точки зрения. По отношению к автору DLL вообще ничего, а по отношению к получателю продукта — почти ничего: поступки той же степени неэтичности по отношению к нему в массовых количествах совершаются кождый день.
Вот так. Оставляю вас гадать о том, для чего же я использовал этот подход. А статью написал просто в целях систематизировать отдельные знания о PE-формате и загрузке модулей, почерпнутые из различных источников.
Больше я в дискуссиях на тему этики и/или законности по данному сабжу не участвую. Я свое слово сказал — так все и было.
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Здравствуйте, c-smile, Вы писали:
CS>1) Сама концепция этой фразы этически не вяжется с духом RSDN (Это я уже модераторам свое ИМХО сообщаю)
Я знаю автора и знаю зачем он это использовал с пиратством это не связано.
Больше ни чего сказать не могу.
ЗЫ не забываем удалять избыточное цитирование.
... << RSDN@Home 1.1 beta 2 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Переучивайся! 8-)
От:
Аноним
Дата:
26.01.04 18:50
Оценка:
Здравствуйте, Slicer [Wirkwood], Вы писали:
SW>А если серьезно — уж на что я плохо на C пишу, так и то могу перевести готовый код с C на Pascal... Думаю, и тебе будет не сложнее в обратную сторону перевести.
Ремарка:
То то и оно что в обратную сторону, с Паскаля на С, гораздо проще, если речь не идет о вызовах библиотек, реализация которых есть только на паскале. Перевод с С на Паскаль иногда порождает столько проблем, что проще разобраться с принципом работы и написать с нуля.
Re: Загрузчик PE-файлов
От:
Аноним
Дата:
22.03.05 02:44
Оценка:
Подскажите пожалуйста, почему это работает только с ресурсов а например с потока не хочет? Вернее работает но Acceess Violation по выходу..
Хорошая статья.
После прочтения я задумался вот над чем: предоставляет ли предложенный метод загрузки возможность обойти такую фичу Windows XP/2003, как политика запрещения/разрешения запуска программ по хешу модулей. Если мы обходимся без LoadLibrary и GetProcAddress, то где еще винда может нас проверить? Может быть пора трубить об очередной дыре в безопасности Windows?
Здравствуйте, Максим М. Гумеров.
Статью прочел, может не внимательно, может не допонял чаво, но вот остался вопрос, а где всё-таки лежит двоичный код бибилиотеки, насколько я понял он лежит в ресурсах exe. Но в то же время в статье утверждается что хранить в ресурсах плохо.
Спасибо.
... << RSDN@Home 1.1.4 @@subversion >>
Re: частности. пока не вполне по сути вопроса.
От:
Аноним
Дата:
30.08.05 12:34
Оценка:
Здравствуйте, Максим.
Спасибо Вам, очень хорошая и полезная статья. Сейчас как раз разбираюсь и пробую перевести на Си. В финальной редакции XLoadLibrary Вы прибегли к xchg(a,b) путем a^b;b^a;a^b. Является ли это шагом осознанным (работает быстрее/выглядит нагляднее/другая причина) или так просто?
Спасибо за Ваш труд.
Сергей
//x-cipher ( at) mail ( dot) ru
Re: Что такое IMPORTED_NAME_OFFSET ?
От:
Аноним
Дата:
01.09.05 15:14
Оценка:
Здравствуйте Максим.
Собственно сабж. Если эта штука равна 2 (как смещение имени в структуре IMAGE_IMPORT_BY_NAME), то почему об этом не упомянуто в статье?
Спасибо.
Вновь обращаюсь к Вам в надежде прочить ответ, на этот раз будучи зарегистрированным пользователем ресурса (вдруг это спасет ситуацию. Что такое PRVAs (похоже что массив указателей)? Я плохо понимаю в паскале — примерно как немец в английском — поэтому мне не допереть, как его правильно индексировать ( [i] ?= addr+i*4 ). На предыдущий вопрос ответ вроде бы нашелся.
Спасибо!
Здравствуйте, X-Cipher, Вы писали:
XC> Что такое PRVAs (похоже что массив указателей)?
Ответы на практически все вопросы по PE формату есть в официальном документе от MS. На родном языке можно почитать туторы HardWisdom или перевод Iczelion'а (последние всегда лежали на wasm.ru, но что-то сейчас с сайтом, смотрите кеш гугла).
По Вашему вопросу в них много лишнего, но ознакомиться с ними очень полезно.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
ММГ>Авторы: ММГ> Максим М. Гумеров
ММГ>Аннотация: ММГ>Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.
С некоторой натяжкой, на базе этого можно написать на С++. Пример загрузчика есть здесь (src/utils.hxx load_image) + здесь немного (хоть и не совсем по теме).
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, Максим М. Гумеров, Вы писали:
ММГ>Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.
Извините, возможно я чего-то недопёр, но что мешало использовать для этих целей WinAPI LoadLibrary/GetProcAddress/FreeLibrary (пример "Using Run-Time Dynamic Linking" в MSDN)? Почему нужен был именно свой загрузчик?
Re: Загрузчик PE-файлов
От:
Аноним
Дата:
21.08.08 12:08
Оценка:
Здравствуйте, Максим М. Гумеров, Вы писали:
ММГ>Статья: ММГ>Загрузчик PE-файлов
ММГ>Авторы: ММГ> Максим М. Гумеров
ММГ>Аннотация: ММГ>Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.
А есть ли у кого нибудь готовый простой пример на Delphi?
Здравствуйте, Time, Вы писали:
T>Здравствуйте, Максим М. Гумеров. T> Статью прочел, может не внимательно, может не допонял чаво, но вот остался вопрос, а где всё-таки лежит двоичный код бибилиотеки, насколько я понял он лежит в ресурсах exe. Но в то же время в статье утверждается что хранить в ресурсах плохо. T> Спасибо.
навскидку — некогда перечитывать — вероятно, я имел в виду, что хранить в ресурсе И потом извлекать на диск и грузить — плохо. А в статье предлагается грузить напрямую в память, минуя создание дискового файла.
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
А>Спасибо Вам, очень хорошая и полезная статья. Сейчас как раз разбираюсь и пробую перевести на Си. В финальной редакции XLoadLibrary Вы прибегли к xchg(a,b) путем a^b;b^a;a^b. Является ли это шагом осознанным (работает быстрее/выглядит нагляднее/другая причина) или так просто?
Основные причины — тогдашнее юношеское желание выпендриться и тот факт, что такой подход позволяет обойтись без третьей (промежуточной) переменной.
Slicer
Специалист — это варвар, невежество которого не всесторонне :)