发新帖

刚开始学习Android逆向 记录一下自己遇到的问题

[复制链接]
8301 0
本帖最后由 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的反汇编代码


举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表