baksmali和smali源码分析(二)-创新互联

这一节,主要介绍一下 baksmali代码的框架。

创新互联公司长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为峨边彝族企业提供专业的成都网站建设、网站设计,峨边彝族网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

我们经常在反编译android apk包的时候使用apktool这个工具,其实本身这个工具里面对于dex文件解析和重新生成就是使用的baksmali 和smali这两个jar包
其中 baksmali是将 dex文件转换成便于阅读的smali文件的,
具体使用命令如下:
java -jar baksmali.jar classes.dex -o myout
其中myout是输出的文件夹

而smali是将smali文件重新生成回 dex文件的
具体使用的命令如下:
java -jar smali.jar myout -o classes.dex

这两个工具在源码中分别对应两个文件夹,下面见图三,源码文件夹的样子

baksmali和smali源码分析(二)

在分析源码之前,这里我先将这些文件夹下的主要作用来说明一下,让大家有个总体的认识

baksmali    该文件夹下面主要实现的是将 dex转换成smali文件的代码,需要分析的重点

deodexerant 该文件夹下面的文件是一个可执行文件,笔者尝试用ndk编译了一下,能够编译出可执行文件根据里面的描述,是为了 拷贝出来dalvik虚拟机中的函数表,有兴趣的同学可以试试,就是用dlopen 将 libdvm.so 打开,然后得到 dvmGetInlineOpsTable 这个导出表,看看里面的内容

dexlib2     这个文件夹其实是dex和smali转换真正起到作用的代码,不管是baksmali还是smali都需要用到这个库中的接口和方法,才能解析和生成相应的smali文件,这个在后面会重点分析的

examples    一些有代表意义的smali文件

externaljar 这个是我为第三方jar建立的一个目录

gradle      管理工具,没有特别关注,跟源码分析无关

scripts     执行smali和baksmali的脚步文件,跟源码无关

smali       该文件夹下面主要实现的是将 smali文件转换成dex文件的代码,需要重点分析

smali-integration-tests  整合测试的一个文件夹,里面也是一些smali文件,跟源码无关

util       一些能够提取出来的辅助类的实现

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站题目:baksmali和smali源码分析(二)-创新互联
本文网址:http://hbruida.cn/article/ceoijc.html