没有比发现一个错误,却没有源代码就不能修改更令人沮丧的了。正是这个原因导致了 Java 反编译器的出现,它可以把编译后的字节码完全转回成源代码。尽管代码反编译器不只是针对 Java 语言,但它从来没有象在 Java 开发人员中那样被公开地或广泛地使用。...
分类:
编程语言 时间:
2015-07-24 12:55:38
阅读次数:
119
简单说来,一个java程序的运行需要编辑源码、编译生成class文件、加载class文件、解释或编译运行class中的字节码指令。下面有一段简单的java源码,通过它来看一下java程序的运行流程: 1 class Person 2 3 { 4 5 private String n...
分类:
编程语言 时间:
2015-07-23 23:26:44
阅读次数:
481
smalidea是一款 IntelliJ IDEA/Android Studio的 smali 插件
已有功能
语法高亮/错误提示字节码级别调试
断点单步调试寄存器查看本地窗口 java 语法支持,debug 模式下同样支持
支持跳转,方便追踪变量/函数/类.(Xref也支持)查找用法重命名从 java 代码引用 smali 类错误反馈...
安装
下载插件...
分类:
移动开发 时间:
2015-07-23 20:05:08
阅读次数:
318
动态代理是指在运行时,动态生成代理。即,代理类的字节码将在运行时生成并载入当前的ClassLoader。与静态代理相比,动态代理有很多好处。首先,不需要为真实的主题写一个形式上完全一样的封装类,假如主题接口中的方法很多,为每一个接口写一个代理方法也是非常烦人的事情,如果接口有变动,则真实主题和代理都...
分类:
其他好文 时间:
2015-07-22 18:11:33
阅读次数:
115
没有比发现一个错误,却没有源代码就不能修改更令人沮丧的了。正是这个原因导致了 Java 反编译器的出现,它可以把编译后的字节码完全转回成源代码。尽管代码反编译器不只是针对 Java 语言,但它从来没有...
分类:
编程语言 时间:
2015-07-22 14:53:36
阅读次数:
136
什么是代码混淆Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种...
分类:
移动开发 时间:
2015-07-22 12:29:27
阅读次数:
202
注意:一下内容纯属个人理解,如有错误,欢迎批评指正。 (90度弯腰)谢谢。java在JVM上的运行过程:1,编辑好的java代码(IDE无报错,测试运行无错误);2,java源代码通过javac编译成class文件(字节码文件,全是二进制数据,是供神看的东西);3,class文件加载到JVM上,继....
分类:
编程语言 时间:
2015-07-21 21:59:28
阅读次数:
121
提示!应用程序的安装有两种情况,第一:首次启动系统时安装;第二:系统启动完成后安装。本篇博文基于第一种安装场景。在系统首次启动的场景中,系统会对/system/app、/system/priv-app、/data/app目录下的所有APK进行dex字节码到本地机器码的翻译,同样也会对/system/framework目录下的APK或者JAR文件,以及这些APK所引用的外部JAR,进行dex字节码到...
分类:
移动开发 时间:
2015-07-20 21:36:56
阅读次数:
265
这几天开始玩Common Lisp,遇上了一个有意思的问题,CL一般是解释运行,也有实现可以编译生成字节码(fas文件)。我正在用的两种CL实现是SBCL和CLISP,前者是我从《实用Common Lisp编程》一书中看来的,CLISP相对于SBCL的特点之一就是CLISP把Lisp编译成字节码.....
分类:
其他好文 时间:
2015-07-19 21:40:09
阅读次数:
183
Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程: 如上图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JV...
分类:
其他好文 时间:
2015-07-19 01:22:07
阅读次数:
95