Re[5]: Так и не понял смысла статьи
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 15.01.04 11:00
Оценка: :)
Эх, да что же вы везде уголовщину-то видите, люди? Заверяю, что в том, как я использовал программу и чужую DLL, не было:
1) ничего противозаконного
2) никакого попрания авторских прав — человек был не против
3) и даже, думаю, ничего неэтичного с какой-либо другой точки зрения. По отношению к автору DLL вообще ничего, а по отношению к получателю продукта — почти ничего: поступки той же степени неэтичности по отношению к нему в массовых количествах совершаются кождый день.

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

Больше я в дискуссиях на тему этики и/или законности по данному сабжу не участвую. Я свое слово сказал — так все и было.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[5]: Так и не понял смысла статьи
От: WolfHound  
Дата: 15.01.04 13:02
Оценка: +1 :)
Здравствуйте, 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 по выходу..

F := TMemoryStream.Create;
F.LoadFromFile('test.dll');
MyLibrary := xLoadLibrary(M.Memory, MyImports);
ExecMyProcedureFromDLL;
xFreeLibrary(MyLibrary);
F.Free;
Re: Все, убедили...
От: sataron Россия www.sataron.da.ru
Дата: 27.03.05 13:07
Оценка:
Здравствуйте, Slicer [Wirkwood], Вы писали:

SW>Напишу параллельную линейку кода на C.

SW>Только не прямо сегодня.

А воз и ныне там... (с) Не помню кто!
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
С наилучшими пожеланиями.
Re[2]: Все, убедили...
От: yxiie Украина www.enkord.com
Дата: 27.03.05 14:00
Оценка: :)))
Здравствуйте, sataron, Вы писали:

S>А воз и ныне там... (с) Не помню кто!


Крылов. Басня "Лебедь, рак и щука"
... << RSDN@Home 1.1.3 stable >>
Re: Загрузчик PE-файлов
От: wildwind Россия  
Дата: 28.03.05 12:25
Оценка:
Здравствуйте, Максим М. Гумеров, Вы писали:

ММГ>Статья:

ММГ>Загрузчик PE-файлов
Автор(ы): Максим М. Гумеров
Дата: 20.03.2003
Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.


ММГ>Авторы:

ММГ> Максим М. Гумеров

Хорошая статья.
После прочтения я задумался вот над чем: предоставляет ли предложенный метод загрузки возможность обойти такую фичу Windows XP/2003, как политика запрещения/разрешения запуска программ по хешу модулей. Если мы обходимся без LoadLibrary и GetProcAddress, то где еще винда может нас проверить? Может быть пора трубить об очередной дыре в безопасности Windows?
А где всё таки лежит двоичный код Dll?
От: Time Россия  
Дата: 28.03.05 20:25
Оценка:
Здравствуйте, Максим М. Гумеров.
Статью прочел, может не внимательно, может не допонял чаво, но вот остался вопрос, а где всё-таки лежит двоичный код бибилиотеки, насколько я понял он лежит в ресурсах 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), то почему об этом не упомянуто в статье?
Спасибо.

Сергей
//x-cipher ( at) mail ( dot) ru
Re: Загрузчик PE-файлов
От: X-Cipher Россия  
Дата: 19.09.05 11:11
Оценка:
Здравствуйте, Максим.

