Есть, допустим, такая программа на C#: сначала в ней генерируется рандомный ключ (длина ключа одинакова, состоит он только из цифр), а потом пользователю надо этот ключ ввести. Code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsActivation { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Random r; public string key; private void Form1_Load(object sender, EventArgs e) { r = new Random(1253); } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == key && key != "") { MessageBox.Show("Windows hacked :D", "Yes!"); } else { MessageBox.Show("Try again.", "No..."); } } private void button2_Click(object sender, EventArgs e) { for (int i = 0; i < 24; i++) { key += r.Next(9).ToString(); } } } } Вопрос: как можно вытащить из этой программы ключ, который генерится во время выполнения, имея только её екзешник? Другими словами, как прочитать значение переменной из выполняемой программы, написанной на C#, имея только бинарник?
Если тебе насрать на сам ключ, то Reflector и где идет проверка возвращать всегда что ключик какбы верный. А именно выдернуть можно через, реверснув программу, точнее запустив ее в дэбаггере, запустить выполнение построчно.