All pastes #401456 Raw Edit

Something

public java v1 · immutable
·published 2007-03-19 11:56 UTC
rendered paste body
package impsoft.nexus.bots.pplsuqbawlz.update;import org.apache.bcel.generic.*;import org.apache.bcel.classfile.ClassParser;import impsoft.common.ruler.Install;import impsoft.nexus.bots.pplsuqbawlz.update.probes.Entity;import impsoft.nexus.bots.pplsuqbawlz.update.probes.NPC;import impsoft.nexus.bots.pplsuqbawlz.update.probes.Player;import impsoft.nexus.bots.pplsuqbawlz.update.probes.StringWrapper;import impsoft.nexus.bots.pplsuqbawlz.update.probes.Version;import impsoft.nexus.bots.pplsuqbawlz.update.probes.World;import java.io.*;import java.util.ArrayList;import java.util.jar.*;import java.util.zip.*;public class ClientPackage {	public static void main(String[] args) {		String[] PossibleLocations = { "c:/rscache/", "/rscache/",				"c:/windows/", "c:/winnt/", "c:/", "/tmp/", "" };		String[] PossibleLocationsAdditions = { ".jagex_cache_32",				".file_store_32" };		ArrayList<File> matches = new ArrayList<File>(0);		for (String location : PossibleLocations) {			for (String addition : PossibleLocationsAdditions) {				File f = new File(location + addition);				if (f.exists()) {					matches.add(f);				}			}		}		for (File match : matches) {			File f = new File(match, "runescape/main_file_cache.dat0");			if (f.exists()) {				try {					ClientMinerals minerals = new ClientMinerals(unpack(f));					processMinerals(minerals,f);				} catch (Exception e) {					e.printStackTrace();				}			}		}	}		public static void processMinerals(ClientMinerals minerals, File f){		int version = Version.getVersion(minerals);		System.out.println("RS Version #" + version);		Install.copy(f, new File("/jarcache." + version));		{			String StringWrapperClassName = StringWrapper					.getClassName(minerals);			if (StringWrapperClassName != null) {				minerals.classnames.put("StringWrapper",						StringWrapperClassName);			}			System.out.println("StringWrapperClassName="					+ StringWrapperClassName);		}		{			String PlayerClassName = Player.getClassName(minerals);			if (PlayerClassName != null) {				minerals.classnames.put("Player", PlayerClassName);			}			String CharacterClassName = minerals.findClass(minerals.classnames.get("Player")).getSuperclassName();			minerals.classnames					.put("Character", CharacterClassName);			System.out.println("CharacterClassName="					+ CharacterClassName);			System.out					.println("PlayerClassName=" + PlayerClassName);					}		{			String worldXClass = World.getXClassName(minerals);			String worldYClass = World.getYClassName(minerals);			String worldXField = World.getXFieldName(minerals);			String worldYField = World.getYFieldName(minerals);			System.out.println("World X="+worldXClass+"."+worldXField					+ " Y="+worldYClass+"."+worldYField);		}		{			String MyPlayer = Player.getMyPlayer(minerals);			String MyPlayerXClass = MyPlayer;			String MyPlayerYClass = MyPlayer;			String MyPlayerXField = null;			String MyPlayerYField = null;			System.out.println("Player X="+MyPlayerXClass+"."+MyPlayerXField					+ " Y="+MyPlayerYClass+"."+MyPlayerYField);		}				{			//String EntityClassName = Entity.getClassName(minerals);			//if (EntityClassName != null) {			//	minerals.classnames.put("Entity", EntityClassName);			//}			//System.out			//		.println("EntityClassName=" + EntityClassName);		}		{			//String NPCClassName = NPC.getClassName(minerals);			//if (NPCClassName != null) {			//	minerals.classnames.put("NPC", NPCClassName);			//}			//System.out.println("NPCClassName=" + NPCClassName);		}	}	public static ClassGen[] unpack(File jarFile) throws IOException {		int size = (int) jarFile.length();		RandomAccessFile raf = new RandomAccessFile(jarFile, "rw");		byte jarFileBuffer[] = new byte[size];		raf.readFully(jarFileBuffer);		ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(				unscrambler(jarFileBuffer)));		ArrayList<ClassGen> ClassGens = new ArrayList<ClassGen>(30);		byte classFileBuffer[] = new byte[1000];		ZipEntry entry = null;		while ((entry = zis.getNextEntry()) != null) {			String name = entry.getName();			final String fileExtension = ".class";			if (!name.endsWith(fileExtension)) {				continue;			}			name = name.replace(fileExtension, "");			ByteArrayOutputStream bos = new ByteArrayOutputStream();			int readlength = 0;			while ((readlength = zis.read(classFileBuffer, 0,					classFileBuffer.length)) != -1) {				bos.write(classFileBuffer, 0, readlength);			}			ClassGens					.add(new ClassGen(new ClassParser(new ByteArrayInputStream(							bos.toByteArray()), name).parse()));		}		ClassGen[] classes = new ClassGen[ClassGens.size()];		for (int i = 0; i < classes.length; i++) {			classes[i] = ClassGens.get(i);		}		return classes;	}	private static byte[] unscrambler(byte abyte0[]) throws IOException {		byte abyte1[] = new byte[2 + abyte0.length];		ByteArrayOutputStream bytearrayoutputstream;		abyte1[0] = 31;		abyte1[1] = -117;		System.arraycopy(abyte0, 0, abyte1, 2, abyte0.length);		bytearrayoutputstream = new ByteArrayOutputStream();		Pack200.newUnpacker().unpack(				new GZIPInputStream(new ByteArrayInputStream(abyte1)),				new JarOutputStream(bytearrayoutputstream));		return bytearrayoutputstream.toByteArray();	}}