重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这一节,主要介绍一下 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 该文件夹下面主要实现的是将 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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。