Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.03.2014, 13:47
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Назначение прав для функций

Думаю, краткого описания будет достаточно.

Итак, есть готовое (рабочее) приложение с исходниками. Все основные задачи описаны в методах одного класса. Вопрос, как мне можно не переделывая каждый метод назначить права?

Например есть методы:

Код:
procedure method1
begin
код
end;

procedure method2
begin
код
end;

procedure method3
begin
код
end;

А мне надо, не внося изменения в тело каждого метода перехватывать их вызов. То есть в идеале описать класс вида

Код:
TMyClass = class
private
.........
public
Property BeforeMethod1_Execute....
Property BeforeMethod2_Execute.....
Property BeforeMethod3_Execute....
end;

procedure BeforeMethod1_ex
begin
if condition then перейти к выполнению метода1 основного класса;
end;

procedure BeforeMethod2_ex
begin
if condition then перейти к выполнению метода2 основного класса;
end;

procedure BeforeMethod3_ex
begin
if condition then перейти к выполнению метода3 основного класса;
end;
Ответить с цитированием
  #2  
Старый 31.03.2014, 22:09
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Создать наследник и переопределить все нужные методы, в каждом вызывать соответственно оригинальный метод?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 01.04.2014, 04:51
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Создать наследник и переопределить все нужные методы, в каждом вызывать соответственно оригинальный метод?
Хорошо, спрошу по-другому. Есть ли способ отследить вызов функций и процедур не внося в их тело изменения? Допустим, это не методы класса, а обычные процедуры.
Ответить с цитированием
  #4  
Старый 01.04.2014, 11:25
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код написан и скомпилирован тобой?
Если нет, то в общем случае - нельзя.
Код:
; FASM-syntax
  ; Пример чуток обфусцированного кода:
  mov eax, 10000h
  add eax,  23456h
  call eax

org 0x33456
  proc1:
   ...
И как ЭТО отслеживать? Опустим self-debug технологии, т.к. это маразм.
Если такая ситуация - могу дать несколько частных случаев, покрывающих 98% вызовов, но это будет долго и муторно.

Если же код написан тобой или просто имеются исходники - не вижу проблемы в том, чтобы сделать Ctrl+H всех вызовов, предварительно сняв бекапы.
Короче - опиши более детально, что и зачем надо перехватить.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 01.04.2014, 12:12
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Какая разница кем написан код? У меня есть исходник...

Надо каким то образом перехватывать выполнение функций с возможностью его (выполнение) отменить или продолжить при необходимости. Не обязательно методы класса. Могут быть обычные функции и процедуры описанные в юните.
Ответить с цитированием
  #6  
Старый 01.04.2014, 12:19
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Тогда Ctrl+H, как я сказал.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 03.04.2014, 06:01
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Тогда Ctrl+H, как я сказал.
У меня глупый вопрос. А что делает ctrl+h?
Ответить с цитированием
  #8  
Старый 03.04.2014, 08:59
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от morebeauty
У меня глупый вопрос. А что делает ctrl+h?
Замена текста.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 03.04.2014, 11:42
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Замена текста.
А у меня по ctrl+h ничего не происходит. А Replace - ctrl+r. Или речь не о такой замене?
Ответить с цитированием
  #10  
Старый 03.04.2014, 15:43
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
А у меня по ctrl+h ничего не происходит. А Replace - ctrl+r
В большинстве редакторов и сред замена - Ctrl+H. У меня в DXE работает и Ctrl+R, и Ctrl+H.
Да, это та самая замена. Можно использовать регулярки, если без них никак.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter