Как прервать dll вызовы метода?

Это может быть связано с сериализацией JSON, которая сериализует только общедоступные свойства.

Если вы перенаправите ваш запрос, он будет сериализован, а затем автоматически десилизован с использованием (обычно) JSON. Таким образом, вам понадобятся открытые свойства с getter и setter для всех данных, которые вы хотите передать. Также пустой конструктор.

Но если эти действия находятся в одном контроллере, почему бы вам просто не вызвать метод действия, как любой другой метод в c #? Поэтому вместо

return RedirectToAction("select-appointment", request);

вы пишете

return SelectAppoinment(request, model);

Я знаю, не совсем то, что вы просили, но, по крайней мере, это может быть обходной путь.

12
задан AstroCB 30 August 2014 в 21:09
поделиться

4 ответа

Существует два стандартных способа, которыми я могу думать для того, чтобы сделать это

  • Рычаг таблицы импорта DLL.
    Для этого необходимо проанализировать Заголовок PE DLL, найти таблицу импорта и записать адрес собственной функции вместо того, что уже записано там. Можно сохранить адрес исходной функции, чтобы смочь назвать его позже. Ссылки во внешних ссылках этой статьи Википедии должны дать Вам всю информацию, необходимо смочь сделать это.

  • Прямая модификация кода. Найдите фактический код функции, Вы хотите сцепить и изменить первые коды операций его для перехода к собственному коду. необходимо сохранить код операции, которые были там, таким образом, они будут в конечном счете выполняться. Это более просто, чем это звучит главным образом, потому что это уже была реализация не меньше, чем Microsoft самостоятельно в форме библиотеки Detours.
    Это - действительно аккуратная вещь сделать. только с несколькими строками кода можно, например, заменить все вызовы к GetSystemMetrics () от, говорят, что outlook.exe и следит за чудесами, которые происходят.

Преимуществами одного метода являются недостатки другого. Первый метод позволяет Вам добавлять хирургический рычаг точно к DLL, который Вы хотите, где все другие DLLs проходят отсоединенные. Второй метод позволяет Вам, самый глобальный вид рычага для прерывания всех вызовов делает функцию.

10
ответ дан 2 December 2019 в 18:22
поделиться

При условии, что Вы знаете все функции DLL заранее, одна техника состоит в том, чтобы записать Вашей собственной обертке DLL, который передаст все вызовы функции реальному DLL. Этот DLL не должен быть записан в C/C++. Все, что необходимо сделать, должно соответствовать функциональному соглашению о вызовах исходного DLL.

7
ответ дан 2 December 2019 в 18:22
поделиться

На Linux это может быть сделано с переменной среды LD_PRELOAD. Установите эту переменную для указания на общую библиотеку, которая содержит символ, который Вы хотели бы переопределить, затем запустили бы свое приложение.

0
ответ дан 2 December 2019 в 18:22
поделиться

Посмотрите Microsoft Detours для библиотеки с API C/C++. Это немного нетривиально для введения его во всех других программах, не инициировав virusscanners/malware детекторы. Но Ваш собственный процесс является справедливой игрой.

3
ответ дан 2 December 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: