求大神解答!!
环境配置:smali-2.2.6.jar + 手动写好的smali文件
1、使用以下命令出错:
2、很懵逼,因为大家都这样编译都没错啊,错误显示,命令出错-o,那么help一下
3、发现要将smali文件编译成dex文件,需要使用assemble命令呀!不是参数-o!!(是谁坑害我?)
直接输入assemble试试,发现给了参数提示
4、按照提示输入,成功了!
5、打开Andorid模拟器,部署运行试一下
先用zip压缩,将生成的dex打包成HelloWorld.zip文件
接着运行一下命令:
adb push HelloWorld.zip /data/local
adb shell
dalvikvm -cp /data/local/HelloWorld.zip HelloWorld
以为成功了???
然而并没有,我还按网上的将HelloWorld.zip授权了,但并不行……
而且已经在root权限下了,所以更改权限也不可行。我还将dex打包了也不行……
而且如果不压缩,DexPathList路径都显示不对
这到底是为什么???求路过的大神解答!!!
难道是我的smali文件编写有问题??? 可是我抄书上的呀!!
附上smali文件
.class public LHelloWorld; #定义类名
.super Ljava/lang/object; #定义父类
.method public static main([Ljava/lang/String;)V #声明静态main()方法
.registers 4 #程序中使用v0、v1、v2寄存器与一个参数寄存器
#.paramter #一个参数
.prologue #代码起始指令
#空指令
nop
nop
nop
nop
#数据定义指令
const/16 v0,0x8
const/4 v1,0x5
const/4 v2,0x3
#数据操作指令
move v1,v2
#数组操作指令
new-array v0,v0,[I
array-length v1,v0
#实例操作指令
new-instance v1,Ljava/lang/StringBuilder;
#方法调用指令
invoke-direct {v1},Ljava/lang/StringBuilder;-><init>()V
#跳转指令
if-nez v0, :cond_0
goto :goto_0
:cond_0
#数据转换指令
int-to-float v2,v2
#数据运算指令
add-float v2,v2,v2
#比较指令
cmpl-float v0,v2,v2
#字段操作指令
sget-object v0,Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1,"Hello World" #构造字符串
#方法调用指令
invoke-virtual {v0,v1},Ljava/io/PrintStream;->println(Ljava/lang/String;)V
#返回指令
:goto_0
return-void
return-void #返回空
.end method