Android逆向工程-基础概念:Arm、Art、Dalvik、Smali、dex、NDK、JNI之间的关系

本文介绍了Android逆向工程中的核心概念,包括Dalvik虚拟机及其Dex文件、NDK与JNI的原生代码调用、以及Art模式与Dalvik模式的区别。Dalvik使用Dex文件和Smali汇编,而NDK允许Java代码调用C/C++,生成的.so文件通过JNI技术在不同架构上运行。Art模式提高了执行效率,通过预编译将代码转换为机器语言。
摘要由CSDN通过智能技术生成

Android逆向工程-基础概念:Arm、Art、Dalvik、Smali、dex、NDK、JNI之间的关系

        接触逆向以来遇到过Smali、dex几个概念,接触脱壳的时候又遇到ART、Dalvik、的概念,.so文件逆向的时候接触到Arm汇编、NDK、JNI的概念,今天简单梳理下这几者的关系。

一、Dalvik虚拟机

        安卓(Android)是google收购的自由及开放源代码的操作系统,运行于Linux kernel之上。谷歌为了降低应用的开发难度,在Linux底层之上构筑了一个名为“Dalvik”的虚拟机。Dex文件是Dalvik Executable file,是Dalvik虚拟机上的可执行程序。Smali则是Dex文件运行在Dalvik虚拟机上的汇编语言。

二、NDK与JNI

        NDK(Native Development Kit,原生开发工具包)是一组可以让开发人员在Android应用中调用C和c++代码的工具集。而JNI是一种Java字节码调用C/C++的解决方案,JNI描述的是一种技术。

        JNI技术调用的C/C++代码会被编译成动态链接库(.so)文件,.so文件的文件格式是ELF,也就是linux下的可执行文件。.so文件可以采用多种架构,包括x86、arm等,ARM架构的文件逆向会需要ARM汇编知识。我们直接解压.apk看到lib文件夹下的x86、armeabi文件夹就是不同

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值