Package codechicken.obfuscator

Source Code of codechicken.obfuscator.ObfRemapper

package codechicken.obfuscator;

import org.objectweb.asm.commons.Remapper;

import codechicken.obfuscator.ObfuscationMap.ObfuscationEntry;

public class ObfRemapper extends Remapper
{
    public final ObfuscationMap obf;
    public ObfDirection dir;
   
    public ObfRemapper(ObfuscationMap obf, ObfDirection dir)
    {
        this.obf = obf;
        this.dir = dir;
    }
   
    @Override
    public String map(String name)
    {
        if(name.indexOf('$') >= 0)
            return map(name.substring(0, name.indexOf('$')))+name.substring(name.indexOf('$'));
       
        ObfuscationEntry map;
        if(dir.obfuscate)
            map = obf.lookupMcpClass(name);
        else
            map = obf.lookupObfClass(name);

        if(map != null)
            return dir.obfuscate(map).s_owner;
       
        return name;
    }
   
    @Override
    public String mapFieldName(String owner, String name, String desc)
    {
        ObfuscationEntry map;
        if(dir.obfuscate)
            map = obf.lookupMcpField(owner, name);
        else
            map = obf.lookupObfField(owner, name);
       
        if(map == null)
            map = obf.lookupSrgField(owner, name);
       
        if(map != null)
            return dir.obfuscate(map).s_name;
       
        return name;
    }
   
    @Override
    public String mapMethodName(String owner, String name, String desc)
    {
        if(owner.length() == 0 || owner.charAt(0) == '[')
            return name;
       
        ObfuscationEntry map;
        if(dir.obfuscate)
            map = obf.lookupMcpMethod(owner, name, desc);
        else
            map = obf.lookupObfMethod(owner, name, desc);
       
        if(map == null)
            map = obf.lookupSrg(name);
       
        if(map != null)
            return dir.obfuscate(map).s_name;
       
        return name;
    }

    @Override
    public Object mapValue(Object cst)
    {
        if(cst instanceof String)
        {
            if(dir.srg_cst)
            {
                ObfuscationEntry map = obf.lookupSrg((String) cst);
                if(map != null)
                    return dir.obfuscate(map).s_name;
            }
            return cst;
        }
       
        return super.mapValue(cst);
    }
}
TOP

Related Classes of codechicken.obfuscator.ObfRemapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.