def RunDecompiler(d, dx, decompiler_name):
    """
    Run the decompiler on a specific analysis

    :param d: the DalvikVMFormat object
    :type d: :class:`DalvikVMFormat` object
    :param dx: the analysis of the format
    :type dx: :class:`VMAnalysis` object
    :param decompiler: the type of decompiler to use ("dad", "dex2jad", "ded")
    :type decompiler: string
    """
    if decompiler_name is not None:
        log.debug("Decompiler ...")
        decompiler_name = decompiler_name.lower()
        # TODO put this into the configuration object and make it more dynamic
        # e.g. detect new decompilers and so on...
        if decompiler_name == "dex2jad":
            d.set_decompiler(decompiler.DecompilerDex2Jad(
                d,
                androconf.CONF["BIN_DEX2JAR"],
                androconf.CONF["BIN_JAD"],
                androconf.CONF["TMP_DIRECTORY"]))
        elif decompiler_name == "dex2fernflower":
            d.set_decompiler(decompiler.DecompilerDex2Fernflower(
                d,
                androconf.CONF["BIN_DEX2JAR"],
                androconf.CONF["BIN_FERNFLOWER"],
                androconf.CONF["OPTIONS_FERNFLOWER"],
                androconf.CONF["TMP_DIRECTORY"]))
        elif decompiler_name == "ded":
            d.set_decompiler(decompiler.DecompilerDed(
                d,
                androconf.CONF["BIN_DED"],
                androconf.CONF["TMP_DIRECTORY"]))
        elif decompiler_name == "jadx":
            d.set_decompiler(decompiler.DecompilerJADX(d, dx, jadx=androconf.CONF["BIN_JADX"]))
        else:
            d.set_decompiler(decompiler.DecompilerDAD(d, dx))
def RunDecompiler ( d , dx , decompiler_name ) : if decompiler_name is not None : log . debug ( "Decompiler ..." ) decompiler_name = decompiler_name . lower ( ) if decompiler_name == "dex2jad" : d . set_decompiler ( decompiler . DecompilerDex2Jad ( d , androconf . CONF [ "BIN_DEX2JAR" ] , androconf . CONF [ "BIN_JAD" ] , androconf . CONF [ "TMP_DIRECTORY" ] ) ) elif decompiler_name == "dex2fernflower" : d . set_decompiler ( decompiler . DecompilerDex2Fernflower ( d , androconf . CONF [ "BIN_DEX2JAR" ] , androconf . CONF [ "BIN_FERNFLOWER" ] , androconf . CONF [ "OPTIONS_FERNFLOWER" ] , androconf . CONF [ "TMP_DIRECTORY" ] ) ) elif decompiler_name == "ded" : d . set_decompiler ( decompiler . DecompilerDed ( d , androconf . CONF [ "BIN_DED" ] , androconf . CONF [ "TMP_DIRECTORY" ] ) ) elif decompiler_name == "jadx" : d . set_decompiler ( decompiler . DecompilerJADX ( d , dx , jadx = androconf . CONF [ "BIN_JADX" ] ) ) else : d . set_decompiler ( decompiler . DecompilerDAD ( d , dx ) )
Run the decompiler on a specific analysis

    :param d: the DalvikVMFormat object
    :type d: :class:`DalvikVMFormat` object
    :param dx: the analysis of the format
    :type dx: :class:`VMAnalysis` object
    :param decompiler: the type of decompiler to use ("dad", "dex2jad", "ded")
    :type decompiler: string