AS1/2 deobfuscation fix.

This commit is contained in:
Jindra Petřík
2015-07-06 19:47:03 +02:00
parent 45d73fee21
commit 1e8d316d3e
4 changed files with 8 additions and 5 deletions
@@ -697,6 +697,7 @@ public class ActionListReader {
ActionJump aJump = new ActionDeobfuscateJump(0);
int jumpLength = aJump.getTotalActionLength();
aJump.setAddress(a.getAddress());
//FIXME! This offset can be larger than SI16 value!
aJump.setJumpOffset(actionLengthWithHeader - jumpLength);
a = aJump;
actionLengthWithHeader = a.getTotalActionLength();
@@ -192,8 +192,7 @@ public class ActionDeobfuscator extends ActionDeobfuscatorSimple {
ActionPush push = new ActionPush(0);
push.values.clear();
for (GraphTargetItem graphTargetItem : result.stack) {
DirectValueActionItem dv = (DirectValueActionItem) graphTargetItem;
push.values.add(dv.value);
push.values.add(graphTargetItem.getResult());
}
push.setAddress(prevAction.getAddress());
actions.addAction(i++, push);
@@ -155,8 +155,7 @@ public class ActionDeobfuscatorSimple implements SWFDecompilerListener {
ActionPush push = new ActionPush(0);
push.values.clear();
for (GraphTargetItem graphTargetItem : result.stack) {
DirectValueActionItem dv = (DirectValueActionItem) graphTargetItem;
push.values.add(dv.value);
push.values.add(graphTargetItem.getResult());
}
push.setAddress(prevAction.getAddress());
actions.addAction(i++, push);