Print the re-mapping of classes/methods/fields
This commit is contained in:
parent
f01a11e8bb
commit
d4611106cb
|
@ -340,6 +340,8 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
|||
private final JSeparator separator_6 = new JSeparator();
|
||||
public final JCheckBoxMenuItem refreshOnChange = new JCheckBoxMenuItem("Refresh On View Change");
|
||||
|
||||
public FileNavigationPane cn = new FileNavigationPane(this);
|
||||
|
||||
public boolean isMaximized = false;
|
||||
|
||||
public void removed(boolean busy) {
|
||||
|
@ -1434,6 +1436,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
|||
}
|
||||
new RenameFields().start();
|
||||
workPane.refreshClass.doClick();
|
||||
cn.tree.updateUI();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1455,6 +1458,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
|||
}
|
||||
new RenameMethods().start();
|
||||
workPane.refreshClass.doClick();
|
||||
cn.tree.updateUI();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1467,6 +1471,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
|||
}
|
||||
new RenameClasses().start();
|
||||
workPane.refreshClass.doClick();
|
||||
cn.tree.updateUI();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1575,7 +1580,6 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
|||
new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
|
||||
|
||||
// scrollPane.setViewportView(tree);
|
||||
FileNavigationPane cn = new FileNavigationPane(this);
|
||||
cn.setMinimumSize(new Dimension(200, 50));
|
||||
// panel.add(cn);
|
||||
SearchingPane s = new SearchingPane(this);
|
||||
|
|
|
@ -43,6 +43,9 @@ public abstract class JavaObfuscator extends Thread {
|
|||
String name = "";
|
||||
while (!found) {
|
||||
String nameTry = MiscUtils.randomString(1) + MiscUtils.randomStringNum(length - 1);
|
||||
if (!Character.isJavaIdentifierStart(nameTry.toCharArray()[0]))
|
||||
continue;
|
||||
|
||||
if (!names.contains(nameTry)) {
|
||||
names.add(nameTry);
|
||||
name = nameTry;
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package the.bytecode.club.bytecodeviewer.obfuscators.mapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.objectweb.asm.commons.Remapper;
|
||||
|
@ -17,11 +19,16 @@ public class RefactorMapper extends Remapper {
|
|||
protected final Map<String, MappingData> sortedClasses;
|
||||
protected final Map<String, MethodMappingData> sortedMethods;
|
||||
protected final Map<String, FieldMappingData> sortedFields;
|
||||
protected final List<String> mappingList;
|
||||
|
||||
private StringBuilder builder;
|
||||
|
||||
public RefactorMapper(HookMap hookMap) {
|
||||
sortedClasses = new HashMap<>();
|
||||
sortedMethods = new HashMap<>();
|
||||
sortedFields = new HashMap<>();
|
||||
mappingList = new ArrayList<>();
|
||||
builder = new StringBuilder();
|
||||
for(MappingData hook : hookMap.getClasses()){
|
||||
if(hook.getObfuscatedName().contains("$"))
|
||||
continue;
|
||||
|
@ -46,24 +53,44 @@ public class RefactorMapper extends Remapper {
|
|||
|
||||
@Override
|
||||
public String map(String type) {
|
||||
if (sortedClasses.containsKey(type))
|
||||
if (sortedClasses.containsKey(type)) {
|
||||
String map = new String(type + " --> " + sortedClasses.get(type).getRefactoredName() + "\n");
|
||||
if (!mappingList.contains(map))
|
||||
mappingList.add(map);
|
||||
|
||||
return sortedClasses.get(type).getRefactoredName();
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String mapFieldName(String owner, String name, String desc) {
|
||||
String obfKey = owner + "$$$$" + name + "$$$$" + desc;
|
||||
if (sortedFields.containsKey(obfKey))
|
||||
if (sortedFields.containsKey(obfKey)) {
|
||||
String map = new String(owner + "." + name + " --> " + owner + sortedFields.get(obfKey).getName().getRefactoredName() + "\n");
|
||||
if (!mappingList.contains(map))
|
||||
mappingList.add(map);
|
||||
name = sortedFields.get(obfKey).getName().getRefactoredName();
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String mapMethodName(String owner, String name, String desc) {
|
||||
String obfKey = owner + "$$$$" + name + "$$$$" + desc;
|
||||
if (sortedMethods.containsKey(obfKey))
|
||||
if (sortedMethods.containsKey(obfKey)) {
|
||||
String map = new String(owner + "." + name + " --> " + owner + sortedMethods.get(obfKey).getMethodName().getRefactoredName() + "\n");
|
||||
if (!mappingList.contains(map))
|
||||
mappingList.add(map);
|
||||
name = sortedMethods.get(obfKey).getMethodName().getRefactoredName();
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
public void printMap() {
|
||||
for (String map : mappingList) {
|
||||
builder.append(map);
|
||||
}
|
||||
System.out.println(builder.toString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@ public class Refactorer {
|
|||
for (Map.Entry<String, ClassNode> factor : refactored.entrySet()) {
|
||||
BytecodeViewer.relocate(factor.getKey(), factor.getValue());
|
||||
}
|
||||
mapper.printMap();
|
||||
}
|
||||
|
||||
private byte[] getClassNodeBytes(ClassNode cn) {
|
||||
|
|
|
@ -22,7 +22,7 @@ public class RenameClasses extends JavaObfuscator {
|
|||
|
||||
@Override
|
||||
public void obfuscate() {
|
||||
int stringLength = getStringLength();
|
||||
int stringLength = 5;//getStringLength();
|
||||
|
||||
System.out.println("Obfuscating class names...");
|
||||
classLoop: for (ClassNode c : BytecodeViewer.getLoadedClasses()) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user