安卓smali编写

#头
	.class public Lworld/eworld/estr;	#类声明
			#可加	L字符串,当前类所在的路径
	.super Ljava/lang/Object;			#父类声明/默认是Object

#返回静态field方法
	.field public static final eStr:Ljava/lang/String; = "Beat work everyday"
		#   共有   静态   不可修改
		#field声明与初始化
		
#普通函数需要初始化
	.method public bain<init>()V
	#p0-->this
	.locals 0
	invoke-direct {}, Ljava/lang/Object;-><init>V
	return-void	
	.end method
	
	#普通函数
	.method public bwork3()Ljava/lang/String;
	.locals 1
	const-string v0, "Beat work everyday for man"
	result-object v0
	.end method
	
#函数声明
	.method public static bwork()Ljava/lang/String;
			#函数方法声明----共有 静态 函数名(描述) 返回值及类型
	.locals 4	#数字本地寄存器数量,以V0开始,V..
	const-string v0, "Beat work everyday"
	return-object v0
		#返回寄存器对象	
	.end method
	
#获取field
	.method public static bwork2()Ljava/lang/String;
	.locals 1  #寄存器数量声明
	sget-object v0,Lworld/eworld/estr;->eStr:Ljava/lang/String
						#路径				类型
	return-object v0
	.end method
	
------------------------------
#调用静态方法
	invoke-static {},Lworld/eworld/estr;->bwork()Ljava/lang/String;
						#类所在路径          其下方法及返回值和类型
	move-result-object v0
		#对调用方法返回值进行重新赋值

#调用普通方法
	new-instance v0,Lworld/eworld/estr;
	invoke-direct {v0},Lworld/eworld/estr;-><init>()V
	invoke-virtual {v0},Lworld/eworld/estr;->bwork3()Ljava/lang/String;
	move-result-object v0
	
----------------------------------
#Android log
	包源adnroid/util/Log
	invoke-static{v0,v1},Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
#函数跟踪
	invoke-static {},Landroid/os/Debug;->startMethodTracing()V
	invoke-static {},Landroid/os/Debug;->stopMethodTracing()V
	#添加权限
		<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
		<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
#字符串handle
	#新建
	const-string v1, "%d"
	#字符格式化
	const-string v1,"%d"	#描述
	const/4 v2, 0x1			#数组长度
	new-array v2, v2,[Ljava/lang/Object;	#创建object数组,[数组
	aput-object v3,v2,v4	#填充数组
	...
	invoke-static {v1,v2},Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object)Ljava/lang/String;		#格式化字符串
	#字符串替换
	invoke-virtual {v0,v1,v2},Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
	invoke-virtual{v0,v1,v2},Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
#waitForDebugger
	invoke-static {},Landroid/os/Debug;->waitForDebugger()V



猜你喜欢

转载自blog.csdn.net/sugarbew/article/details/110817431