eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Adler, -Sanchez-, helg, carver (+6 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› C# замена метода
Посл.ответ Сообщение

Ранг: 1.5 (гость)
Статус: Участник

Создано: 28 мая 2014 02:06 New!
Цитата · Личное сообщение · #1

Приветствую, форумчане.
Имеется ли способ экспортировать метод из 1 экзешника и импортировать его в другой?
При копировании/вставе IL-кода почему-то при сохранении файла определенные изменения в файл сохраняются в совсем не том виде, котором были написаны.

Ранг: 6.4 (гость)
Статус: Участник

Создано: 28 мая 2014 10:48 New!
Цитата · Личное сообщение · #2

можно достать исходник метода .NET Reflector'ом, сделать из него DLL и использовать в другом exe

Ранг: 0.2 (гость)
Статус: Участник

Создано: 28 мая 2014 11:04 New!
Цитата · Личное сообщение · #3

Pastor
Исходник это в .bin получается?
Я делал, но его размер смутил. 140 байт... в методе символов больше...
Может есть мануал какой-то где почитать про это можно?

Ранг: 307.6 (мудрец)
Статус: Участник
ILSpector Team

Создано: 29 мая 2014 14:46 New!
Цитата · Личное сообщение · #4

SAE умеет импортить методы.Редко но иногда даже если на цели был применен обфускатор)))

Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 29 мая 2014 17:05 · Поправил: JohnyDoe New!
Цитата · Личное сообщение · #5

Medsft

Что-то он криво это как-то делает, честно говоря. Пробовал перекидывать методы из одной dll в другую. Все время какая-нибудь беда приключалась. ildasm выручал. Но говорят не всегда нормально им получается пересобирать. У меня вообще без проблем всё прошло.

dfw1969

Исходник(код) вставляем в проект в Visual Studio. Собираем dll. Потом в exe подменяем вызов функции на вызов функции из dll. А так лучше сначала попробовать ildasm.

Ранг: 1.2 (гость)
Статус: Участник

Создано: 30 мая 2014 19:27 New!
Цитата · Личное сообщение · #6

Господа, а что делать в случае, если сборка подписана?

Есть одна софтина. Проверка лицензии вшита в библиотеку-ядро, на которую ссылаются 70% других библиотек приложения, которые также подписаны тем же ключом.
Выпиливание метода через Reflexil\SAE портит подпись.
Насколько я понимаю, или везде убирать strong name, или все библиотеки переподписывать и править референсы, но эт очень много работы.


Есть какой способ другой занопить вызов без убивания подписи?

BTW, как поправить правильно референс в библиотеке? Достаточно ли в SFF Explorer в поле PublicTokenOrKey забить нулями?

Ранг: 508.6 (!)
Статус: Модератор

Создано: 31 мая 2014 00:01 New!
Цитата · Личное сообщение · #7

unrefraction пишет:
Есть какой способ другой занопить вызов без убивания подписи?

шутку заценили

unrefraction пишет:
как поправить правильно референс в библиотеке?

SNR
AdmiralDebilitate

| Сообщение посчитали полезным: unrefraction


Ранг: 307.6 (мудрец)
Статус: Участник
ILSpector Team

Создано: 2 июня 2014 12:33 New!
Цитата · Личное сообщение · #8

JohnyDoe пишет:
Все время какая-нибудь беда приключалась.
- и какая? может быть все время одна?

Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 2 июня 2014 13:03 New!
Цитата · Личное сообщение · #9

Medsft

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

Ранг: 307.6 (мудрец)
Статус: Участник
ILSpector Team

Создано: 3 июня 2014 09:55 · Поправил: Medsft New!
Цитата · Личное сообщение · #10

- JohnyDoe пишет: Я не особо много экспериментировал. - это плохо... Я бы начал так: "Перепробовал кучу раз не выходит" )))) Чутка юмора, но как то скоробила фраза.
- JohnyDoe пишет: Основная проблема была в том что слетали условные и безусловные переходы - это неправда.. и даже если это правда то возвратить на место места прыжков всего в одном методе!!! 5 мин. дел.
-JohnyDoe пишет: И вроде как с переменными что-то там происходило непонятное - проверяй вначале наличие референсов из исходной dll в таргете, а также версию фреймворка.
-JohnyDoe пишет: Уже точно не помню. Я не особо много экспериментировал. - поверь у тебя вариантов кроме SAE больше нет(по многим причинам). Ну может еще только один полное дизассамблирование кода таргета.

Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 3 июня 2014 13:05 · Поправил: JohnyDoe New!
Цитата · Личное сообщение · #11

Medsft

Написал как есть. Зачем мне врать?

Места прыжков руками возвращать? Я именно так и сделал однажды. Там метод был не особо сложный. Впоследствии я все переделал при помощи ildasm/ilasm. Это мне вполне подошло. Потому и не стал далее экспериментировать с SAE.

Возможно все эти косяки связаны с тем что я модифицировал dll от unity-приложения. Я вот сейчас опять попробовал метод перекинуть из одной dll в другую. Переходы вроде сохранились, но произошло замещение одних методов другими и слетели все строки в инструкциях ldstr. Вобщем все не так просто. Может я всех нюансов работы SAE не знаю.

Ранг: 307.6 (мудрец)
Статус: Участник
ILSpector Team

Создано: 3 июня 2014 14:20 New!
Цитата · Личное сообщение · #12

JohnyDoe пишет: слетели все строки в инструкциях ldstr - бывает.. ( опять же физический труд никто не запрещал- сделать edit инструкции ldstr

Ранг: 1.5 (гость)
Статус: Участник

Создано: 3 июня 2014 17:12 · Поправил: SevereK New!
Цитата · Личное сообщение · #13

Ну вот начинается метод...
ldstr загружает в стэк строку и возвращает на нее ссылку.
stloc.0 присваивает локальной переменной с индексом 0 выше загруженное значение.
Как узнать какой именно переменной присваивается значение? Где можно посмотреть их соответствие?
При наведении на переменную я вижу что-то типа 04000b10 и т.д.

Добавлено спустя 18 часов 49 минут
Пока никто не ответил - дополню вопрос.
Почистил весь метод. Оставил только .ret
Метод на входе имеет только параметр url типа String.
Добавляю в метод
ldstr "asd"
stloc.0
и дальше присвоил новое значение этой переменной чтобы в коде.
Открываю код.... в коде вместо String str="asd" красуется объявление переменной HttpWebRequest (ранее в методе были эти переменные). Откуда они взялись снова?
 eXeL@B —› Вопросы новичков —› C# замена метода

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS