
Originally Posted by
RJJ95
My white dot was still visible I was still clickable you just couldn't see me

Have you ever seen the cheat clients that make people invisible? It's like that.
Also people make reflection cheat clients to cheat on servers and force spawn items (incase they don't have failsafes) such as sending a item to the floor,to your inventory, to the trade screen many possibilities read up on it here:
http://www.moparscape.org/smf/index.php?topic=551310.0
I could only get it to work for a limited number of servers mostly crappy ones because I don't know much java and I could spawn items on one that had litterely no failsafes

Code:
package com.nkn.impl;
import com.nkn.generic.AbstractAnalyser;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.*;
import java.util.ListIterator;
public class PlayerAnalyser extends AbstractAnalyser {
@Override
protected boolean canRun(ClassNode node) {
int inum = 0, strnum = 0;
ListIterator<FieldNode> fnIt = node.fields.listIterator();
while(fnIt.hasNext()){
FieldNode fn = fnIt.next();
if((fn.access & Opcodes.ACC_STATIC)==0){
if(fn.desc.equals("Ljava/lang/String;"))
strnum++;
if(fn.desc.equals("I"))
inum++;
}
}
return inum == 15 && strnum == 1;
}
@Override
protected String analyse(ClassNode node) {
System.out.print("\nFound Player Class at: "+node.name);
String playerName = "";
node.interfaces.add("com/nkn/interfaces/PlayerInterface");
ListIterator<FieldNode> fnIt = node.fields.listIterator();
while(fnIt.hasNext()){
FieldNode fn = fnIt.next();
if((fn.access & Opcodes.ACC_STATIC)==0){
if(fn.desc.equals("Ljava/lang/String;")){
System.out.print("Name is at: "+fn.name+"\n");
//InjectUtils.addGetter(node,fn,"getPlayerName");
MethodNode getter = new MethodNode(Opcodes.ACC_PUBLIC, "getPlayerName", "()Ljava/lang/String;", null, null);
getter.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
getter.instructions.add(new FieldInsnNode(Opcodes.GETFIELD, node.name, fn.name, fn.desc));
getter.instructions.add(new InsnNode(Opcodes.ARETURN));
int size = getter.instructions.size();
getter.visitMaxs(size, size);
getter.visitEnd();
node.methods.add(getter);
System.out.print("Added getter at:" + getter.name+"\n");
}
}
}
ListIterator<MethodNode> mnIt = node.methods.listIterator();
methodIterator:while(mnIt.hasNext()){
MethodNode mn = mnIt.next();
if(mn.desc.startsWith("(L")&&mn.desc.endsWith(";I)V")){
ListIterator<AbstractInsnNode> ainIt = mn.instructions.iterator();
while(ainIt.hasNext()){
AbstractInsnNode ain = ainIt.next();
if(ain instanceof FieldInsnNode){
String Level = ((FieldInsnNode) ain).name;
System.out.println("USER IS AT: "+Level);
MethodNode getter = new MethodNode(Opcodes.ACC_PUBLIC, "getCombatLevel", "()I", null, null);
getter.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0));
getter.instructions.add(new FieldInsnNode(Opcodes.GETFIELD, node.name, ((FieldInsnNode) ain).name, ((FieldInsnNode) ain).desc));
getter.instructions.add(new InsnNode(Opcodes.IRETURN));
int size = getter.instructions.size();
getter.visitMaxs(size, size);
getter.visitEnd();
node.methods.add(getter);
System.out.print("Added getter at:" + getter.name+"\n");
break methodIterator;
}
}
}
}
return node.name;
}
}
That's one of my accessors for the player class. Haven't updated the hook tho.