静态分析Android程序——使用ApkTool破解

一、实验题目
实验一 使用ApkTool分析Android程序
二、预备知识
1、ApkTool作用
(1.跨平台工具,可以在Windows平台与Ubuntu平台下直接使用;
(2.ApkTool反编译,生成Smail格式的反汇编代码;
(3.阅读Smail文件的代码理解程序的运行机制,找到程序突破口进行修改;
(4.使用ApkTool重新编译成apk文件并签名,最后运行测试破解程序是否成功;
2、配置环境
首先我在本地F盘的Android文件夹下新建了个apktool文件夹(下面有用到)。
第一步,就是要让我们下载apktool.bat,把鼠标移至wrapper script上,然后右击,链接另存为,把下载来的文件放到F:\Android\apktools,记得名字要改成apktool.bat;
第二步,下载apktool.jar文件,点击find newest here,跳到下载页,我们能尽量下载最新版本,旧版本可能不能用(目前百度出来的反编译博文很多都提供apktool.jar下载,但是由于版本太旧,无法反编译),我这里下载最新版本,也把该文件刚到apktool文件夹下。
在这里插入图片描述
第三步:把下载来的jar文件重新命名为:apktool.jar。
第四步:官网建议把apktool.bat、apktool.jar放到C盘的Windows下,但是我是放在F盘的apktool文件夹下。 按官网的意思是如果你没把apktool.bat、apktool.jar放到C盘的Windows下,就需要我们自行配置环境变量,因为如此,所以我需要自己配置环境变量,我是win10系统,如下图:
在这里插入图片描述
2、使用apktool
环境搭建好了,下面就是如何使用,win+R,输入cmd调出命令行窗口,切换到apktool文件夹目录下。接下来把apk拷贝到该目录下面。
输入这两个命令
apktool d test.apk
反编译成功后,在他的同级目录下就多出了一个文件夹,里面就是反编译出来的源码。

三、实验操作过程及实验结果
实验一 使用ApkTool分析Android程序
接下来我使用ApkTool破解上面编写的AppCracking程序,目前的程序无论输入什么用户名和注册码均表示注册失败,目标是破解后无论输入什么都是成功注册。
首先找到AppCracking的apk。在G:\AppCracking\app\build\outputs\apk\debug中,然后把它复制出来,并重命名为AppCracking.apk,与apktool.bat和apktool.jar放在同一个文件夹下。
在这里插入图片描述
下面,对apk进行反编译。在命令行进入要反编译的APK文件目录,输入命令:apktool d AppCracking.apk。成功编译后,apk所在文件夹下会出现与apk同名的即名为AppCracking的文件夹。
在这里插入图片描述
在这里插入图片描述
这个文件夹下有如下几个文件。
在这里插入图片描述
在G:\APK_T\AppCracking\res\values中的string.xml寻找注册失败提示。
在这里插入图片描述
在这里插入图片描述
在这里找到了确定其名为“fail”,然后打开public.xml,找到name为“fail”对应的id=“0x7f0b0028”。
在这里插入图片描述
checkRegisterCode()方法返回布尔类型的值,这里第一行代码将返回的结果保存在v0寄存器中,第二行代码对v0进行判断,如果寄存器中的值不为0,则跳转到cond_0标号处,否则程序继续向下执行。
在这里插入图片描述
若代码不跳转,就会执行如下代码:
在这里插入图片描述
若代码不跳转,就会执行如下代码:
在这里插入图片描述
修改Smali文件代码。用notepad++打开AppCracking$1.smali,将判断条件“if-nez v0”修改为“if-eqz v0”,即将跳转条件反了一下,保存文件。
在这里插入图片描述
重新编译APK文件。命令行窗口下输入命令:“apktool b AppCracking”。

接着对新编译的apk文件进行签名。编译生成的APK文件没有签名,还不能安装测试,使用signapk.jar工具包对APK文件进行签名。
命令行窗口下进入AppCracking中的dist目录,输入命令:“signapk AppCracking.apk”,签名成功后会在同一目录下生成signed.apk文件。
在这里插入图片描述
在这里插入图片描述
打开手机,将之前的AppCracking卸载,然后将signed.apk安装在手机上,不然会提示手机上已安装了存在签名冲突的同名数据包,导致这个新的apk无法安装。
安装成功后,启动程序,输入用户名和注册码,点击注册。这时,会提示“Registration successful”(注册成功),并且注册按钮也会呈现不可点击的灰色。
在这里插入图片描述
在这里插入图片描述
到此,使用Apktool破解AppCracking实验完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apktool是一个用于反编译和重新打包Android应用程序的开源工具。以下是使用Apktool的步骤: 1. 下载Apktool:首先,您需要下载Apktool。您可以访问其官方网站https://ibotpeaches.github.io/Apktool/,选择适合您操作系统的版本进行下载。 2. 安装Java:Apktool需要Java运行时环境(JRE)才能运行。如果您还没有安装Java,请先安装JRE。 3. 反编译APK使用Apktool反编译APK非常简单。只需在终端窗口中导航到存储APK的目录,然后键入以下命令: ``` apktool d <APK文件名> ``` 例如,如果您要反编译名为“myapp.apk”的应用程序,请在终端中键入: ``` apktool d myapp.apk ``` 4. 修改应用程序:反编译应用程序后,您可以在应用程序的文件夹中找到所有文件和资源。您可以修改这些文件并将其打包回APK。 5. 重新打包APK:在完成应用程序的修改后,您可以使用Apktool将其打包回APK。只需在终端中导航到应用程序文件夹,并键入以下命令: ``` apktool b <应用程序文件夹名> ``` 例如,如果您的应用程序文件夹名为“myapp”,则在终端中键入: ``` apktool b myapp ``` 6. 签名APK:重新打包APK后,您需要对其进行签名才能将其安装到设备上。您可以使用Java Keytool或其他工具对APK进行签名。 这些是使用Apktool的基本步骤。请注意,Apktool不支持所有APK文件。有些应用程序可能包含防止反编译的保护措施,这些保护措施可能会使Apktool无法工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值