安卓反编译记录

记一次简单的安卓反编译

下午闲来无事便想修改个app的名字,弄来一下午顺便在记录下,熟悉了步骤还是挺简单的,不过使用的工具这个东西最好是下载最新的,比较反编译出错,很大程度上依赖工具的强大,在此也是收集网络资料而来,不过话说技术这个东西,博客很多用法已经失效,各位看客也只能看看参考就好(不过特别鄙视那些博客随便复制,不经过自己的实测就发表,可能只是自己记录,可是很容易误导别人,因为我看到很多就是错的,不是过时的问题,是语句本身出错!!!)

1.1 反编译工具

  • apktool(反编译apk,以及重新打包)
    作用:资源文件获取,提取图片,以及布局等文件,下载地址:apktool
    上面下载下来时jar包,在此我使用的是github上的,有人已经封装了可以使用的apktool.bat而已,本质还是使用的上面的jar包的:下载地址
  • dex2jar(源码文件获取)
    作用:apk反编译成java源码(calsses.dex->jar文件,然后这个jar可以用jd_gui可以查看),下载地址:dex2jar
  • jd_gui(源码查看)下载地址:jd_gui
  • baksmali
    作用:把classes.dex转为为smali文件的工具
  • smali
    作用:把smali文件编译打包为classes.dex的工具(利用以上俩个工具可以实现修改后重新打包apk,jd_gui和dex2jar只是为了查看源码的,因为直接看smali文件难度较大)
  • autoSign
    作用:给重新打包后的apk签名,之后才可以安装。

步骤

cmd到工作所在的目录下:
- apktool.bat d -f zhihu_signed.apk -o zhihu
说明:
其中d是decode的意思,表示我们要对apk进行解码。
-f 如果目标文件夹已存在,则强制删除现有文件夹(默认如果目标文件夹已存在,则解码失败)。
-o 指定解码目标文件夹的名称(默认使用APK文件的名字来命名目标文件夹)。
-s 不反编译dex文件,也就是说classes.dex文件会被保留(默认会将dex文件解码成smali文件)。
-r 不反编译资源文件,也就是说resources.arsc文件会被保留(默认会将resources.arsc解码成具体的资源文件)。

如图:
这里写图片描述
在这一步就获得了反编之后的资源,进入zhihu目录搜索app名称,然后修改保存之后,重新打包。

apktool.bat b zhihu -o zhihu.apk

运行后会在当前目录生成apk,并且在zhihu目录下产生一个build文件夹,也可以不加-o 参数,那么生成的apk会在zhihu目录下产生的dist文件夹里面。

只是用了apktool一个工具而已,因为我只是想改变名字,然后我其实尝试把知乎的图标给换掉,有点奇怪是我换了图片,结果装手机上还是没有效果,估计八成的图标没有换对,不过也花了一个下午搞这玩意儿,还是小小记录下吧。

刚刚在模拟器试了一下,安装上的app的图标已经改变啦,话说下午费我那么多功夫就为了改下小小的icon,不过在手机上安装使用图标却是不变,这样就好推测了,应该是手机上已经安装过,有了缓存读取的,话说有第二次被缓存坑里,上次是调试网页,这次的手机啊,不过还好多了个心眼,找不到新手机,特地装了个模拟器试试,果然生效啦,撒花开心咯^.^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android apktool是一款广泛使用的工具,用于反编译Android应用程序包(APK)。APK是一种Android应用程序的打包格式,包含了应用的所有代码、资源和配置信息。而反编译则是指将APK文件还原成可读性较高且易于理解的源代码形式。 使用apktool进行APK反编译时,首先需要将APK文件传递给apktool工具。工具会根据APK文件的结构,解析并提取其中的所有文件和资源。然后,apktool会自动将其中的DEX文件(Dalvik Executable文件,包含了Java源代码经过编译后的字节码)转换为Java源码。此时,开发者可以通过查看反编译后的Java源码来了解应用的工作原理和实现细节。 同时,apktool还会还原APK中的XML文件,包括清单文件、布局文件以及其他配置文件。这些XML文件记录了应用的各种配置信息,如权限、活动(Activity)、服务(Service)等。反编译后的XML文件可以帮助开发者了解应用的结构和设计。 尽管apktool的反编译功能可以帮助开发者深入了解和分析应用,但需要注意的是,由于反编译是将编译后的字节码转化为源代码,所以反编译后的代码可能会存在格式混乱、变量命名不一致等问题。因此,反编译的源码仅供参考和学习使用,不能完全复原原始代码。 总而言之,android apktool是一款强大的工具,通过它可以帮助开发者反编译APK文件,提取其中的代码和资源,从而更好地分析应用和进行代码审查。 ### 回答2: Android apktool是一种常用的工具,用于反编译APK文件。反编译APK可以帮助开发者分析和修改应用程序,并研究其他应用程序的功能和实现原理。 通过使用apktool工具,可以将APK文件解压成源码和资源文件。这样,开发者可以查看应用程序的源代码,理解其逻辑和结构,并根据需要进行修改。apktool还可以还原资源文件,比如图片、音频和布局文件,以供进一步分析和修改。 使用apktool反编译APK文件并不复杂。首先,需要在电脑上安装Java开发环境,然后下载并配置好apktool工具的环境变量。接下来,在命令行中运行apktool命令,指定要反编译的APK文件路径。反编译完成后,可以在指定的输出目录中找到反编译的源码和资源文件。 然而,需要注意的是,反编译APK只能得到大致的源码和资源文件,并不完全等同于开发者的原始代码。因为在编译APK之前,原始代码会经过一系列的编译和混淆过程,这些过程会对源码进行处理,使得反编译后的代码可读性较差。此外,反编译APK可能存在法律和道德问题,因此应该遵守相关法律规定,并尊重开发者的劳动成果。 综上所述,Android apktool是一种有用的工具,可以帮助开发者反编译APK文件,分析和修改应用程序。合法合规地使用该工具,可以加深对Android应用程序的理解,并提升开发能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值