All pastes #565639 Raw Edit

Something

public text v1 · immutable
·published 2007-06-14 02:19 UTC
rendered paste body
	public static void main(String[] args) throws Exception {
		// Applet a = getApplet(29);
		// Thread.sleep(5000);
		// ClassLoader d = a.getComponentAt(1, 1).getClass().getClassLoader();
		ToMessup = new LinkedList<String>();
		BCClass StringWrapper = null;
		Set<Entry<String, BCClass>> clases = unpackRunescape(getCacheDir())
				.entrySet();
		String mousex = null;
		String mousey = null;
		long currenttime = System.currentTimeMillis();
		for (Entry<String, BCClass> s : clases) {
			BCClass c = s.getValue();
			if (c.getDeclaredInterfaceNames().length > 0) {
				if (c.getDeclaredMethod("toString") != null) {
					StringWrapper = c;
				}
				BCMethod m = c.getDeclaredMethod("mouseMoved");
				if (m != null) {
					Instruction[] instructions = m.getCode(false)
							.getInstructions();
					for (int j = 0; j < instructions.length; j++) {
						Instruction i = instructions[j];
						if (i instanceof PutFieldInstruction) {
							PutFieldInstruction put = (PutFieldInstruction) i;
							Instruction previous = instructions[j - 1];
							if (previous instanceof MethodInstruction) {
								MethodInstruction call = (MethodInstruction) previous;
								if (call.getMethodName().equals("getX")) {
									mousex = put.getFieldDeclarerName() + "."
											+ put.getFieldName();
								}
								if (call.getMethodName().equals("getY")) {
									mousey = put.getFieldDeclarerName() + "."
											+ put.getFieldName();
								}
							}
						}
					}
				}
			}
			if (c.getName().equalsIgnoreCase("client")) {
				int index = 0;
				Instruction[] instructions = null;
				// these are reserved for when we find it
				for (BCMethod m : c.getDeclaredMethods()) {
					instructions = m.getCode(false).getInstructions();
					for (int j = 0; j < instructions.length; j++) {
						Instruction i = instructions[j];
						if (i instanceof ConstantInstruction) {
							ConstantInstruction ldc = (ConstantInstruction) i;
							if (ldc.getType() == String.class
									&& ldc.getStringValue()
											.equals("js5connect")) {
								index = j;
								break;
							}
						}
					}
					if (index != 0)
						break;
				}

				for (int i = index; i < instructions.length; i++) {
					if (instructions[i] instanceof PutFieldInstruction) {
						index = i;
						break;
					}
				}
				PutFieldInstruction loginIndexCaller = (PutFieldInstruction) instructions[index];
				System.out.println("the login index is "
						+ loginIndexCaller.getFieldDeclarerName() + "."
						+ loginIndexCaller.getFieldName());

			}
		}
		BCField bytes = null;
		for (BCField f : StringWrapper.getDeclaredFields()) {
			if (!f.isStatic())
				if (f.getType().equals(byte[].class)) {
					System.out.println("Found the bytes of stringWrapper "
							+ StringWrapper.getName() + "." + f.getName());
					bytes = f;
				}
		}
		System.out.println("mouse x and y are " + mousex + " " + mousey);
		System.out
				.println("took " + (System.currentTimeMillis() - currenttime));
	}