Advertisement
ipwxy

Untitled

Jan 31st, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.65 KB | None | 0 0
  1.     public void identifyClient(BufferedWriter writer, Document doc, Element revCrc) throws IOException {
  2.         writer.write("^ " + identifiedClass2.name + " identified as " + getClass().getSimpleName() + " extends " + identifiedClass2.superName);
  3.         writer.newLine();
  4.         HashMap<String, HashMap<String, FieldData>> staticMap = new HashMap<String, HashMap<String, FieldData>>();
  5.         HashMap<String, HashMap<String, MethodData>> staticMethodMap = new HashMap<String, HashMap<String, MethodData>>();
  6.  
  7.         for (String methodRef : staticMethods.keySet()) {
  8.             MethodData md = staticMethods.get(methodRef);
  9.             if (!staticMethodMap.containsKey(md.CLASS_NAME))
  10.                 staticMethodMap.put(md.CLASS_NAME, new HashMap<String, MethodData>());
  11.             staticMethodMap.get(md.CLASS_NAME).put(methodRef, md);
  12.         }
  13.  
  14.         for (String fieldRef : staticFields.keySet()) {
  15.             FieldData fd = staticFields.get(fieldRef);
  16.             if (!staticMap.containsKey(fd.CLASS_NAME))
  17.                 staticMap.put(fd.CLASS_NAME, new HashMap<String, FieldData>());
  18.             staticMap.get(fd.CLASS_NAME).put(fieldRef, fd);
  19.         }
  20.         for (String className : staticMap.keySet()) {
  21.             Element classHook = null;
  22.             for (String fieldRef : staticMap.get(className).keySet()) {
  23.                 FieldData fd = staticFields.get(fieldRef);
  24.                 if (classHook == null) {
  25.                     classHook = doc.createElement(fd.CLASS_NAME);
  26.                     Attr classAttr = doc.createAttribute("classname");
  27.                     classAttr.setValue(fd.CLASS_NAME);
  28.                     classHook.setAttributeNode(classAttr);
  29.                 }
  30.                 Element fieldHook = doc.createElement(fieldRef);
  31.                 fieldHook.appendChild(doc.createTextNode(fd.FIELD_NAME));
  32.                 if (fd.bytecodeField.desc.equals("I")) {
  33.                     int multiplier = MultiplierFinder.findMultiplier(fd.CLASS_NAME, fd.FIELD_NAME);
  34.                     if (multiplier != 0 && multiplier != 1) {
  35.                         Element multi = doc.createElement("multiplier");
  36.                         multi.appendChild(doc.createTextNode("" + multiplier));
  37.                         fieldHook.appendChild(multi);
  38.                     }
  39.                 }
  40.                 if (fd.bytecodeField.desc.equals("J")) {
  41.                     long multiplier = MultiplierFinder.findLongMultiplier(fd.CLASS_NAME, fd.FIELD_NAME);
  42.                     if (multiplier != 0 && multiplier != 1) {
  43.                         Element multi = doc.createElement("longmultiplier");
  44.                         multi.appendChild(doc.createTextNode("" + multiplier));
  45.                         fieldHook.appendChild(multi);
  46.                     }
  47.                 }
  48.                 if (classHook != null) {
  49.                     classHook.appendChild(fieldHook);
  50.                     revCrc.appendChild(classHook);
  51.                     writer.write("-^* " + fd.CLASS_NAME + "." + fd.FIELD_NAME + "(" + fd.bytecodeField.desc + ") identified as " + fieldRef);
  52.                     writer.newLine();
  53.                 }
  54.             }
  55.         }
  56.         for (String className : staticMethodMap.keySet()) {
  57.             Element classHook = null;
  58.             for (String methodRef : staticMethodMap.get(className).keySet()) {
  59.                 MethodData md = staticMethods.get(methodRef);
  60.                 if (classHook == null) {
  61.                     classHook = doc.createElement(md.CLASS_NAME);
  62.                     Attr classAttr = doc.createAttribute("classname");
  63.                     classAttr.setValue(md.CLASS_NAME);
  64.                     classHook.setAttributeNode(classAttr);
  65.                 }
  66.                 Element fieldHook = doc.createElement(methodRef);
  67.                 fieldHook.appendChild(doc.createTextNode(md.METHOD_NAME + md.bytecodeMethod.desc));
  68.                 int dummy = DummyParameterFinder.findDummy(md.CLASS_NAME, md.METHOD_NAME, md.bytecodeMethod.desc);
  69.                 if (dummy != -1) {
  70.                     Element multi = doc.createElement("dummyparameter");
  71.                     multi.appendChild(doc.createTextNode("" + dummy));
  72.                     fieldHook.appendChild(multi);
  73.                 }
  74.                 if (classHook != null) {
  75.                     classHook.appendChild(fieldHook);
  76.                     revCrc.appendChild(classHook);
  77.                     writer.write("-^& " + md.CLASS_NAME + "." + md.METHOD_NAME + md.bytecodeMethod.desc + " identified as " + methodRef);
  78.                     writer.newLine();
  79.                 }
  80.             }
  81.         }
  82.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement