原文:http://kiya-z.github.io/2015/11/16/how-to-run-file-ended-with-smali/




如何运行 .smali 程序

发表于2015-11-16 | 暂无评论 | 3 Hits

准备 smali 程序

从 《Android 软件安全与逆向》书中抠出一段,起名为FirstSmali.smali

123456789101112131415161718192021222324252627282930313233343536373839404142434445
.class public LFirstSmali;  # 定义类名.super Ljava/lang/Object;   # 定义父类.method public static main([Ljava/lang/String;)V     # 声明静态方法 .registers 4     # 寄存器    #.parameter # 参数 .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 Smali"    #调用    invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V    #返回    :goto_0    return-void    return-void     # 返回空.end method

编译 smali 程序

.smali文件编译为.dex文件 :
java -jar smali.jar -o FirstSmali.dex FirstSmali.smali

执行 smali 程序

打开adb环境,连上手机,在命令行下
执行adb devices查看手机是否连接成功;
执行adb push FirstSmali.dex /sdcard/将 dex 文件推到手机上;
执行如下命令就 OK 了。

1
adb shell dalvikvm -cp /sdcard/FirstSmali.dex FirstSmali

备注

-cpclasspath的意思,dalvikvm命令第一个参数指定类路径,第二个指定类名。

另外,如果想要 push 到如data/local之类的目录下是没有权限的,可以先 push 到 sdcard,进入adb shell执行su获得 root 权限之后,就可以复制到data目录了。

本文程序只有一个 dex 文件,多个的话需要打包为zip,将此 zip 文件作为dalvikvm的第一个参数便可。

#Android 安全 #smali #反编译

原文:http://kiya-z.github.io/2015/11/16/how-to-run-file-ended-with-smali/




更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. android edittext操作
  6. Android屏幕区域划分及尺寸获取
  7. Android(安卓)Manifest 权限描述大全
  8. android 实现短视频拍摄
  9. Android(安卓)上网代理设置(浏览器)

随机推荐

  1. Android中级篇之基于百度地图Android(安
  2. android的Touch事件解析(dispatchTouchEve
  3. Android 通过蓝牙控制小车源代码+视频
  4. Parcelable接口的使用(跨进程,Intent传输)
  5. Android(安卓)SDK 更新时连接出现“https
  6. Android 出错提示:Emulator without GPU e
  7. android横竖屏切换处理
  8. 实现ScrollView的嵌套
  9. android集成amazon的相关sdk
  10. Android(安卓)aidl学习笔记-服务端