刚开始学习Android逆向 记录一下自己遇到的问题
本帖最后由 exixuezi 于 2016-7-19 19:47 编辑本人是新人,放假期间,基本会保持每天一篇帖子,上学期间也会一星期两篇的,来记录自己学习中遇到的问题(持续更新),欢迎有需要的同学一同学习,当然也欢迎大神帮忙斧正!
问题一 今天在学习Dalvik虚拟机与java虚拟机的不同的时候,遇到书上的一个例子:
public class Hello{
public int foo(int a,int b){
return (a+b)*(a-b);
}
public static void main(String[] argc){
Hello hello = new Hello();
System.out.println(hello.foo(5,3));
}
}
Hello.java文件
在cmd中用javac Hello.java编译生成Hello.class文件时输出了下面的错误:
Hello.java:1: 需要为 class、interface 或 enum
锘缝ackage com.csdn.demo;
^
1 错误
百度知道是因为文本编辑器的问题,我之前用的Sublime Text,网上说要用记事本,果然解决了;
问题二 在用dx.bat 来将Hello.class 转换成 Hello.dex时 出现了如下错误:
PARSE ERROR:
unsupported class file version 52.0
...while parsing Test.class
1 error; aborting
不支持52.0版本的class文件,我的是java8,Android的sdk包是2.4.0.0 都是最新的,
百度不到答案,后来在书后的备注找到了问题,Java8版本太高(其实这是有道理的,因为android也是基于java的嘛):
强制javac生成默认较低版本的class文件:javac -source 1.7-target 1.7 Hello.java
再dx --dex --output=Hello.dex Hello.class 就可以生成Hello.dex文件了(有点小瑕疵不用管)。
反编译javap -c -classpath . Hello就可以得到Hello.class的反编译文件了
反编译dexdump -d Hello.dex得到Hello.dex的反汇编代码
页:
[1]