webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

Как да получите достъп до заменената процедура след FastcodeAddressPatch

Опитах се да заменя вградената функция на Delphi с моя собствена версия в движение.

function ShortCutToTextOverride(ShortCut: TShortCut): string;
begin
  if SomeCondition then
    Result := Menus.ShortCutToText // after patching the pointer equals ShortCutToTextOverride
  else
  begin
    // My own code goes here
  end;
end;

FastcodeAddressPatch(@Menus.ShortCutToText, @ShortCutToTextOverride);

След корекция оригиналната функция вече не е достъпна. Възможен ли е достъп до него все пак?

15.05.2012

  • Ако искате надеждно закачане на код за win32 (x64 все още е в процес на разработка), тогава бих препоръчал madCodeHook: madshi.net/ madCodeHookDescription.htm 15.05.2012
  • Можете също да използвате нещо like this. 15.05.2012

Отговори:


1

Страхувам се, че не: първите байтове се презаписват чрез прескачане към новата функция.

Можете да използвате KOLDetours.pas: той връща показалеца към батута (първите няколко байта на оригинала, които се презаписват от обхода). http://code.google.com/p/asmprofiler/source/browse/trunk/SRC/KOLDetours.pas

Например:

type
  TNowFunction = function:TDatetime;
var
  OrgNow: TNowFunction;
function NowExact: TDatetime;
begin
  //exact time using QueryPerformanceCounter
end; 

initialization
  OrgNow := KOLDetours.InterceptCreate(@Now, @NowExact);
  Now()     -> executes NowExact() 
  OrgNow()  -> executes original Now() before the hook 
15.05.2012
  • KOLDetours работи перфектно за 32-битов компилатор, но има някои проблеми с 64-битов компилатор. Не намерих никакви актуализации за 64bit. 04.02.2014
  • Открих, че версията с корекция Cromis.Detours е съвместима с x64. Надявам се информацията да е полезна за всички вас. 07.03.2014
  • @stanleyxu2005 сигурен ли си, че работи на 64 бита? Тъй като това е същата единица (копие на koldetours) без промени за обработка на 64-битови специфични неща. Или можете да публикувате връзка към закърпената версия? 07.03.2014
  • Ето връзката code.google.com/p/native-look-vcl Успях да използвам KOLDetours, за да заработи. Но приложението ми не успя да бъде компилирано на платформа x64, докато не преминах към Cromis.Detours. Неговата оригинална начална страница може да се търси в Google. 08.03.2014
  • @stanleyxu2005 добре, така че се компилира, но работи ли и в 64 бита? Съмнявам се, че става... 10.03.2014
  • Да, кодът компилира (и също работи с) Cromis.Detours. Съжалявам за късния отговор. 10.11.2014
  • Нови материали

    Създайте разширение за Chrome с помощта на Angular
    Този урок е базиран на манифеста на разширението на chrome версия 3 (MV3), а също и на Angular версия 2+ (2, 3 и...). Ако не сте използвали манифест версия 3, можете да следвате този урок ,..

    За да научите нов език за програмиране, започнете отначало
    Първоначално публикувано на http://www.mberlove.com/blog/a-new-programming-language-starting-over/ Програмистите се гордеят със способността си да усвояват лесно нови умения , разчитайки..

    5 Youtubers на Data Science, които трябва да следвате
    Защото всички можем да се справим с малко продуктивно отлагане Всички сме падали в заешката дупка на Youtube, така че защо да не я направим продуктивна?! Като непрекъснато нарастващ източник..

    Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител.
    Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител. По същия начин, по който суперкодерът сочи vim като единствения начин за кодиране, но останалите от нас..

    Основи на Gradio
    Gradio е най-ефективният метод за демонстриране на вашия модел на машинно обучение и разполага с удобен за потребителя онлайн интерфейс, който го прави достъпен от всяко място. Какво прави..

    Илюстрация (GIF) за обяснение на дълбоки конволюционни мрежи (DCNN)
    В света на компютърното зрение най-основният и често срещан алгоритъм за разпознаване на изображения е конволюционната мрежа. С популярността на рамки като tensorflow и pytorch, стана по-лесно да..

    Python Bootcamp — Data Science Day 165
    Python Bootcamp от Giles McMullen-Klein беше абсолютно невероятно. Джайлс има този уникален начин да улови аудиторията си, като същевременно прави съдържанието на курса много интересно...