Сейчас на форуме: (+8 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› C# замена метода |
Посл.ответ | Сообщение |
|
Создано: 28 мая 2014 02:06 · Личное сообщение · #1 |
|
Создано: 28 мая 2014 10:48 · Личное сообщение · #2 |
|
Создано: 28 мая 2014 11:04 · Личное сообщение · #3 |
|
Создано: 29 мая 2014 14:46 · Личное сообщение · #4 |
|
Создано: 29 мая 2014 17:05 · Поправил: JohnyDoe · Личное сообщение · #5 Medsft Что-то он криво это как-то делает, честно говоря. Пробовал перекидывать методы из одной dll в другую. Все время какая-нибудь беда приключалась. ildasm выручал. Но говорят не всегда нормально им получается пересобирать. У меня вообще без проблем всё прошло. dfw1969 Исходник(код) вставляем в проект в Visual Studio. Собираем dll. Потом в exe подменяем вызов функции на вызов функции из dll. А так лучше сначала попробовать ildasm. ![]() |
|
Создано: 30 мая 2014 19:27 · Личное сообщение · #6 Господа, а что делать в случае, если сборка подписана? Есть одна софтина. Проверка лицензии вшита в библиотеку-ядро, на которую ссылаются 70% других библиотек приложения, которые также подписаны тем же ключом. Выпиливание метода через Reflexil\SAE портит подпись. Насколько я понимаю, или везде убирать strong name, или все библиотеки переподписывать и править референсы, но эт очень много работы. Есть какой способ другой занопить вызов без убивания подписи? BTW, как поправить правильно референс в библиотеке? Достаточно ли в SFF Explorer в поле PublicTokenOrKey забить нулями? ![]() |
|
Создано: 31 мая 2014 00:01 · Личное сообщение · #7 unrefraction пишет: Есть какой способ другой занопить вызов без убивания подписи? шутку заценили ![]() unrefraction пишет: как поправить правильно референс в библиотеке? SNR AdmiralDebilitate ![]() |
|
Создано: 02 июня 2014 12:33 · Личное сообщение · #8 |
|
Создано: 02 июня 2014 13:03 · Личное сообщение · #9 |
|
Создано: 03 июня 2014 09:55 · Поправил: Medsft · Личное сообщение · #10 - JohnyDoe пишет: Я не особо много экспериментировал. - это плохо... Я бы начал так: "Перепробовал кучу раз не выходит" )))) Чутка юмора, но как то скоробила фраза. - JohnyDoe пишет: Основная проблема была в том что слетали условные и безусловные переходы - это неправда.. и даже если это правда то возвратить на место места прыжков всего в одном методе!!! 5 мин. дел. -JohnyDoe пишет: И вроде как с переменными что-то там происходило непонятное - проверяй вначале наличие референсов из исходной dll в таргете, а также версию фреймворка. -JohnyDoe пишет: Уже точно не помню. Я не особо много экспериментировал. - поверь у тебя вариантов кроме SAE больше нет(по многим причинам). Ну может еще только один полное дизассамблирование кода таргета. ![]() |
|
Создано: 03 июня 2014 13:05 · Поправил: JohnyDoe · Личное сообщение · #11 Medsft Написал как есть. Зачем мне врать? Места прыжков руками возвращать? Я именно так и сделал однажды. Там метод был не особо сложный. Впоследствии я все переделал при помощи ildasm/ilasm. Это мне вполне подошло. Потому и не стал далее экспериментировать с SAE. Возможно все эти косяки связаны с тем что я модифицировал dll от unity-приложения. Я вот сейчас опять попробовал метод перекинуть из одной dll в другую. Переходы вроде сохранились, но произошло замещение одних методов другими и слетели все строки в инструкциях ldstr. Вобщем все не так просто. Может я всех нюансов работы SAE не знаю. ![]() |
|
Создано: 03 июня 2014 14:20 · Личное сообщение · #12 |
|
Создано: 03 июня 2014 17:12 · Поправил: SevereK · Личное сообщение · #13 Ну вот начинается метод... ldstr загружает в стэк строку и возвращает на нее ссылку. stloc.0 присваивает локальной переменной с индексом 0 выше загруженное значение. Как узнать какой именно переменной присваивается значение? Где можно посмотреть их соответствие? При наведении на переменную я вижу что-то типа 04000b10 и т.д. Добавлено спустя 18 часов 49 минут Пока никто не ответил - дополню вопрос. Почистил весь метод. Оставил только .ret Метод на входе имеет только параметр url типа String. Добавляю в метод ldstr "asd" stloc.0 и дальше присвоил новое значение этой переменной чтобы в коде. Открываю код.... в коде вместо String str="asd" красуется объявление переменной HttpWebRequest (ранее в методе были эти переменные). Откуда они взялись снова? ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› C# замена метода |