【移动安全技术】_安卓逆向1


作业

  学会使用apktool, keytool, jarsigner等工具

  1. 为后一位同学编写一个点击按钮出现Toast的app,并以apk的形式发送给学号后一位同学(最后一位同学发给第一位同学)
  2. 对前一位同学发来的apk进行逆向,并将Toast中的文字改为自己的学号+姓名。

  附加题:进一步修改前一位同学apk,将app名字改为自己的学号。

  评分标准:基本功能(80),附加题(+10),其余分数根据报告质量

  apktool下载地址和说明:https://ibotpeaches.github.io/Apktool/install/
将所存放的文件夹路径加入环境变量中,在cmd中可以输入apktool命令。


准备apk文件

  新建First_Re项目,选择Empty Activity。Java代码如下:

	MainActivity.java文件中添加按钮实例和监听:
Button button1 = (Button)findViewById(R.id.button);
button1.setOnClickListener(new View.OnClickListener() {
	@Override
    public void onClick(View v) {
	    Toast.makeText(MainActivity.this, "你好啊,小沈", Toast.LENGTH_SHORT).show();
	    }
 });

  把项目打包成APK文件:
工具栏点击“Build”,在下拉栏选择“Generate Signed Bundle /APK”,在弹出的对话框中选择APK。在弹框中任意填写信息,此处口令填写为123456。Build Variants选择release,勾选V2,点击Finish完成。
  app-release.apk文件默认保存在First_Re\app\release\目录下。

  把.apk文件发送到华为手机,安装应用程序并成功运行,点击按钮会输出“你好啊,小沈”。

在这里插入图片描述
在这里插入图片描述


逆向分析

逆向工具APKTool

  Apktool 是一个反编译Android Apk的第三方工具。它可以反编译资源,并在进行修改之后重新打包Apk。

  功能:将资源解码成原形式,比如png和xml。将解码资源重新打包成apk/jar等。

  安装地址:https://ibotpeaches.github.io/Apktool/install/
开启代理,下载apktool.bat,下载apk-tool_2.4.1.jar,重命名为apktool.jar,把apktool.bat和apktool.jar剪切到C:\Windows目录下,就可以在命令行运行apktool软件啦。

  值得一提的是,apktool.jar依赖Java1.8或更高版本。apktool.bat的作用是可以直接在命令行输入apktool使用软件,重命名是因为bat里面写的是apktool.jar。没有此脚本时需要输入java -jar apktool.jar。

	运行命令:apktool 
	反编译APK文件:apktool d test.apk
	将反编译后的文件重新打包:apktool b test

在这里插入图片描述


逆向简单程序

  先把.apk文件拖拽到夜神模拟器6.6尝试运行,提示“应用安装失败”。把apk文件发送到华为手机,成功运行,点击按钮输出“Hello”。
  对.apk文件进行反编译,得到同名目录apk-debug,目录文件如下:

	执行反编译命令:apktool d apk-debug.apk

在这里插入图片描述

在这里插入图片描述

  疑问:如何修改安卓程序的资源文件?

  方式:Android Studio打开项目,使用“Find in Path”全局搜索指定字符串。

  打开项目,右键点击项目,选择“Find in Path”。已知点击按钮会输出“Hello”字符串,App名称为Seven。
搜索app_name,修改为<string name=“app_name”>1820030116</string>。
搜索“Hello”,修改为“1820030116_zkx”,搜索时AS是不区分大小写的。

  完成修改后,对项目进行重新打包。在项目文件夹的/dist目录下产生修改后的apk,此时在手机上安装该apk会报错,还需要对apk设置证书。

  生成证书abc.keystore,使用证书对apk文件签名。安装签名后的apk,安装报错“更新包与已安装应用的签名不一致”,删除原来的软件即可安装成功,运行程序效果图如下。

	重新打包命令:apktool b app-debug(项目文件夹)
	
	生成证书:keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore
	
	对apk进行签名:(把test.apk替换为自己的apk名称,此处是app-debug.apk)
jarsigner -verbose -keystore abc.keystore -signedjar test.apk test.apk abc.keystore

在这里插入图片描述



在这里插入图片描述****

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


参考

  《android studio生成apk教程》
https://jingyan.baidu.com/article/22a299b583606b9e19376acf.html

  《apktool 工具介绍》,2019.01
https://www.jianshu.com/p/7f47bd328797

  《Apktool 使用教程》,2020.03
https://www.jianshu.com/p/6ba8b826c138

  《Android Studio 全局搜索字符》,2019-03
https://blog.csdn.net/Cricket_7/article/details/88883935

  《利用apktool反编译apk,并且重新签名打包》,2018-05
https://blog.csdn.net/ycdyx/article/details/80501521

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值