|
|
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Зачем вообще заниматься хакерством, если можно всё сделать на чистом Delphi и не лезть во внутренние структуры классов? 21836485 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 12:42 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Хм.. Вот так тоже работает корректно Код: pascal 1. 2. Я взял адрес (EBP(0x0019FD04)) + 0x08 = 1703180 И структура self заполнилась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 12:49 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
А вот так вообще никак не реагирует Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 12:54 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Это я ошибся. Ложная инфа. self оставил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 12:56 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Мозг уже кипит. Мне совершенно непонятно с какой магической помощью работает данный ассемблер. Почему вот это работает Код: pascal 1. 2. 3. 4. А вот это не работает Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Притом если написать mov eax, offset Enigne То ничего не изменится в конечном результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 13:08 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
FoxpcМозг уже кипит. Мне совершенно непонятно с какой магической помощью работает данный ассемблер. почитайте, что означают квадратные скобки в ассемблере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 13:27 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Tactical Nuclear Penguin, Да pointer ^^^ Я знаю это. Но от них не избавится через обычный код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 13:36 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Во-первых тут вообще не нужен ассемблер. Во вторых, чем отличается x := p^ от x := p^^ ? В третьих, чем отличается x := p; x^ := n; от x := p^; x := n; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 14:20 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
впрочем, баги в Дельфи-ассемблере бывают совершенно великолепный, вплоть до компиляции кода прямо противоположного написанному. Но это не тот случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 14:22 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Foxpc, лучше не парься, объяви static функцию, как советует X-Cite, и в ней вызывай свой метод, проиграешь чуток на вызове, но кучу проблем избежишь и с полиморфом, как советует ziv-2014, возиться не советую, очень уж неровно к ним антивирусы относятся, да и на 64-битном коде особого выигрыша они не дают, зато проблем создают ещё больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 14:40 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)проиграешь чуток на вызове с хрена ли? это обычная глобальная функция, только с переменной Self (которая всё равно константа) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 15:24 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)и с полиморфом, как советует ziv-2014, возиться не советую нет там никакого полиморфа, обычное создание функции-заглушки на лету тот же вызов DLL, только сложнее. Это всё тот же старый вопрос: Ariochа это в зависимости от 21836382 AriochНу так этот интерфейс, он в момент времени один единственный, или их может быть одновременно много? Если несколько - то одной глобальной переменной не хватит, и придётся плодить функции. Если один - то просто классовый статический метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 15:33 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Ariochkealon(Ruslan)проиграешь чуток на вызове с хрена ли? это обычная глобальная функция, только с переменной Self (которая всё равно константа)static метод без потайного параметра, указывающего на класс в вызове потеряешь если нужно выйти с него на нормальный объект Ariochkealon(Ruslan)и с полиморфом, как советует ziv-2014, возиться не советую нет там никакого полиморфа, обычное создание функции-заглушки на лету тот же вызов DLL, только сложнее. смотри внимательно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. выделение места в куче под код и называется полиморфом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 18:05 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Тут типа что то подобное.. Но НАДО разбираться в этой помойке https://github.com/pyscripter/python4delphi/blob/e6607599147084a61dc832413867826ea43f0aab/PythonForDelphi/Components/Sources/Core/MethodCallBack.pas ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 19:09 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
FoxpcТут типа что то подобное.. Но НАДО разбираться в этой помойке https://github.com/pyscripter/python4delphi/blob/e6607599147084a61dc832413867826ea43f0aab/PythonForDelphi/Components/Sources/Core/MethodCallBack.pas тоже самое, просто чуть более ленивый программист зачем это для питона, где и так есть способы передать указатель, тоже непонятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 19:42 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)в вызове потеряешь если нужно выйти с него на нормальный объект а зачем "выходить на нормальный объект", если объект всего лишь один (или вообще ноль) и лежит в глобальной переменной? kealon(Ruslan)выделение места в куче под код и называется полиморфом Нет, полиморфом называется изменение кода программы, чтобы все команды были другими, а результат их выполнения - тот же самый. Поли-морф, много разных кодов для одного и того же результата. Изначально (MtE, Mutation engine) это вообще было бинарной перекомпиляцией ЕМНИП. Создание нового кода программы, хоть в куче, хоть где - рядовое дело. Например Delphi ваш код компилирует. Например LoadLibrary грузит DLL, у которой статическая линковка зависимых DLL Например VirtualDub создаёт дерево фильтров для копирования видео с обработкой. Надо ещё на всякие мульти-ивенты в spring4D внимательно посмотреть На TVirtualMethodInterceptor из Delphi XE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 20:48 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Кстати, антивирусы иногда и на банальный FPC RTL стойку делают. А на запрос отвечают "ну нам так проще, все равно нормальных программ на этом языке не пишут, так что не жалко" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 20:52 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Arioch, через годик - два и на простой компилятор delphi будут антивирусы орать я видел билдеры которые используют чистый компилятор delphi (15 мб размером) для злых умыслов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 21:14 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Привет. FoxpcЕщё одно решение Код: pascal 1. 2. 3. Но без ассемблера через код, никак такое не удалось сделать. pointer( Self ) := @Form1; С уважением, Polesov. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 23:43 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Polesovpointer( Self ) := @Form1; pointer( Self ) := @Enigne; Копи/паст, блин ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2019, 23:46 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Ariochkealon(Ruslan)в вызове потеряешь если нужно выйти с него на нормальный объект а зачем "выходить на нормальный объект", если объект всего лишь один (или вообще ноль) и лежит в глобальной переменной? kealon(Ruslan)выделение места в куче под код и называется полиморфом Нет, полиморфом называется изменение кода программы, чтобы все команды были другими, а результат их выполнения - тот же самый. Поли-морф, много разных кодов для одного и того же результата. Изначально (MtE, Mutation engine) это вообще было бинарной перекомпиляцией ЕМНИП. Создание нового кода программы, хоть в куче, хоть где - рядовое дело. Например Delphi ваш код компилирует. Например LoadLibrary грузит DLL, у которой статическая линковка зависимых DLL Например VirtualDub создаёт дерево фильтров для копирования видео с обработкой. Надо ещё на всякие мульти-ивенты в spring4D внимательно посмотреть На TVirtualMethodInterceptor из Delphi XE загрузчик dll рассматривать как полиморф смысла нет, ибо это часть системы, а свои всегда ровнее под "выделением места в куче под код" подразумевается естественно и выставление ему флагов на запуск PAGE_EXECUTE и исполнение, а не компиляция TVirtualMethodInterceptor можешь не копать, нет там полиморфного кода ну а насчёт рядового дела, неизвестные "загрузчики-распаковщики" вызывают дикие позывы у антивирусов Полиморф - это любая программа, которая модифицирует свой код(если я дорисую к подписи чёрточки это же модификация? так?), а как она это делает выделяет ли на куче или в кодовом блоке правит не особо важно. Очень так живенько с VCL весь полиморфный код выпиливали. по сабжу, тынц - довольно старая статья, показывающая как раньше это было круто, и там же длинный ряд комментов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2019, 00:00 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey1. Анонимки это интерфейсы. 2. Поля не для параметров, а для контекста (закомментировать 1, раскомментировать 2) 1. Под капотом создается TInterfacedObject 2. Интерфейс не способен захватить контекст и нужен только для соглашения вызова в Invoke ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2019, 01:39 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
white_nigger, И без уточнений понятно, что за интерфейсом всегда стоит реализация. Оперируя анонимкой - оперируешь интерфейсом, в этом была суть вопроса. А уж какими средствами он реализуется - дело десятое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2019, 02:33 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Абсолютно согласен. Только изначальный мой пост был для желающего передать анонимку к сишную процедуру. Я хотел уточнить, что это в итоге выльется в вызов метода наследника со всеми вытекающими. А так понятно что интерфейсы юзаются для чистоты и чтоб в итоге очистить объект, реализующий анонимку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2019, 02:50 |
|
||
|
Передача аннонимной функции в cи библиотеку
|
|||
|---|---|---|---|
|
#18+
white_niggerKazantsev Alexey1. Анонимки это интерфейсы. 2. Поля не для параметров, а для контекста (закомментировать 1, раскомментировать 2) 1. Под капотом создается TInterfacedObject 2. Интерфейс не способен захватить контекст и нужен только для соглашения вызова в Invoke Способен, потому что в зависимости от контекста, этот интерфейс для анонимной процедуры будет разным, а именно там будут поля для переменных контекста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2019, 09:14 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39788399&tid=2039678]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
151ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 439ms |

| 0 / 0 |
