Цитата:
Сообщение от darkevil
Это было бы слишком легко, тут автор скорее всего какой-то трюк использует, наверняка есть где-то злостная проверка с таймером как всегда спрятанная в опе.
Мой совет попробовать запустить файл в IDA в режиме дебагера, и посмотреть ход загрузки программы, я думаю так будет проще понять что программа дергает во время загрузки и дождаться когда она выходит(завершает) свою работу чтобы поймать участки кода которые к этому приводят.
|
У меня с IDA проблемы, так и не смог разобраться, зато с .NET Reflector 8.0 и SharpDevelop 4.3 начал разбираться.
И вот у меня появился такой вопрос, в программирования я не силен, но логику понять могу.
Код:
{
if (cce.Ve)
{
if (Cse.Qe != null)
{
Cse.Qe.method_0();
}
Cse.Qe = new Cse(cce, cme, type_0, Qoe, Qpe);
Cse.Qe.ge = new Timer(new TimerCallback(Cse.Qe.ke), null, 0xea60, 0xea60);
}
else if (Cse.Qe != null)
{
Cse.Qe.method_0();
}
if (cce.ye)
{
if (C1e.Qe != null)
{
C1e.Qe.method_0();
}
C1e.Qe = new C1e(cce, type_0.Assembly);
C1e.Qe.ge = new Timer(new TimerCallback(C1e.Qe.ke), null, cce.be * 0xea60, cce.be * 0xea60);
}
else if (C1e.Qe != null)
{
C1e.Qe.method_0();
}
if (cce.fe || cce.te)
{
if (cce.fe && !flag2)
{
if (Cbe.Qe != null)
{
Cbe.Qe.method_0();
}
Cbe.Qe = new Cbe(cce, cme, type_0, Qoe, Qpe);
Cbe.Qe.Ge = num2;
Cbe.Qe.Je = num;
Cbe.Qe.ge = new Timer(new TimerCallback(Cbe.Qe.ke), null, 0xea60, 0xea60);
}
if (cce.te && !flag6)
{
if (C2e.Qe != null)
{
C2e.Qe.method_0();
}
C2e.Qe = new C2e(cce, cme, type_0, Qoe, Qpe);
C2e.Qe.xe = num2;
C2e.Qe.int_0 = num;
C2e.Qe.ge = new Timer(new TimerCallback(C2e.Qe.ke), null, 0xea60, 0xea60);
}
}
}
Этот код, я понимаю примерно так, если условия которые были выше выполнены или не выполнены, выполняется код вставленный мной.
А теперь детальнее, меня интересуют вот эти 2 места.
В первом случае:
Код:
C1e.Qe.ge = new Timer(new TimerCallback(C1e.Qe.ke), null, cce.be * 0xea60, cce.be * 0xea60);
Я так понимаю, если тут прошла проверка на лицензию, идет вычисление рабочего времени. Т.е. cce.be
Код:
private class Cce
{
internal bool ae = true;
internal int Ae = 20;
internal int be = 10;
Т.е. 0xea60*10, 0xea60*10
Код:
Cbe.Qe.ge = new Timer(new TimerCallback(Cbe.Qe.ke), null, 0xea60, 0xea60);
а тут в свою очередь просто просто 0xea60,0xea60
Но у меня появлялся вопрос, как разобрать, что же это такое.
http://msdn.microsoft.com/ru-ru/library/ah1h85ch.aspx - ссылко с инфой, а теперь по нашему пример
new Timer - создается таймер
new TimerCallback(Cbe.Qe.ke) - создание делегат
null - тут наверное должно быть описание или что то типа того
0xea60 - этот параметр означает сколько ждать до запуска самого TimerCallBack
0xea60 - а это уже сам таймер
Но возникает вопрос, когда у нас умножились
10*0xea60+10*0xea60 = 1200 минут, т.е программа всё равно должна выключатся или я что то не правильно понимаю из кода?
По ссылке полная версия откуда выдрал:
http://tny.cz/0735ec0a