Correct deobfuscation for labels

The deobfuscator will no longer incorrectly remove the following code:

pushtrue
label1:pop
This commit is contained in:
MultiplyByZer0
2017-02-28 15:49:21 -05:00
parent 0b65cb3c6b
commit e8e598dc6c
2 changed files with 5 additions and 0 deletions

View File

@@ -155,9 +155,11 @@ public class AVM2DeobfuscatorSimple extends SWFDecompilerAdapter {
boolean result = false;
// Deliberately skip over instruction zero
for(int i = 1; i < code.code.size(); i++) {
Set<Long> offsets = code.getImportantOffsets(body, true);
AVM2Instruction ins1 = code.code.get(i - 1);
AVM2Instruction ins2 = code.code.get(i);
if(ins2.definition instanceof PopIns &&
!offsets.contains(ins2.getAddress()) &&
(ins1.definition instanceof PushByteIns ||
ins1.definition instanceof PushDoubleIns ||
ins1.definition instanceof PushFalseIns ||

View File

@@ -105,6 +105,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*
@@ -210,9 +211,11 @@ public class AVM2DeobfuscatorSimpleOld extends SWFDecompilerAdapter {
boolean result = false;
// Deliberately skip over instruction zero
for(int i = 1; i < code.code.size(); i++) {
Set<Long> offsets = code.getImportantOffsets(body, true);
AVM2Instruction ins1 = code.code.get(i - 1);
AVM2Instruction ins2 = code.code.get(i);
if(ins2.definition instanceof PopIns &&
!offsets.contains(ins2.getAddress()) &&
(ins1.definition instanceof PushByteIns ||
ins1.definition instanceof PushDoubleIns ||
ins1.definition instanceof PushFalseIns ||