Skip to content

Commit d461110

Browse files
author
im-frizzy
committed
Print the re-mapping of classes/methods/fields
1 parent f01a11e commit d461110

File tree

5 files changed

+40
-5
lines changed

5 files changed

+40
-5
lines changed

src/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,8 @@ public void rtC() {
340340
private final JSeparator separator_6 = new JSeparator();
341341
public final JCheckBoxMenuItem refreshOnChange = new JCheckBoxMenuItem("Refresh On View Change");
342342

343+
public FileNavigationPane cn = new FileNavigationPane(this);
344+
343345
public boolean isMaximized = false;
344346

345347
public void removed(boolean busy) {
@@ -1434,6 +1436,7 @@ public void actionPerformed(ActionEvent arg0) {
14341436
}
14351437
new RenameFields().start();
14361438
workPane.refreshClass.doClick();
1439+
cn.tree.updateUI();
14371440
}
14381441
});
14391442

@@ -1455,6 +1458,7 @@ public void actionPerformed(ActionEvent arg0) {
14551458
}
14561459
new RenameMethods().start();
14571460
workPane.refreshClass.doClick();
1461+
cn.tree.updateUI();
14581462
}
14591463
});
14601464

@@ -1467,6 +1471,7 @@ public void actionPerformed(ActionEvent arg0) {
14671471
}
14681472
new RenameClasses().start();
14691473
workPane.refreshClass.doClick();
1474+
cn.tree.updateUI();
14701475
}
14711476
});
14721477

@@ -1575,7 +1580,6 @@ public void actionPerformed(ActionEvent e) {
15751580
new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
15761581

15771582
// scrollPane.setViewportView(tree);
1578-
FileNavigationPane cn = new FileNavigationPane(this);
15791583
cn.setMinimumSize(new Dimension(200, 50));
15801584
// panel.add(cn);
15811585
SearchingPane s = new SearchingPane(this);

src/the/bytecode/club/bytecodeviewer/obfuscators/JavaObfuscator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ protected String generateUniqueName(int length) {
4343
String name = "";
4444
while (!found) {
4545
String nameTry = MiscUtils.randomString(1) + MiscUtils.randomStringNum(length - 1);
46+
if (!Character.isJavaIdentifierStart(nameTry.toCharArray()[0]))
47+
continue;
48+
4649
if (!names.contains(nameTry)) {
4750
names.add(nameTry);
4851
name = nameTry;

src/the/bytecode/club/bytecodeviewer/obfuscators/mapping/RefactorMapper.java

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package the.bytecode.club.bytecodeviewer.obfuscators.mapping;
22

3+
import java.util.ArrayList;
34
import java.util.HashMap;
5+
import java.util.List;
46
import java.util.Map;
57

68
import org.objectweb.asm.commons.Remapper;
@@ -17,11 +19,16 @@ public class RefactorMapper extends Remapper {
1719
protected final Map<String, MappingData> sortedClasses;
1820
protected final Map<String, MethodMappingData> sortedMethods;
1921
protected final Map<String, FieldMappingData> sortedFields;
22+
protected final List<String> mappingList;
2023

24+
private StringBuilder builder;
25+
2126
public RefactorMapper(HookMap hookMap) {
2227
sortedClasses = new HashMap<>();
2328
sortedMethods = new HashMap<>();
2429
sortedFields = new HashMap<>();
30+
mappingList = new ArrayList<>();
31+
builder = new StringBuilder();
2532
for(MappingData hook : hookMap.getClasses()){
2633
if(hook.getObfuscatedName().contains("$"))
2734
continue;
@@ -46,24 +53,44 @@ public RefactorMapper(HookMap hookMap) {
4653

4754
@Override
4855
public String map(String type) {
49-
if (sortedClasses.containsKey(type))
56+
if (sortedClasses.containsKey(type)) {
57+
String map = new String(type + " --> " + sortedClasses.get(type).getRefactoredName() + "\n");
58+
if (!mappingList.contains(map))
59+
mappingList.add(map);
60+
5061
return sortedClasses.get(type).getRefactoredName();
62+
}
5163
return type;
5264
}
5365

5466
@Override
5567
public String mapFieldName(String owner, String name, String desc) {
5668
String obfKey = owner + "$$$$" + name + "$$$$" + desc;
57-
if (sortedFields.containsKey(obfKey))
69+
if (sortedFields.containsKey(obfKey)) {
70+
String map = new String(owner + "." + name + " --> " + owner + sortedFields.get(obfKey).getName().getRefactoredName() + "\n");
71+
if (!mappingList.contains(map))
72+
mappingList.add(map);
5873
name = sortedFields.get(obfKey).getName().getRefactoredName();
74+
}
5975
return name;
6076
}
6177

6278
@Override
6379
public String mapMethodName(String owner, String name, String desc) {
6480
String obfKey = owner + "$$$$" + name + "$$$$" + desc;
65-
if (sortedMethods.containsKey(obfKey))
81+
if (sortedMethods.containsKey(obfKey)) {
82+
String map = new String(owner + "." + name + " --> " + owner + sortedMethods.get(obfKey).getMethodName().getRefactoredName() + "\n");
83+
if (!mappingList.contains(map))
84+
mappingList.add(map);
6685
name = sortedMethods.get(obfKey).getMethodName().getRefactoredName();
86+
}
6787
return name;
6888
}
89+
90+
public void printMap() {
91+
for (String map : mappingList) {
92+
builder.append(map);
93+
}
94+
System.out.println(builder.toString());
95+
}
6996
}

src/the/bytecode/club/bytecodeviewer/obfuscators/mapping/Refactorer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public void run() {
4545
for (Map.Entry<String, ClassNode> factor : refactored.entrySet()) {
4646
BytecodeViewer.relocate(factor.getKey(), factor.getValue());
4747
}
48+
mapper.printMap();
4849
}
4950

5051
private byte[] getClassNodeBytes(ClassNode cn) {

src/the/bytecode/club/bytecodeviewer/obfuscators/rename/RenameClasses.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class RenameClasses extends JavaObfuscator {
2222

2323
@Override
2424
public void obfuscate() {
25-
int stringLength = getStringLength();
25+
int stringLength = 5;//getStringLength();
2626

2727
System.out.println("Obfuscating class names...");
2828
classLoop: for (ClassNode c : BytecodeViewer.getLoadedClasses()) {

0 commit comments

Comments
 (0)