Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void identifyClient(BufferedWriter writer, Document doc, Element revCrc) throws IOException {
- writer.write("^ " + identifiedClass2.name + " identified as " + getClass().getSimpleName() + " extends " + identifiedClass2.superName);
- writer.newLine();
- HashMap<String, HashMap<String, FieldData>> staticMap = new HashMap<String, HashMap<String, FieldData>>();
- HashMap<String, HashMap<String, MethodData>> staticMethodMap = new HashMap<String, HashMap<String, MethodData>>();
- for (String methodRef : staticMethods.keySet()) {
- MethodData md = staticMethods.get(methodRef);
- if (!staticMethodMap.containsKey(md.CLASS_NAME))
- staticMethodMap.put(md.CLASS_NAME, new HashMap<String, MethodData>());
- staticMethodMap.get(md.CLASS_NAME).put(methodRef, md);
- }
- for (String fieldRef : staticFields.keySet()) {
- FieldData fd = staticFields.get(fieldRef);
- if (!staticMap.containsKey(fd.CLASS_NAME))
- staticMap.put(fd.CLASS_NAME, new HashMap<String, FieldData>());
- staticMap.get(fd.CLASS_NAME).put(fieldRef, fd);
- }
- for (String className : staticMap.keySet()) {
- Element classHook = null;
- for (String fieldRef : staticMap.get(className).keySet()) {
- FieldData fd = staticFields.get(fieldRef);
- if (classHook == null) {
- classHook = doc.createElement(fd.CLASS_NAME);
- Attr classAttr = doc.createAttribute("classname");
- classAttr.setValue(fd.CLASS_NAME);
- classHook.setAttributeNode(classAttr);
- }
- Element fieldHook = doc.createElement(fieldRef);
- fieldHook.appendChild(doc.createTextNode(fd.FIELD_NAME));
- if (fd.bytecodeField.desc.equals("I")) {
- int multiplier = MultiplierFinder.findMultiplier(fd.CLASS_NAME, fd.FIELD_NAME);
- if (multiplier != 0 && multiplier != 1) {
- Element multi = doc.createElement("multiplier");
- multi.appendChild(doc.createTextNode("" + multiplier));
- fieldHook.appendChild(multi);
- }
- }
- if (fd.bytecodeField.desc.equals("J")) {
- long multiplier = MultiplierFinder.findLongMultiplier(fd.CLASS_NAME, fd.FIELD_NAME);
- if (multiplier != 0 && multiplier != 1) {
- Element multi = doc.createElement("longmultiplier");
- multi.appendChild(doc.createTextNode("" + multiplier));
- fieldHook.appendChild(multi);
- }
- }
- if (classHook != null) {
- classHook.appendChild(fieldHook);
- revCrc.appendChild(classHook);
- writer.write("-^* " + fd.CLASS_NAME + "." + fd.FIELD_NAME + "(" + fd.bytecodeField.desc + ") identified as " + fieldRef);
- writer.newLine();
- }
- }
- }
- for (String className : staticMethodMap.keySet()) {
- Element classHook = null;
- for (String methodRef : staticMethodMap.get(className).keySet()) {
- MethodData md = staticMethods.get(methodRef);
- if (classHook == null) {
- classHook = doc.createElement(md.CLASS_NAME);
- Attr classAttr = doc.createAttribute("classname");
- classAttr.setValue(md.CLASS_NAME);
- classHook.setAttributeNode(classAttr);
- }
- Element fieldHook = doc.createElement(methodRef);
- fieldHook.appendChild(doc.createTextNode(md.METHOD_NAME + md.bytecodeMethod.desc));
- int dummy = DummyParameterFinder.findDummy(md.CLASS_NAME, md.METHOD_NAME, md.bytecodeMethod.desc);
- if (dummy != -1) {
- Element multi = doc.createElement("dummyparameter");
- multi.appendChild(doc.createTextNode("" + dummy));
- fieldHook.appendChild(multi);
- }
- if (classHook != null) {
- classHook.appendChild(fieldHook);
- revCrc.appendChild(classHook);
- writer.write("-^& " + md.CLASS_NAME + "." + md.METHOD_NAME + md.bytecodeMethod.desc + " identified as " + methodRef);
- writer.newLine();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement