Android新手--将smali文件编译成dex文件出错,求解答!!!!!

求大神解答!!

环境配置: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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值