博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ApkTool反编译和重新打包
阅读量:5827 次
发布时间:2019-06-18

本文共 1628 字,大约阅读时间需要 5 分钟。

有时会需要反编译APK,各人有各人的原因,你都懂的……

      准备工作:                            

下载APKTool,通过下面这个连接进行下载,

windows下只需要下载这两个文件包即可:apktool1.5.2.tar.bz2和apktool-install-windows-r05-ibot.tar.bz2

分别解压到到一个方便操作的目录下,然后就可以通过控制台进行操作了,当然前提是你配置已经有了JAVA环境,这个网上一搜一大堆,就不赘述了。

       反编译:                               

把要反编译的APK文件放到跟APKTool四个文件的同一个目录下;

打开控制台,跳到该目录(例如是C:\Windows),执行:

    cd C:\Windows                                                 

然后执行:

   apktool d apkname.apk  foldername    

执行完上面语句后,如果没有出现错误提示,则成功反编译了,找到foldername目录,打开smali目录即为反编译出来的字节。

但我在执行上面语句后,却出现了错误提示:

  •  brut.androlib.err.UndefinedResObject: resource spec:  
  • 0x010300dd 

     

    根据提示描述是找不到资源文件,应该是要反编译的APK文件用到了系统的一些资源。

    解决办法:

    从手机中导出framework-res.apk文件,该文件是/system/framework下面,把这个文件拷到跟apkTool同一个目录下,执行以下语句把资源文件加进来:

        apktool if freagmework-res.apk            

    执行完以后就可以把framework-res.apk导进来。此时再执行apktool d即可以正常反编译了。

    由于反编译出来的是字节码,所以想修改软件逻辑就需要知道一点字节码的知识,可以看这里:、、。

    在这里列举几个常用的逻辑符号的对应smali语法:

     

    符号 smali语法
    == if-eq
    != if-ne
    equals if-eqz
    !equals if-nez

    修改完代码逻辑后,就要重新打包成APK文件了:

      apktool b foldername       

    其中foldername即放反编译结果的目录,执行成功后会在该目录的dist目录下有一个重新打包后的apk文件。

    当然我在重新打包时出现了错误提示:

     

    [html]
    1. Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN  
    2. otExist: apktool.yml  
    从字面上理解就是找不到apktool.yml这个文件,如果在执行apktool d后能正常反编译,在目录中是会存在apktool.yml文件的,我之所以出现这个错误,是因为在反编译时出现了上面提到的“资源找不到”错误后,我看 到反编译出了字节码,就没有理会它导致的。

    好啦,到此就成功打包了一个新的apk文件了,但还不要高兴得太早,该文件是一个没有签名的apk,有了解过android的应该都知道,没有签名是无法安装的。那就要重新为该文件签一下名了。把你的签名文件和apk拷到同一个目录下,然后执行以后语句即可:

       jarsigner -verbose -keystore wendy.keystore -signedjar wendy_signed.apk wendy.apk wendy.keystore        

    这里输入wendy.keystore即你的签名文件名称,文件wendy.apk,最终生成wendy_signed.apk为Android签名后的APK执行文件。

    大功告成!!!

    参考文章:

  •  brut.androlib.err.UndefinedResObject: resource spec:  
  • 0x010300dd

转载于:https://www.cnblogs.com/lxshanye/p/4031303.html

你可能感兴趣的文章
参加婚礼
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
Valid Parentheses
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
论模式在领域驱动设计中的重要性
查看>>
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
Linux 目录结构及内容详解
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
.net excel利用NPOI导入oracle
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
hive基本操作与应用
查看>>
html5纲要,细谈HTML 5新增的元素
查看>>
Android应用集成支付宝接口的简化
查看>>
[分享]Ubuntu12.04安装基础教程(图文)
查看>>