Вновь обращаюсь к Вам в надежде прочить ответ, на этот раз будучи зарегистрированным пользователем ресурса (вдруг это спасет ситуацию. Что такое PRVAs (похоже что массив указателей)? Я плохо понимаю в паскале — примерно как немец в английском — поэтому мне не допереть, как его правильно индексировать ( [i] ?= addr+i*4 ). На предыдущий вопрос ответ вроде бы нашелся.
Спасибо!

Сергей

//x-cipher ( at) mail ( dot) ru
Сергей

// x-cipher ( at) mail ( dot) ru
Re[2]: Загрузчик PE-файлов
От: X-Cipher Россия  
Дата: 19.09.05 11:27
Оценка:
XC>Вновь обращаюсь к Вам в надежде прочить ответ

Пардон, нужно читать "в надежде получить ответ"
Сергей

// x-cipher ( at) mail ( dot) ru
Re[2]: Загрузчик PE-файлов
От: gear nuke  
Дата: 19.09.05 15:54
Оценка:
Здравствуйте, 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
Re[3]: Загрузчик PE-файлов
От: X-Cipher Россия  
Дата: 20.09.05 07:33
Оценка:
Здравствуйте, gear nuke, Вы писали:

[]

Спасибо!
Сергей

// x-cipher ( at) mail ( dot) ru
Re: Загрузчик PE-файлов
От: Аноним  
Дата: 04.10.07 12:40
Оценка: 4 (1)
Здравствуйте, Максим М. Гумеров, Вы писали:

ММГ>Статья:

ММГ>Загрузчик PE-файлов
Автор(ы): Максим М. Гумеров
Дата: 20.03.2003
Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.


ММГ>Авторы:

ММГ> Максим М. Гумеров

ММГ>Аннотация:

ММГ>Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.


Обновленная версия спецификации.
Microsoft Portable Executable and Common Object File Format Specification
Updated: May 21, 2006
http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
Re: Загрузчик PE-файлов [C++]
От: gear nuke  
Дата: 19.12.07 20:49
Оценка:
С некоторой натяжкой, на базе этого можно написать на С++. Пример загрузчика есть здесь (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
Re: Загрузчик PE-файлов
От: nzeemin Россия http://nzeemin.livejournal.com/
Дата: 29.12.07 13:23
Оценка:
Здравствуйте, Максим М. Гумеров, Вы писали:

ММГ>Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.


Извините, возможно я чего-то недопёр, но что мешало использовать для этих целей WinAPI LoadLibrary/GetProcAddress/FreeLibrary (пример "Using Run-Time Dynamic Linking" в MSDN)? Почему нужен был именно свой загрузчик?
Re: Загрузчик PE-файлов
От: Аноним  
Дата: 21.08.08 12:08
Оценка: :))) :))
Здравствуйте, Максим М. Гумеров, Вы писали:

ММГ>Статья:

ММГ>Загрузчик PE-файлов
Автор(ы): Максим М. Гумеров
Дата: 20.03.2003
Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.


ММГ>Авторы:

ММГ> Максим М. Гумеров

ММГ>Аннотация:

ММГ>Не вдаваясь в подробности, скажу лишь, что исследование было начато ради сокрытия использования программой на Delphi некоей DLL (написанной на VC++). То есть оператор видит один только Exe-файл, запускает его, а тот каким-то образом подключает функции, содержащиеся изначально (при компиляции проекта) в некоторой DLL.



А есть ли у кого нибудь готовый простой пример на Delphi?
Re: А где всё таки лежит двоичный код Dll?
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 16.07.09 05:36
Оценка:
Здравствуйте, Time, Вы писали:

T>Здравствуйте, Максим М. Гумеров.

T> Статью прочел, может не внимательно, может не допонял чаво, но вот остался вопрос, а где всё-таки лежит двоичный код бибилиотеки, насколько я понял он лежит в ресурсах exe. Но в то же время в статье утверждается что хранить в ресурсах плохо.
T> Спасибо.
навскидку — некогда перечитывать — вероятно, я имел в виду, что хранить в ресурсе И потом извлекать на диск и грузить — плохо. А в статье предлагается грузить напрямую в память, минуя создание дискового файла.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[2]: частности. пока не вполне по сути вопроса.
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 16.07.09 05:38
Оценка:
А>Спасибо Вам, очень хорошая и полезная статья. Сейчас как раз разбираюсь и пробую перевести на Си. В финальной редакции XLoadLibrary Вы прибегли к xchg(a,b) путем a^b;b^a;a^b. Является ли это шагом осознанным (работает быстрее/выглядит нагляднее/другая причина) или так просто?

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

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.