当前位置:首页 » 编程语言 » java转smali

java转smali

发布时间: 2024-11-22 23:31:12

1. 如何运行Smali文件

smali 是Android 应用程序(*.apk)反编译生成的文件格式, 是一种类似于汇编语言的底层计算机语言。阅读和书写smali语法都需要极大的耐心和勇气, 本文将介绍如何反编译和运行第三方的程序(smali)代码。
什么是smali 文件
Android程序文件, 即apk文件, 其实是一个zip压缩包, 其文件结构如下:

其中, classes.dex是程序的核心文件,是java语言的代码编译后的二进制字节码程序。这种字节码程序是编译专供机器阅读的, 类似于汇编语言的机器码。然而如果想直接阅读这部分程序, 最好的方法就是将该文件转化为smali文件。
apktool
着名的反编译工具 apktool 就可以完成这部分工作。 它将classes.dex文件反编译成一堆的smali文件, 这些文件按源码的包结构保存在各自的文件夹中。如下所示:

另外, apktool 工具强大之处在于它不仅可以反编译apk文件, 而且可以根据现有的smali 文件生成新的apk文件。 这就给汉化apk或者去除apk内嵌广告提供了可能。
smali语法类似于汇编语言的语法, 涉及寄存器的直接操作, 可以直接阅读, 但羞涩难懂, 尤其是在代码混淆之后。

dex2jar
有人做了一个专门的工具 dex2jar 将classes.dex 转化为jar 文件, 通过 jd-gui 阅读。

但dex2jar 并不健全, 反编译出的java文件大部分都有编译错误。可以简单的阅读和分析, 但若是涉及到很细致的内容, 则还是需要依赖smali。 smali 文件的编辑器推荐使用 sublime + sublime-smali , 具体请参考文章 为Sublime Text安装smali代码语法高亮插件 。

2. apk反编译后,有了smali文件,我用工具导出了java源码后并修改了源码,如何编译打包回apk文件

https://github.com/ollide/intellij-java2smali


IntelliJ IDEA 或者android studio的一个插件。

可以把java转smali,前提是没有语法错误。


热点内容
取随机数php 发布:2025-07-12 12:58:16 浏览:840
如何配置组合音响 发布:2025-07-12 12:53:54 浏览:93
c语言幂计算 发布:2025-07-12 12:52:36 浏览:566
兔费WLAN密码多少 发布:2025-07-12 12:50:59 浏览:861
阿里云分布式存储 发布:2025-07-12 12:45:04 浏览:535
sql日志压缩 发布:2025-07-12 12:39:53 浏览:343
红点角标算法 发布:2025-07-12 12:11:16 浏览:844
开心消消乐服务器繁忙什么情况 发布:2025-07-12 12:11:14 浏览:239
数据库的封锁协议 发布:2025-07-12 12:10:35 浏览:725
如何配置一台长久耐用的电脑 发布:2025-07-12 11:43:03 浏览:602