Чтобы запустить приложение Java из файла JAR, он должен знать, какой класс формирует точку входа. Этот класс нуждается в методе main
. Он может быть либо указан в файле MANIFEST.MF
jar, либо задан при запуске (например, из командной строки).
Декомпилированные классы (которые действительно кажутся запутанными) не содержат метод main. Так что это не баночка, которую можно запускать как отдельное приложение. Тем не менее, Client
расширяет Applet
, указывая, что это было предназначено для запуска в качестве веб-апплета в браузере. Проверьте эту страницу , чтобы узнать, как ее запустить.
Вероятно, лучше всего запустить его через несколько сканеров вирусов, шпионского и рекламного ПО, если вы подозреваете, что это вредоносное ПО.
РЕДАКТИРОВАТЬ : после изменения кода и запуска его с помощью gif ( не делайте этого, если вы не уверены в том, что делаете! ), я ' мы пришли к выводу, что вот что происходит:
Во-первых, "gif" будет расшифровано несколько круглым способом. Первые три байта определяют размер байтового массива, в который будет загружен оставшийся gif. Части этого байтового массива используются для создания строк, которые используются в апплете.
Когда апплет инициализируется, он получит значение параметра апплета AMLMAFOIEA
. Этот параметр должен быть установлен в HTML, который содержит апплет, поэтому значение будет зависеть от страницы, с которой запускается апплет. Вот подробности того, как это установлено.
После этого он получит значение переменной окружения TEMP
. В моем случае это указывало на AppData\Local\Temp
в моем каталоге пользователя. Он добавит \JavaLoad.exe
к этому и использует этот путь для создания FileOutputStream
, поэтому он явно пытается записать файл JavaLoad.exe в вашу временную папку.
Затем он установит HTTP-соединение с URL-адресом, указанным параметром апплета AMLMAFOIEA
, установив для своего метода запроса значение GET
. Поток будет открыт из соединения, а его содержимое будет сохранено в файле JavaLoad.exe.
Постоянное повторение кодового блока
if ((this.b == this.c) && (this.b + I.I(1) == this.c + I.I(1)))
{
this.b = I.I(4);
this.c = I.I(6);
this.b = this.c;
}
похоже ничего не делает. Он мог быть добавлен обфускатором, чтобы сбить вас с пути, поскольку, похоже, это не имеет никакого функционального влияния. Все важные вещи выполняются вне этих тестов, и поля b
и c
, кажется, никогда не используются для чего-то действительно функционального, только поле a
используется для хранения строки целевого URL.
Итак, в заключение, это кажется очень подозрительным. Но то, с какого URL он действительно пытается загрузить материал, будет зависеть от среды апплета. К сожалению, это не указывает нам на какой-либо истинный источник. Возможно, это обычный троянский клиент, предназначенный для использования любым, кто хочет доставить вредоносную информацию через сайт с апплетами. Поскольку апплеты запускаются в песочнице с ограниченными разрешениями, я не уверен, что это сработает вообще. Я также не знаю, как он в конечном итоге запустит JavaLoad.exe. Я полагаю, что он опирается на какой-то другой процесс, который ожидает, что этот файл существует, возможно, что-то обычно безвредное.
Это было интересно. Спасибо за ресурсы. Я предлагаю вам не пытаться запускать что-либо из этого самостоятельно, если вы не являетесь Java-разработчиком и не знаете, как извлечь опасные части из кода.