我们通过反编译工具是可以还原出以上源代码的 。而通过简单的分析,我们也能自己写出源代码的 。
第一行:ldc #16
ldc为虚拟机的指令,作用是:压入常量池的项,形式如下ldc index这个index就是上面的16,也就是在常量池中的有效索引,当我们去看常量池的时候,我们就会找到index为16的值为String_info,里面存了/ef1s.png.
所以这行的意思就是把/ef1s.pn作为一个String存在常量池中,其有效索引为16 。
第二行:2 invokestatic #18
invokestatic为虚拟机指令,作用是:调用类(static)方法,形式如下
invokestatic indexbyte1 indexbyte2
其中indexbyte1和indexbyte2必须是在常量池中的有效索引 , 而是指向的类型必须有Methodref标记,对类名,方法名和方法的描述符的引用 。
所以当我们看常量池中索引为18的地方,我们就会得到以下信息:
Class Name : cp_info#1
Name Type : cp_info#19
1 和19都是常量池中的有效索引,值就是右边中的值,再往下跟踪我就不多说了,有兴趣的朋友可以去JAVA虚拟机规范 。
这里我简单介绍一下parseImage(Ljava/lang/String;)[S 的意思 。
这就是parseImage这个函数的运行,我们反过来看看parseImage的原型就明白了
short [] parseImage(String)
那么Ljava/lang/String;就是说需要传入一个String对象,而为什么前面要有一个L呢,这是JAVA虚拟机用来表示这是一个Object 。如果是基本类型 , 这里就不需要有L了 。然后返回为short的一维数组 , 也就是对应的[S 。是不是很有意思 , S对应着Short类型 , 而“[”对应一维数组 , 那有些朋友要问了,两维呢,那就“[[”,呵呵,是不是很有意思 。
好了,调用了函数,返回的值要保存下来吧 。那么就是第三行要做的事情了 。
java代码禁止反编译的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java防止反编译工具、java代码禁止反编译的信息别忘了在本站进行查找喔 。
推荐阅读
- 手机直播双画面设备,手机直播双画面设备是什么
- 拍视频用什么技术好看,拍视频用什么拍出来的效果最好看
- 模拟飞行游戏济南,十大模拟飞行游戏
- php不用数据库的博客 php不需要编译
- mongodb查询条件大于小于,mongodb查询不等于某个字段
- 学网络技术的毕业设计作品,网络技术毕业设计可以做哪些项目
- 直播餐饮素材图片,直播主题餐厅
- java职员登录功能代码 java登陆功能代码
- 苹果手机至少领先安卓2年,安卓机和苹果机用两年对比