Изменение кода в сборке

#c# #reflector

#c# #отражатель

Вопрос:

У меня есть dll-файл, написанный на C#, я открыл файл через Reflector, в файле находится код

 if (a! = 5)
{
}
  

Как я могу изменить код на

 if (a == 5)
{
}
  

У меня все еще есть плагин Reflexil

Комментарии:

1. @Brian — Если Джон Скит сейчас не спит, этот вопрос наверняка получит правильный ответ через несколько минут 😉

2. В дополнение к тому, что сказал Брайан, если вы не будете принимать минимального участия в здешнем сообществе, у людей будет меньше шансов помочь вам. Пожалуйста, голосуйте за полезные ответы и принимайте ответы (нажмите на большую галочку слева от ответа, под голосами), которые наилучшим образом отвечают на ваш вопрос. Не делая этого, вы рискуете, что люди начнут игнорировать ваши вопросы.

3. хех, вы можете сделать это с помощью шестнадцатеричного редактора, просто нужно перевернуть правильные 75 на 74 😉 если у вас есть дизассемблер под рукой, вы можете найти соответствующие инструкции и перевернуть 75 на 74. чего вы обычно не делаете при переворачивании 🙂 код операции, который вы ищете, — JNE (0x75), и вы хотите, чтобы он был JE (0x74)

Ответ №1:

Вы можете сделать это с помощью дизассемблера MSIL

Декомпилируйте с помощью этого инструмента, примените изменения в IL и снова скомпилируйте с помощью ассемблера MSIL

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

Ответ №2:

Хотя ответ об изменении IL правильный, вы также можете использовать плагин Denis Bauers для reflector, чтобы разобрать код и создать из него новый проект. Затем вы можете перекомпилировать этот проект для создания новой библиотеки dll.

Это позволяет вам вносить изменения в более привычной среде, вместо того, чтобы иметь дело с IL. вы также можете выбрать язык, на котором хотите внести изменения.

Если сборку необходимо подписать, у вас могут возникнуть проблемы с ее повторной загрузкой.

Комментарии:

1. Reflexil поставляется с полным редактором VB / C # и intellisense, позволяющим вводить код непосредственно из Reflector. смотрите: codeproject.com/KB/msil/reflexil.aspx

Ответ №3:

Другими альтернативами являются ILSpy или Resharper 6.0, который также содержит дизассемблер.