mirror of
https://github.com/revanced/Apktool.git
synced 2025-02-01 22:57:41 +01:00
debuginjector - adapt for dexlib2
This commit is contained in:
parent
5aa18eee2d
commit
f95f9b2f4b
@ -20,7 +20,6 @@ import brut.androlib.AndrolibException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.jf.dexlib.Code.Analysis.RegisterType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ryszard Wiśniewski <brut.alll@gmail.com>
|
* @author Ryszard Wiśniewski <brut.alll@gmail.com>
|
||||||
@ -74,7 +73,7 @@ public class DebugInjector {
|
|||||||
private void injectRemainingParams() {
|
private void injectRemainingParams() {
|
||||||
areParamsInjected = true;
|
areParamsInjected = true;
|
||||||
while(currParam <= lastParam) {
|
while(currParam <= lastParam) {
|
||||||
mOut.append(".parameter \"p").append(currParam).append("\"\n");
|
//mOut.append(".param \"p").append(currParam).append("\"\n");
|
||||||
currParam++;
|
currParam++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -111,56 +110,60 @@ public class DebugInjector {
|
|||||||
while (m.find()) {
|
while (m.find()) {
|
||||||
String localName = m.group(1);
|
String localName = m.group(1);
|
||||||
String localType = null;
|
String localType = null;
|
||||||
switch (RegisterType.Category.valueOf(m.group(2))) {
|
switch (m.group(2)) {
|
||||||
case Reference:
|
case "Reference":
|
||||||
case Null:
|
case "UninitRef":
|
||||||
case UninitRef:
|
case "REFERENCE":
|
||||||
case UninitThis:
|
case "Null":
|
||||||
|
case "UninitThis":
|
||||||
localType = "Ljava/lang/Object;";
|
localType = "Ljava/lang/Object;";
|
||||||
break;
|
break;
|
||||||
case Boolean:
|
case "Boolean":
|
||||||
localType = "Z";
|
localType = "Z";
|
||||||
break;
|
break;
|
||||||
case Integer:
|
case "Integer":
|
||||||
case One:
|
case "One":
|
||||||
case Unknown:
|
case "Unknown":
|
||||||
localType = "I";
|
localType = "I";
|
||||||
break;
|
break;
|
||||||
case Uninit:
|
case "Uninit":
|
||||||
case Conflicted:
|
case "Conflicted":
|
||||||
if (mInitializedRegisters.remove(localName)) {
|
if (mInitializedRegisters.remove(localName)) {
|
||||||
mOut.append(".end local ").append(localName).append('\n');
|
mOut.append(".end local ").append(localName).append('\n');
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
case Short:
|
case "Short":
|
||||||
case PosShort:
|
case "PosShort":
|
||||||
localType = "S";
|
localType = "S";
|
||||||
break;
|
break;
|
||||||
case Byte:
|
case "Byte":
|
||||||
case PosByte:
|
case "PosByte":
|
||||||
localType = "B";
|
localType = "B";
|
||||||
break;
|
break;
|
||||||
case Char:
|
case "Char":
|
||||||
localType = "C";
|
localType = "C";
|
||||||
break;
|
break;
|
||||||
case Float:
|
case "Float":
|
||||||
localType = "F";
|
localType = "F";
|
||||||
break;
|
break;
|
||||||
case LongHi:
|
case "LongHi":
|
||||||
case LongLo:
|
case "LongLo":
|
||||||
localType = "J";
|
localType = "J";
|
||||||
break;
|
break;
|
||||||
case DoubleHi:
|
case "DoubleHi":
|
||||||
case DoubleLo:
|
case "DoubleLo":
|
||||||
localType = "D";
|
localType = "D";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
System.out.println(line);
|
||||||
|
System.out.println(m.group(2));
|
||||||
|
System.out.println(m.group(3));
|
||||||
assert false;
|
assert false;
|
||||||
}
|
}
|
||||||
|
|
||||||
mInitializedRegisters.add(localName);
|
mInitializedRegisters.add(localName);
|
||||||
mOut.append(".local ").append(localName).append(", ")
|
mOut.append(".local ").append(localName).append(", ").append('"')
|
||||||
.append(localName).append(':').append(localType)
|
.append(localName).append('"').append(':').append(localType)
|
||||||
.append('\n');
|
.append('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,11 +181,11 @@ public class DebugInjector {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (line2.equals("parameter")) {
|
if (line2.equals("param")) {
|
||||||
mOut.append(".parameter \"p").append(currParam++).append("\"\n");
|
mOut.append(".param \"p").append(currParam++).append("\"\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (line2.startsWith("parameter")) {
|
if (line2.startsWith("param")) {
|
||||||
mOut.append(line).append("\n");
|
mOut.append(line).append("\n");
|
||||||
currParam++;
|
currParam++;
|
||||||
return false;
|
return false;
|
||||||
@ -237,5 +240,5 @@ public class DebugInjector {
|
|||||||
private final Set<String> mInitializedRegisters = new HashSet<String>();
|
private final Set<String> mInitializedRegisters = new HashSet<String>();
|
||||||
|
|
||||||
private static final Pattern REGISTER_INFO_PATTERN = Pattern
|
private static final Pattern REGISTER_INFO_PATTERN = Pattern
|
||||||
.compile("((?:p|v)\\d+)=\\(([^)]+)\\);");
|
.compile("((?:p|v)\\d+)=\\(([^,)]+)([^)]*)\\);");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user