FindBugs是由马里兰大学提供的一款开源Java静态代码分析工具。FindBugs通过检查类文件或JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBugs既提供可视化UI界面,同时也可以作为Eclipse插件使用。文本将主要使用将FindBugs作为Ecli...
分类:
数据库 时间:
2015-06-01 18:11:43
阅读次数:
251
**摘要**:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙。 **【编者按】**下面博文将带你创建一个字节码级别的追踪API以追...
分类:
编程语言 时间:
2015-06-01 09:51:18
阅读次数:
123
接着上篇博客的代理模式,我们继续,上篇博客介绍了JDK的动态代理,但是JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能实现JDK的动态代理,这样就存在一定的局限性。对于这种情况,我们采用CGLIB来实现。
一、CGLIB动态代理
cglib是针对类来实现代理的,其实现原理:CGLIB的底层采用ASM字节码生成框架,使用字节码技术生成代理,比使用反射生成代理的效果要...
分类:
编程语言 时间:
2015-05-29 23:14:21
阅读次数:
168
摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙。
【编者按】下面博文将带你创建一个字节码级别的追踪API以追踪Python的一些内部机制,比如类似YIELDVALUE、YIELDFROM操作码的实现,推式构造列表(List Comprehensions)、生成器表达式(generator ...
分类:
编程语言 时间:
2015-05-29 21:49:15
阅读次数:
185
字节码是构成Java平台无关性的基石。实现语言无关性的基础是虚拟机和字节码存储格式。Java语言中的各种变量、关键字和运算符的语义最终是由多条字节码命令组成,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更强大。Class类文件的结构 Class文件是一组以8位字节为基础单位的二...
分类:
其他好文 时间:
2015-05-29 09:51:31
阅读次数:
159
JVM能够跨计算机体系结构来执行Java字节码,主要是由于JVM屏蔽了与各个计算机平台相关的软件或者是硬件之间的差异,使得与平台相关的耦合统一由JVM提供者来实现。何为JVM JVM的全名是Java Virtual Machine(Java虚拟机)。它是通过模拟一个计算机的形式来实现到...
分类:
其他好文 时间:
2015-05-29 09:45:44
阅读次数:
126
让我们就接着上篇博客的静态代理来开始今天的动态代理。
一、动态代理
静态代理需要在运行之前就写好代理类,这样就造成了代码的大量重复,所以我们通过动态代理在运行时期动态生成业务类的代理类,那么动态代理类是如何实现的呢?
动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软...
分类:
编程语言 时间:
2015-05-28 18:03:50
阅读次数:
151
上一节我们介绍了一种利用无效字节码指令引发逆向工具崩溃的方法。(http://blog.csdn.net/lz201234/article/details/46004573)可惜的是大部分反编译工具已经修复了该bug。但是如果我们插入有效的字节码指令,但是后跟无效的数据引用,结果会是怎么样呢?使用C32asm,以十六进..
分类:
其他好文 时间:
2015-05-28 14:26:07
阅读次数:
172
上一节我们介绍了一种利用无效字节码指令引发逆向工具崩溃的方法。(http://blog.csdn.net/lz201234/article/details/46004573)可惜的是大部分反编译工具已经修复了该bug。但是如果我们插入有效的字节码指令,但是后跟无效的数据引用,结果会是怎么样呢?
使用C32asm,以十六进制的方式打开dex文件。按快捷键“Ctrl + G”,定位到“0003A2A4”
把“62 00 02 04 1A 01 8E 07 6E 20 19 10 10 00”改为...
分类:
其他好文 时间:
2015-05-28 11:00:28
阅读次数:
234
Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行,而JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。
一、JVM原理
1、JVM简介:
JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层...
分类:
编程语言 时间:
2015-05-27 17:27:50
阅读次数:
276