1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { final ClassPool classPool = ClassPool.getDefault(); try { ClassClassPath classPath = new ClassClassPath(this.getClass()); classPool.appendClassPath(".//clib//ljstln.jar"); classPool.appendClassPath(".//clib//commons-codec-1.11.jar"); classPool.appendClassPath(".//clib//json-20090211.jar"); classPool.insertClassPath(classPath); final CtClass clazz = classPool.get("ln.LNParse"); CtMethod convertToAbbr = clazz.getDeclaredMethod("getLNBean"); String methodBody = "{byte[] publicKey = ln.Zip.getZipSomeByte($1, \"publicKey\");\n" + " byte[] licenseEncryptKey = ln.Zip.getZipSomeByte($1, \"licenseEncryptKey\");\n" + " byte[] licenseFile = ln.Zip.getZipSomeByte($1, \"license\");\n" + " byte[] licenseFile2 = ln.Zip.getZipSomeByte($1, \"license2\");\n" + " String realPublicKey = \"\";\n" + " if (\"emessage2\".equals($2)) {\n" + " realPublicKey = \"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIJWRm0eoQNEgZB9aUlM1PoT0N7cKCBCfkecycpeKeg57e73Fcj4ik9uYrGB01t38ut45iHJi8TLoeORYuUAhWUCAwEAAQ==\";\n" + " } else if (\"ecology9\".equals($2)) {\n" + " realPublicKey = \"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiPitGeOC5t98v3ILcS/BNeFgoaFkVoAgbo163rMkIVpYqdkauBln2vDZflJ+6mQj92G6LFzTMhi5WXgigh71ul6MIoZBa3CNg/1oXPE8p7NHRc9GkH5Y8n3Qm6r4mY6uqF1a4CNahfAi1IENjwWucHmgcSwfurihBirOQAeQX1dIkdAyvfTxUPOAyXb/CVFVhBggryJ7M83wfOk2z87DCgk9ZAre0NdaN/wCGmO6C2rAReGd32FUhwli/WdSfAYZD9bTDJ6Y0n/A2Mh54stToiRDTJm3l4qBQxVSQ+ezN91v4P1CQbrAvu4s+EdIf1TPvvuUX0yyEA8hle/uiVKKFwIDAQAB\";\n" + " }\n" + "\n" + " String publicKeyStr = new String(org.apache.commons.codec.binary.Base64.encodeBase64(publicKey));\n" + " if (!realPublicKey.equals(publicKeyStr)) {\n" + " throw new Exception(\"license error!\");\n" + " } else {\n" + " org.json.JSONObject jsonLicense;\n" + " try {\n" + " byte[] licenseKey = ln.RSACoder.decryptByPublicKey(licenseEncryptKey, publicKey);\n" + " jsonLicense = new org.json.JSONObject(new String(ln.DESCoder.decrypt(licenseFile, licenseKey)));\n" + " } catch (java.security.InvalidKeyException var15) {\n" + " var15.printStackTrace();\n" + " byte[] licenseInfo2 = ln.DESCoder.decrypt(licenseFile2, $2.getBytes());\n" + " jsonLicense = new org.json.JSONObject(new String(licenseInfo2));\n" + " }\n" + "\n" + " ln.LNBean lnb = new ln.LNBean();\n" + " lnb.setCompanyname(jsonLicense.getString(\"companyname\"));\n" + " lnb.setLicensecode(jsonLicense.getString(\"licensecode\"));\n" + " lnb.setHrmnum(jsonLicense.getString(\"hrmnum\"));\n" + " lnb.setExpiredate(jsonLicense.getString(\"expiredate\"));\n" + " lnb.setConcurrentFlag(jsonLicense.getString(\"concurrentFlag\"));\n" + " lnb.setLicense(jsonLicense.getString(\"license\"));\n" + "\n" + " try {\n" + " lnb.setCid(jsonLicense.getString(\"cid\"));\n" + " } catch (Exception var14) {\n" + " System.out.println(var14);\n" + " }\n" + "\n" + " try {\n" + " lnb.setScType(jsonLicense.getString(\"scType\"));\n" + " } catch (Exception var13) {\n" + " System.out.println(var13);\n" + " }\n" + "\n" + " try {\n" + " lnb.setScCount(jsonLicense.getString(\"scCount\"));\n" + " } catch (Exception var12) {\n" + " System.out.println(var12);\n" + " }\n" + "\n" + " return lnb;\n" + " }}"; convertToAbbr.setBody(methodBody); byte[] byteCode = clazz.toBytecode(); clazz.detach(); System.out.println(public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { final ClassPool classPool = ClassPool.getDefault(); try { ClassClassPath classPath = new ClassClassPath(this.getClass()); classPool.appendClassPath(".//clib//ljstln.jar"); classPool.appendClassPath(".//clib//commons-codec-1.11.jar"); classPool.appendClassPath(".//clib//json-20090211.jar"); classPool.insertClassPath(classPath); final CtClass clazz = classPool.get("ln.LNParse"); CtMethod convertToAbbr = clazz.getDeclaredMethod("getLNBean"); String methodBody = "{byte[] publicKey = ln.Zip.getZipSomeByte($1, \"publicKey\");\n" + " byte[] licenseEncryptKey = ln.Zip.getZipSomeByte($1, \"licenseEncryptKey\");\n" + " byte[] licenseFile = ln.Zip.getZipSomeByte($1, \"license\");\n" + " byte[] licenseFile2 = ln.Zip.getZipSomeByte($1, \"license2\");\n" + " String realPublicKey = \"\";\n" + " if (\"emessage2\".equals($2)) {\n" + " realPublicKey = \"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIJWRm0eoQNEgZB9aUlM1PoT0N7cKCBCfkecycpeKeg57e73Fcj4ik9uYrGB01t38ut45iHJi8TLoeORYuUAhWUCAwEAAQ==\";\n" + " } else if (\"ecology9\".equals($2)) {\n" + " realPublicKey = \"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiPitGeOC5t98v3ILcS/BNeFgoaFkVoAgbo163rMkIVpYqdkauBln2vDZflJ+6mQj92G6LFzTMhi5WXgigh71ul6MIoZBa3CNg/1oXPE8p7NHRc9GkH5Y8n3Qm6r4mY6uqF1a4CNahfAi1IENjwWucHmgcSwfurihBirOQAeQX1dIkdAyvfTxUPOAyXb/CVFVhBggryJ7M83wfOk2z87DCgk9ZAre0NdaN/wCGmO6C2rAReGd32FUhwli/WdSfAYZD9bTDJ6Y0n/A2Mh54stToiRDTJm3l4qBQxVSQ+ezN91v4P1CQbrAvu4s+EdIf1TPvvuUX0yyEA8hle/uiVKKFwIDAQAB\";\n" + " }\n" + "\n" + " String publicKeyStr = new String(org.apache.commons.codec.binary.Base64.encodeBase64(publicKey));\n" + " if (!realPublicKey.equals(publicKeyStr)) {\n" + " throw new Exception(\"license error!\");\n" + " } else {\n" + " org.json.JSONObject jsonLicense;\n" + " try {\n" + " byte[] licenseKey = ln.RSACoder.decryptByPublicKey(licenseEncryptKey, publicKey);\n" + " jsonLicense = new org.json.JSONObject(new String(ln.DESCoder.decrypt(licenseFile, licenseKey)));\n" + " } catch (java.security.InvalidKeyException var15) {\n" + " var15.printStackTrace();\n" + " byte[] licenseInfo2 = ln.DESCoder.decrypt(licenseFile2, $2.getBytes());\n" + " jsonLicense = new org.json.JSONObject(new String(licenseInfo2));\n" + " }\n" + "\n" + " ln.LNBean lnb = new ln.LNBean();\n" + " lnb.setCompanyname(jsonLicense.getString(\"companyname\"));\n" + " lnb.setLicensecode(jsonLicense.getString(\"licensecode\"));\n" + " lnb.setHrmnum(jsonLicense.getString(\"hrmnum\"));\n" + " lnb.setExpiredate(jsonLicense.getString(\"expiredate\"));\n" + " lnb.setConcurrentFlag(jsonLicense.getString(\"concurrentFlag\"));\n" + " lnb.setLicense(jsonLicense.getString(\"license\"));\n" + "\n" + " try {\n" + " lnb.setCid(jsonLicense.getString(\"cid\"));\n" + " } catch (Exception var14) {\n" + " System.out.println(var14);\n" + " }\n" + "\n" + " try {\n" + " lnb.setScType(jsonLicense.getString(\"scType\"));\n" + " } catch (Exception var13) {\n" + " System.out.println(var13);\n" + " }\n" + "\n" + " try {\n" + " lnb.setScCount(jsonLicense.getString(\"scCount\"));\n" + " } catch (Exception var12) {\n" + " System.out.println(var12);\n" + " }\n" + "\n" + " return lnb;\n" + " }}"; convertToAbbr.setBody(methodBody); byte[] byteCode = clazz.toBytecode(); clazz.detach(); System.out.println("detach success");
|