Thread: Verion Deober

Page 1 of 5 123 ... LastLast
Results 1 to 10 of 44
  1. #1 Verion Deober 
    Donator

    Frosty Teh Snowman's Avatar
    Join Date
    Sep 2007
    Posts
    1,084
    Thanks given
    86
    Thanks received
    256
    Rep Power
    103
    VerionDeober is an updated gamepack grabber, deober, etc.

    This is basically the RSGD, but all libraries are updated to their latest versions and has no issues deobfuscating the current RS client (826).

    Included are Instructions on what to do after running the program to get a working Deob and more.

    If you have questions, please post in the Help section. I will not help if the issue is already outlined in the Instructions.

    Why did I make this?
    I'm seeing people not able to get the RSGD working.
    I'm seeing a few people releasing deobs for no reason.

    Requirements:
    Java 8

    Recommendations:
    Java IDE (Eclipse, NetBeans, IntelliJ, etc)
    Read the Instructions!!!

    Unknown:
    Linux - Should work. If you're using Linux, you should know how to make it work
    Mac - Same as above


    Credits:
    Credit to Lynx, JBCT, RSCD, RSGD, and library authors, and who ever else worked on this, including myself.

    Download V1:
    https://www.dropbox.com/s/v5kb0i01o6...eober.zip?dl=0

    Version 1.2
    https://www.dropbox.com/s/o60hnhfvl0...201.2.zip?dl=0

    Updated:
    Removes Dummy Methods
    Whatever Belthazar brags is unique but isn't really.
    Reply With Quote  
     

  2. Thankful users:


  3. #2  
    Registered Member
    Join Date
    Dec 2013
    Posts
    43
    Thanks given
    3
    Thanks received
    0
    Rep Power
    11
    nice post will use
    Reply With Quote  
     

  4. #3  
    Reverse Engineering

    freeezr's Avatar
    Join Date
    Dec 2011
    Posts
    1,067
    Thanks given
    288
    Thanks received
    444
    Rep Power
    401
    Btw, this creates a new folder in the data folder for every revision. it saves the parameters, the gamepack, extracted obfuscated client, and the deobfuscated client.

    also if you already have a jar file to deobfuscate and decompile, simply add false to the command line arguments.

    as for decompiling with fernflower ur gonna have toedit the revision folder which it finds the jar to decompile.

    this was my rsgd, and i have deobs from 818 - 826 so it works for me at least.

    Attached image
    Reply With Quote  
     

  5. #4  
    Registered Member
    medic's Avatar
    Join Date
    Sep 2013
    Posts
    1,581
    Thanks given
    821
    Thanks received
    560
    Rep Power
    1129
    thanks! i'll test it out later


    Reply With Quote  
     

  6. #5  
    Registered Member

    Join Date
    Jan 2014
    Posts
    376
    Thanks given
    49
    Thanks received
    111
    Rep Power
    106
    If you replace the ClassNameDeobfuscator with the following, you can also get it to move the classes out of the default package automatically (classes in the default package are a problem, as you cannot import them).

    Code:
    package alterrs.jbct.ref;
    
    import static alterrs.asm.Opcodes.ACC_INTERFACE;
    import static alterrs.asm.Opcodes.ACC_NATIVE;
    
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;
    
    import org.slf4j.Logger;
    
    import alterrs.asm.tree.AbstractInsnNode;
    import alterrs.asm.tree.ClassNode;
    import alterrs.asm.tree.LdcInsnNode;
    import alterrs.asm.tree.MethodNode;
    import alterrs.commons.LoggingUtil;
    import alterrs.jbct.JBCT;
    import alterrs.jbct.utility.AbstractTransformer;
    import alterrs.jbct.utility.ClassCollection;
    import alterrs.jbct.utility.ID;
    
    /**
     * @author Lazaro Brito
     */
    public class ClassNameDeobfuscator extends AbstractTransformer {
    	private static final Logger logger = LoggingUtil.log();
    
    	private int interfaceId = 1;
    	private Map<ID, Integer> classIds = new HashMap<ID, Integer>();
    	private int cCount = 0;
    	
    	private static final String DEFAULT_PACKAGE_REPLACEMENT = "rs2/client/";
    
    	public ClassNameDeobfuscator() {
    		super(true);
    		JBCT.ctx.atr.set("ignoredClasses", new HashSet<ID>());
    	}
    
    	@Override
    	public void transform(ClassCollection cc) {
    		for (int level = 0; level < 32; level++) {
    			classLoop: for (ClassNode c : cc.getClasses().values()) {
    				if (cc.getLevel(c) == level) {
    					String cName = c.name.substring(
    							c.name.lastIndexOf("/") + 1, c.name.length());
    					boolean isDefaultPackage = (c.name.indexOf("/") == -1);
    					if (cName.length() <= 3
    							&& !containsNativeMethods(c)
    							&& JBCT.ctx.module.getRefactorer().getClass(
    									new ID(c)) == null) {
    						String name;
    						if ((c.access & ACC_INTERFACE) != 0) {
    							name = "Interface" + interfaceId++;
    						} else {
    							name = name(c);
    							cCount++;
    						}
    						if (isDefaultPackage) {
    							JBCT.ctx.module.getRefactorer().refactorClass(
    								new ID(c), DEFAULT_PACKAGE_REPLACEMENT+name);
    						} else {
    							JBCT.ctx.module.getRefactorer().refactorClass(
    									new ID(c), c.name.substring(0,
    											c.name.lastIndexOf("/") + 1)+name);
    						}
    					} else {
    						if (isDefaultPackage) {
    							JBCT.ctx.module.getRefactorer().refactorClass(
    									new ID(c), DEFAULT_PACKAGE_REPLACEMENT+cName);
    						}
    						for (Object mo : c.methods) {
    							MethodNode m = (MethodNode) mo;
    							if (m.name.equals("<init>")) {
    								for (AbstractInsnNode n : m.instructions.toArray()) {
    									if (n instanceof LdcInsnNode) {
    										if (((LdcInsnNode) n).cst
    												.equals("sw3d")) {
    											JBCT.ctx.atr.<Set<ID>> get(
    													"ignoredClasses").add(
    													new ID(c));
    											continue classLoop;
    										}
    									}
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    
    	@Override
    	public void onFinish() {
    		logger.info("Refactored " + cCount + " classes and "
    				+ (interfaceId - 1) + " interfaces!");
    	}
    
    	private int id(ClassNode c) {
    		if (c.superName == null) {
    			return 1;
    		} else {
    			Integer i = classIds.get(new ID(c.superName));
    			if (i == null) {
    				i = 0;
    			}
    			i++;
    			classIds.put(new ID(c.superName), i);
    			return i;
    		}
    	}
    
    	private String name(ClassNode c) {
    		int id = id(c);
    		int level = JBCT.ctx.module.getLevel(c);
    
    		if (level == 1) {
    			return "Class" + id;
    		} else {
    			StringBuilder name = new StringBuilder();
    			String superName = JBCT.ctx.module.getRefactorer().getClass(
    					new ID(c.superName));
    			if (superName != null) {
    				name.append(superName.substring(superName.lastIndexOf("/") + 1, superName.length()));
    			} else {
    				name.append(c.superName.substring(
    						c.superName.lastIndexOf("/") + 1, c.superName.length()));
    			}
    			name.append("_Sub").append(id);
    			return name.toString();
    		}
    	}
    
    	private boolean containsNativeMethods(ClassNode c) {
    		for (Object mo : c.methods) {
    			MethodNode m = (MethodNode) mo;
    			if ((m.access & ACC_NATIVE) != 0) {
    				return true;
    			}
    		}
    		return false;
    	}
    }
    If anyone knows the proper way to move classes out of the default package using the alterrs tools, feel free to share. But this way does work, and it's easier than manually moving over 1000 classes after the deobfuscation has finished.
    Reply With Quote  
     

  7. #6  
    Registered Member
    Teemuzz's Avatar
    Join Date
    Oct 2009
    Posts
    2,755
    Thanks given
    1,212
    Thanks received
    422
    Rep Power
    934
    would this work for a 592?
    Reply With Quote  
     

  8. #7  
    Banned

    Join Date
    Oct 2011
    Posts
    2,689
    Thanks given
    1,235
    Thanks received
    673
    Rep Power
    0
    Thanks for the contribution to the community mate. I'm sure some people will find this to be pretty useful.
    Reply With Quote  
     

  9. #8  
    Donator

    Join Date
    Feb 2013
    Posts
    668
    Thanks given
    73
    Thanks received
    94
    Rep Power
    45
    Holy balls thanks.
    Reply With Quote  
     

  10. #9  
    Owner of Ghreborn new and old.


    Join Date
    Nov 2009
    Posts
    916
    Thanks given
    47
    Thanks received
    155
    Rep Power
    273
    this is nice ty forsty =)
    Im back and working on reborn,
    Reply With Quote  
     

  11. #10  
    If you can dream it, you can do it

    kingfish's Avatar
    Join Date
    Oct 2014
    Posts
    303
    Thanks given
    17
    Thanks received
    66
    Rep Power
    76
    thanks frosty.
    Reply With Quote  
     

Page 1 of 5 123 ... LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. dc deober? Or A deober that works?
    By IDX in forum Requests
    Replies: 5
    Last Post: 02-14-2009, 10:44 PM
  2. DC deober failed 529 deob?
    By Encouragin in forum RS 503+ Client & Server
    Replies: 25
    Last Post: 02-03-2009, 06:49 PM
  3. DEOBER please?
    By jigar in forum Requests
    Replies: 5
    Last Post: 12-03-2008, 05:41 PM
  4. Chicoscape Verion 2
    By Autoc4st in forum Downloads
    Replies: 14
    Last Post: 01-26-2008, 07:28 PM
  5. BEst starting source Verion |2|
    By pHametic in forum RS2 Server
    Replies: 5
    Last Post: 01-21-2008, 12:06 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •