- 对本书的赞誉
- 前言
- 基础篇
- 第 1 章 Android 中锁屏密码加密算法分析
- 第 2 章 Android 中 NDK 开发
- 第 3 章 Android 中开发与逆向常用命令总结
- 第 4 章 so 文件格式解析
- 第 5 章 AndroidManifest.xml 文件格式解析
- 第 6 章 resource.arsc 文件格式解析
- 第 7 章 dex 文件格式解析
- 防护篇
- 第 8 章 Android 应用安全防护的基本策略
- 第 9 章 Android 中常用权限分析
- 第 10 章 Android 中的 run-as 命令
- 第 11 章 Android 中的 allowBackup 属性
- 第 12 章 Android 中的签名机制
- 第 13 章 Android 应用加固原理
- 第 14 章 Android 中的 so 加固原理
- 工具篇
- 第 15 章 Android 逆向分析基础
- 第 16 章 反编译神器 apktool 和 Jadx
- 第 17 章 Hook 神器 Xposed
- 第 18 章 脱壳神器 ZjDroid
- 第 19 章 Native 层 Hook 神器 Cydia Substrate
- 操作篇
- 第 20 章 静态方式逆向应用
- 第 21 章 动态调试 smali 源码
- 第 22 章 IDA 工具调试 so 源码
- 第 23 章 逆向加固应用
- 第 24 章 逆向应用经典案例分析
- 第 25 章 Android 中常见漏洞分析
- 第 26 章 文件加密病毒 Wannacry 样本分析
7.2 构造 dex 文件
在讲解 dex 文件之前,需要先创建一个简单的例子来帮助来解析。不借助任何 IDE 工具就可以构造一个 dex 文件。用 javac、dx 命令即可。创建 Java 源文件,内容如下代码:
在当前工作路径下,编译方法如下:
1)编译成 java class 文件。执行命令 javac Hello.java。编译完成后,目录下生成 Hello.class 文件。可以使用命令 java Hello 来测试下,会输出代码中的“Hello,Android!”的字符串。
2)编译成 dex 文件。编译工具在 Android SDK 的路径.:/build-tools/19.0.1/dx,其中 19.0.1 是 Android SDK build_tools 的版本,请按照在本地安装的 build_tools 版本来设置路径。建议该路径加到 path 环境变量中。
执行命令如下:
编译正常会生成 Hello.dex 文件。
3)使用 ADB 运行测试。
测试命令和输出结果如下:
重要说明:
·测试环境使用真机和 Android 虚拟机都可以,核心的命令是:
·-cp 是 class path 的缩写,后面的 Hello 是要运行的 class 名称。网上有描述说输入 dalvikvm--help 可以看到 dalvikvm 的帮助文档,但是在 Android 4.4 的官方模拟器和自己的手机上测试都提示找不到 Class 路径,在 Android 老的版本(4.3)上测试还是有输出的。
·因为命令执行时,dalvikvm 会在/data/dalvik-cache/目录下创建.dex 文件,因此要求 adb 的执行 Shell 对目录/data/dalvik-cache/有读、写和执行的权限,否则无法达到预期效果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论