autojs读取dex文件

autojs读取dex文件,第1张

Android 程序一般使用 Java 语言开发,但是 Dalvik 虚拟机并不支持直接执行 JAVA 字节码,所以会对编译生成的 .class 文件进行翻译、重构、解释、压缩等处理,这个处理过程是由 dx 进行处理,处理完成后生成的产物会以 .dex 结尾,称为 Dex 文件。

Dex 文件格式是专为 Dalvik 设计的一种压缩格式。所以可以简单的理解为:Dex 文件是很多 .class 文件处理后的产物,最终可以在 Android 运行时环境执行。

Dex文件在auto.js脚本编写中的作用

加固脚本,防止反编译

能实现脚本热更新

能提高代码的运行速度

将JS转换为dex能在一定程度上保障源码安全,且具有更快的运行速度。

由于auto.js文档中,提供了runtime.loadDex(path)的方法,因此我们可以将js文件转换为dex文件进行调用,来提高打包后apk的安全性,避免被庖丁等某些快速反编译工具提取js源码。

本教程你将学到

js文件转换为dex的过程

auto.js调用dex内的函数

*** 作过程

js转dex的方法,在百度上能搜到的资料并不多。

最简单方法,你可以使用庖丁一键转换。美中不足的是,庖丁的转换过程,加密了js中的类名。这种设定,导致了每次转换,被调用的类名都会变化。并不利于热更新的实现。

另一方面,庖丁是一个闭源应用,用户无法确定该应用是否安全。

因此,飞云在这里就不介绍这种方法了。

我们来使用一种安全高效稳定的node.js脚手架,来转换dex文件。

该方法, *** 作比较简单。麻烦就麻烦在,初始化配置相对复杂,一些新手在配置的过程中,容易遇到各种问题,又没有系统的教程和异常问题处理方案,在最终解决问题的过程中,浪费许多时间和精力。

本教程是飞云在mac系统下编写的。如果你的电脑是windows系统,个别细节可能会有差异。例如,windows系统,没有mac的终端。安装脚手架是在命令行工具里进行的。

dex文件是Android平台上可执行文件的类型。

对于Android DEX文件进行优化,需要注意的一点是DEX文件的结构是紧凑的,但是我们还是要想方设法的进行提高程序的运行速度,我们就仍然需要对DEX文件进行进一步优化。

调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的每一个域 验证DEX文件中的所有类 对一些特定的类进行优化,对方法里的 *** 作码进行优化 。优化后的文件大小会有所增加,应该是原Android DEX文件的1-4倍。 优化发生的时机有两个:对于预置应用,可以在系统编译后,生成优化文件,以ODEX结尾。

这样在发布时除APK文件(不包含DEX)以外,还有一个相应的Android DEX文件;对于非预置应用,包含在APK文件里的DEX文件会在运行时被优化,优化后的文件将被保存在缓存中。

每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层 *** 作系统而实现的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11735442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存