Как декомпилировать (читать исходный код) сборки .NET Framework, используя ILSpy

Если вы думаете, что ваше WinForms .NET-приложение с самого начала безопасно и исходный код не может быть прочитан, то позвольте мне сказать вам, что ты не прав. Любой может использовать декомпилятор, который принимает исполняемый файл в качестве входных данных и пытается создать исходный файл высокого уровня (исходный код приложения). Перед публикацией приложения рекомендуется проверить уязвимости в коде, декомпилировав сгенерированный исполняемый файл с помощью некоторого инструмента декомпиляции. Помимо проверки возможных недостатков безопасности, если вы унаследовали приложение без документации или комментариев, посмотреть, как поведение кода компиляции с декомпилятором, может быть довольно полезно.

Если по какой-либо причине вы хотите декомпилировать сборки .NET, мы рекомендуем вам использовать Проект ILSpy. ILSpy — декомпилятор и работает так же Jadx (APK-декомпилятор) однако вместо декомпиляции Java декомпилирует C #. ILSpy — это браузер и декомпилятор сборки .NET с открытым исходным кодом. Наиболее известные особенности этого декомпилятора:

  • Просмотр сборки
  • IL разборка
  • Поддержка C # 5.0 «асинхронно»
  • Декомпиляция в C #
    • Поддерживает лямбды и «доходность»
    • Показывает XML документацию
  • Декомпиляция в VB
  • Экономия ресурсов
  • Сохранить декомпилированную сборку как .csproj
  • Поиск типов / методов / свойств (подстрока)
  • Навигация по типу / методу / свойству на основе гиперссылок
  • Навигация по базовым / производным типам
  • История навигации
  • Декомпилятор BAML в XAML
  • Сохранить сборку как проект C #
  • Найти использование поля / метода
  • Расширяется через плагины (MEF)
  • Списки сборки

В этой статье вы узнаете, как легко загрузить ILSpy на свой компьютер и декомпилировать исполняемый файл, сгенерированный Visual Studio, чтобы наконец увидеть его исходный код.

1. Скачать бинарники ILSpy

Официального установщика не существует, ILSpy переносим. Двоичные файлы ILSpy можно получить через релизы проекта в Github на область релизов или просто нажав кнопку Загрузить двоичные файлы с официального сайта здесь. В архиве содержатся до 11 файлов (1 исполняемый файл, 9 динамически подключаемых библиотек и файл конфигурации):

Бинарные файлы ILSpy в Windows

После загрузки вы можете использовать ILSpy через исполняемый файл, это не инструмент командной строки, поскольку он включает графический интерфейс.

2. Декомпиляция исполняемых файлов из приложения WinForms

Не связывайтесь с этикой, мы собираемся декомпилировать одно из наших собственных приложений, созданных с помощью Visual Studio в C #. В нашем примере проекта мы представим наиболее небезопасную форму простой формы входа для уникального пользователя:

Форма небезопасного входа в систему

Модель учетных данных хранится в переменных в исходном коде, что, очевидно, является недостатком безопасности. С помощью оператора if мы проверим, знает ли пользователь учетные данные, когда пользователь нажимает кнопку входа в систему. Исходный код нашего приложения следующий:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Sandbox
{
public partial class Form1 : Form
{
public string globalUsername = "Batman";
public string globalPassword = "batmobil";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string username = textBox1.Text;
string password = textBox2.Text;
if(username == globalUsername && password == globalPassword)
{
MessageBox.Show("Login granted, awesome !");
}
else
{
MessageBox.Show("Login denied, check your credentials !");
}
}
}
}

Теперь мы скомпилируем (создаем решение) наш проект, чтобы сгенерировать его двоичные файлы в bin/Debug папка проекта:

Построить проект решения Visual Studio

Проект решения для сборки обновит двоичные файлы отладки, и вы можете найти исполняемый файл вашего приложения в bin/Debug папка например C:\Users\me\Documents\visual studio 2017\Projects\\bin\Debug , Откройте ILSpy, нажмите «Файл» в строке меню и выберите «Открыть». Запустится файловый браузер и позволит вам выбрать сборку, которая в этом примере будет находиться в папке Debug нашего проекта:

ILSpy выберите файл

Как только вы выберете исполняемый файл, ILSpy запустит процесс декомпиляции и добавит выбранный файл в качестве элемента в древовидном представлении. Там вы сможете изучить структуру и ресурсы файла и исходный код. В нашем примере у нас есть одна форма, а именно Form1, которую можно легко просмотреть через ILSpy:

ILSpy Читать исходный код приложения

Вы видите это правильно? ILSpy смог получить исходный код нашего исходного приложения и мы можем увидеть алгоритм «потрясающего входа» нашего проекта WinForms. Декомпиляция, очевидно, работает и с не отладочными версиями.

Удачной декомпиляции!

Ссылка на основную публикацию
Adblock
detector