标签:java reflection obfuscation
有没有办法获取方法对象而不必使用方法的名称来获取它?
例如,我有班级:
class Car {
public String drive();
public String giveUp();
public String fillUp();
}
我想创建一个Map< String,Method>方法(又名:(“move”,drive()),(“name”,giveUp()),….).
由于使用了混淆,我无法通过名称获取方法对象.有没有办法获取方法名称而不必绑定它?
我想另一种问这个问题的方法是:
对于有getClass()的类,是否有方法的等价物?我正在寻找像giveUp.Method一样的东西.
解决方法:
Java中没有Car.giveUp.method()这样的构造,因为方法不像类和对象那样是“一等公民”.
在不知道混淆器对代码做什么或添加其他信息的情况下,您无法区分这些方法,因为除了名称之外,它们具有相同的签名.
>某些混淆器生成将原始名称映射到混淆名称的文本文件,您可以使用该映射文件在运行时标识混淆方法.
>您可以在方法中添加注释,例如
@MappedMethod("move")
public String drive();
使用自编写的注释@MappedMethod和String类型的默认属性.然后使用反射来获取所有方法及其注释,并使用注释值作为键.
标签:java,reflection,obfuscation 来源: https://codeday.me/bug/20190730/1579343.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。