Gnetwork, разбор программы GRender - рендер фермы
Поскольку оригинальная тема про Gnetwork закрыта, напишу здесь в виде отдельной темы.
Пару дней назад я натолкнулся на проект Gnetwork, в частности на их рендер ферму
Поскольку очевидно, что если они хотят создать крупнейшую ферму, то зачем брать с пользователей деньги за программу? надо наоборот ее раздавать бесплатно и платить за результат.
Еще смущает заявленный факт, что программа не использует видеокарту и рендерит все на процессоре. Странно да? ведь видеокарта для того и предназначена что рендерить.
В итоге я скачал демо версию и пощупал ее разными инструментами
Итак - устанавливаем, запускаем. Программа сделана по технологии ClickOnce, она не устанавливается в Program Files, а скачивается с вебсервера и запускается из temp директории. Берем Process Explorer и смотрим, откуда она запущена.
См картинку в аттаче
В моем случае это C:\Documents and Settings\m\Local Settings\Apps\2.0\1BYXHHTD.2MD\3JOB5RV7.76Z\gnre.. tion_0000000000000000_0001.0002_7b89cd25a702ca92\G N ReF.exe
размер .exe файла 3468800 байт, общий размер папки - 5664795 байт
Это обычный .net executable и легко разбирается рефлектором
В аттаче - исходники программы.
Программа предельна проста, не видно ни одного места, в котором бы вычислялось что то сложное.
Программа периодически опрашивает gnfarm-dev .gnetwork. biz / farm_script8.php, судя по всему на предмет заданий.
Задание состоит из длинной строки (~700Кб) вида 7AHKQ6eeHi8GH8YfzdFnEQtbS8HzYEt3D8sh6ry6dNeBaNa4y
Что это - непонятно, однако более интересней что с этим происходит дальше.
А происходит вот что - по таймеру в цикле молотится вот эта строка
this.text = GetString(this.md5Hash.ComputeHash(GetBytes(this.t ext)));
в GN_Network\module.cs Line 39
т.е. программа считает md5 хеши от хешей. Самый фикус в том что результат нигде и ни с чем не ****ивается. Количество циклов вычисляется при старте программы и зависит от скорости вашего процессора.
Как мне кажется таймер служит для того что бы не перегружать процессор
Результат отправляется на сервере в виде
GET /farm_script8.php?func=get_module&rand=1.2.2.2cb1f1 e892b2602ef829df6f10ecd7a9f&sign=420158f38513a9472 f344aeef3fa730e&session=a3d2950caec1d477f310a19e46 7ec322&id=30474581&render=fc37e65a...f180a069f2519 d1b88700c4 HTTP/1.1
значение ключа render и есть результат, причем он абсолютно не зависит от вычислений и формируется как случайная строка
while (str5.Length < 0x400)
{
str5 = str5 + this.md5(this.random.Next(0, 0x186a0).ToString());
}
data = data + "&render=" + str5;
GN_Network\server.cs Line 315
Мое мнение таково - что эта программа ничего полезного не делает, а просто изображает деятельность грузя процессор