AS2 fixed class detection

Issue #269 command line parameters for switching on/off deobfuscation and paralellspeedup
This commit is contained in:
Jindra Petk
2013-08-03 13:04:40 +02:00
parent 11f3d7a66c
commit f29a8e0df6
9 changed files with 77 additions and 11 deletions

View File

@@ -573,8 +573,8 @@ public class SWF {
};
new RetryTask(rio, handler).run();
synchronized (ABC.class) {
long time=stopTime-startTime;
informListeners("export", "Exported script " + index.getAndIncrement() + "/" + count + " " + path+", "+Helper.formatTimeSec(time));
long time = stopTime - startTime;
informListeners("export", "Exported script " + index.getAndIncrement() + "/" + count + " " + path + ", " + Helper.formatTimeSec(time));
}
return null;
}
@@ -607,7 +607,7 @@ public class SWF {
}
List<MyEntry<ClassPath, ScriptPack>> packs = getAS3Packs();
for (MyEntry<ClassPath, ScriptPack> item : packs) {
Future<File> future = executor.submit(new ExportPackTask(handler, cnt, packs.size(), item.key, item.value, outdir, abcTags, isPcode,paralel));
Future<File> future = executor.submit(new ExportPackTask(handler, cnt, packs.size(), item.key, item.value, outdir, abcTags, isPcode, paralel));
futureResults.add(future);
}

View File

@@ -356,7 +356,7 @@ public class ActionPush extends Action {
}
}
if (dvt.computedRegValue instanceof TemporaryRegister) {
stack.push(((TemporaryRegister) dvt.computedRegValue).value);
stack.push(new TemporaryRegister(((RegisterNumber) o).number, ((TemporaryRegister) dvt.computedRegValue).value));
} else {
stack.push(dvt);
}

View File

@@ -95,8 +95,11 @@ public class ActionSetProperty extends Action {
ret = new PreDecrementActionItem(this, ((DecrementActionItem) value).object);
}
}
} else {
sr.temporary = true;
((SetPropertyActionItem) ret).setValue(sr);
}
variables.put("__register" + sr.register.number, new TemporaryRegister(ret));
variables.put("__register" + sr.register.number, new TemporaryRegister(sr.register.number, ret));
return;
}
}

View File

@@ -106,10 +106,13 @@ public class ActionSetVariable extends Action {
ret = new PreDecrementActionItem(this, ((DecrementActionItem) value).object);
}
}
} else {
sr.temporary = true;
((SetVariableActionItem) ret).setValue(sr);
}
variables.put("__register" + sr.register.number, new TemporaryRegister(ret));
variables.put("__register" + sr.register.number, new TemporaryRegister(sr.register.number, ret));
return;
}
}

View File

@@ -107,8 +107,11 @@ public class ActionSetMember extends Action {
ret = new PreDecrementActionItem(this, ((DecrementActionItem) value).object);
}
}
} else {
sr.temporary = true;
((SetMemberActionItem) ret).setValue(sr);
}
variables.put("__register" + sr.register.number, new TemporaryRegister(ret));
variables.put("__register" + sr.register.number, new TemporaryRegister(sr.register.number, ret));
return;
}
}

View File

@@ -625,6 +625,59 @@ public class Main {
offerAssociation();
showModeFrame();
} else {
if (args[pos].equals("-config")) {
pos++;
if (args.length <= pos) {
System.err.println("Config values expected");
badArguments();
}
String cfgStr = args[pos];
String cfgs[];
if (cfgStr.contains(",")) {
cfgs = cfgStr.split(",");
} else {
cfgs = new String[]{cfgStr};
}
String booleanKeys[] = new String[]{
"decompile",
"paralelSpeedUp",
"internalFlashViewer",
"autoDeobfuscate",
"cacheOnDisk"};
for (String c : cfgs) {
String cp[];
if (c.contains("=")) {
cp = c.split("=");
} else {
cp = new String[]{c, "1"};
}
String key = cp[0];
String value = cp[1];
for (String bk : booleanKeys) {
if (key.toLowerCase().equals(bk.toLowerCase())) {
Boolean bValue = null;
if (value.equals("0") || value.toLowerCase().equals("false") || value.toLowerCase().equals("no") || value.toLowerCase().equals("off")) {
bValue = false;
}
if (value.equals("1") || value.toLowerCase().equals("true") || value.toLowerCase().equals("yes") || value.toLowerCase().equals("on")) {
bValue = true;
}
if (bValue != null) {
System.out.println("Config " + bk + " set to " + bValue);
Configuration.setConfig(bk, bValue);
}
}
}
}
pos++;
if (args.length <= pos) {
saveConfig();
System.out.println("Configuration saved");
return;
}
}
if (args[pos].equals("-removefromcontextmenu")) {
addToContextMenu(false);
} else if (args[pos].equals("-addtocontextmenu")) {
@@ -942,12 +995,16 @@ public class Main {
}
}
public static void exit() {
public static void saveConfig() {
try {
Configuration.saveToFile(getConfigFile(), getReplacementsFile());
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void exit() {
saveConfig();
FlashPlayerPanel.unload();
System.exit(0);
}

View File

@@ -2598,7 +2598,7 @@ public class MainFrame extends AppRibbonFrame implements ActionListener, TreeSel
Main.stopWork();
long timeAfter = System.currentTimeMillis();
long timeMs = timeAfter - timeBefore;
setStatus(translate("export.finishedin").replace("%time%", Helper.formatTimeSec(timeMs)));
}
}).start();

View File

@@ -260,7 +260,7 @@ public class ActionPanel extends JPanel implements ActionListener {
}else{
editor.setContentType("text/flasm");
}*/
editor.setText(stripped);
editor.setText(stripped);
for (Highlighting h : disassembledHilights) {
if (h.offset == offset) {
if (h.startPos <= editor.getText().length()) {

View File

@@ -48,7 +48,7 @@ public class DoActionTag extends Tag implements ASMSource {
/**
* Constructor
*
* @param swf
* @param swf
* @param data Data bytes
* @param version SWF version
* @param pos