package de.rub.syssec.saaf.gui.actions;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.util.List;
import javax.swing.AbstractAction;
import de.rub.syssec.saaf.analysis.steps.obfuscation.EntropyBasedDetectObfuscationStep;
import de.rub.syssec.saaf.gui.MainWindow;
import de.rub.syssec.saaf.gui.OpenAppsMgr;
import de.rub.syssec.saaf.misc.config.Config;
import de.rub.syssec.saaf.model.analysis.AnalysisException;
import de.rub.syssec.saaf.model.analysis.AnalysisInterface;
public class DetectObfuscationAction extends AbstractAction {
private MainWindow mainwindow;
private OpenAppsMgr appsManager;
public DetectObfuscationAction(String title, MainWindow mainWindow,
OpenAppsMgr openAppsMgr) {
super(title);
this.mainwindow = mainWindow;
this.appsManager = openAppsMgr;
}
@Override
public void actionPerformed(ActionEvent arg0) {
Thread doit = new Thread() {
public void run() {
mainwindow.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
EntropyBasedDetectObfuscationStep detector = new EntropyBasedDetectObfuscationStep(Config.getInstance(), true);
List<AnalysisInterface> analyses = appsManager.getAllAnalyses();
for (AnalysisInterface analysis : analyses) {
try {
detector.process(analysis);
} catch (AnalysisException e) {
e.printStackTrace();
MainWindow.showErrorDialog(
"An error occured "+e.getMessage(),
"Decompilation Error");
}
}
mainwindow.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
};
doit.start();
}
}