安卓入门--apktool的使用

admin 2023年1月9日20:31:21评论522 views字数 2533阅读8分26秒阅读模式

  

安卓入门--apktool的使用


从简单的CTF题目入门安卓逆向

       关于最近在认真的学习一下安卓逆向,之前都是直接用Jadx,Jeb这些反编译工具打开apk文件,进行java代码的静态分析。这里记录一下apk文件内容的简单修改,重新打包。

01

APKtools的使用


apk文件的本质就是一个zip文件,可以使用解压软件直接解压。

安卓入门--apktool的使用


解压后发现一般会存在这样的目录结构。其中AndroidManifest.xml这个文件是我首先去分析的文件,因为它是二进制xml文件,提供设备运行应用程序所需的各种信息。如果我用解压软件直接解压然后用记事本直接打开会发现是一堆乱码。

安卓入门--apktool的使用


这就体现了apktool的功能了,使用apktool对apk文件进行反编译,可以直观查看文件内容,并对文件内容进行修改。

工具下载链接:[iBotPeaches / Apktool / Downloads — Bitbucket](https://bitbucket.org/iBotPeaches/apktool/downloads/)



apktool反编译命令

```

java -jar apktool_2.6.1.jar d filename -o dirname

```

安卓入门--apktool的使用


这样我再打开xml文件就可以很清晰的看见该程序的配置信息。

安卓入门--apktool的使用


想要动态调试apk程序的时候我们首先,要让apk具有可以调试的属性。通常我们会在xml文件中的中添加
**android:debuggable="true"**。

修改完以后我们需要对文件夹重新打包成apk文件。

打包命令

```
java -jar apktool_2.6.1.jar b dirname -o filename
```

安卓入门--apktool的使用


此时就生成了一个名为av1.apk的文件,我们尝试一下在模拟器中安装一下。

安卓入门--apktool的使用



发现安装失败,这是因为我们没有对apk文件进行签名。这时我们使用**keytool**生成**.keystore**文件,然后对apk文件进行签名。
```
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
```

keytool是jdk自带的工具,无需安装。输入命令后我们根据提示输入内容即可。

安卓入门--apktool的使用


```
jarsigner -verbose -keystore test.keystore -storepass 123456 -signedjar flag.apk new.apk testalias
```

123456就是我们自己输入的密钥口令。


各个参数详解:
-keystore +签名文件,
-sotrepass +签名口令密码,
-signedjar后跟三个参数,分别是签名后的apk文件,需要签名的apk文件,签名的别名

安卓入门--apktool的使用


签名过后就可以重新在模拟器中安装,这时候就可以成功安装了,重新安装前要删除模拟器中之前安装的应用。


02

例题分析


这是BUU上一道简单的安卓逆向题目,题目名字:艾克体悟题


模拟器中打开

安卓入门--apktool的使用


根据提示我们查看xml文件

安卓入门--apktool的使用


> 声明一个Activity(一个Activity子类),用来实现app的可见用户接口部分。所有的Activity都必须表现成manifest文件的元素。任何没有声明在manifest文件里的Activity将不会被系统看见,并且将永远不会运行。
我们再去分析FlagActivity这个类

安卓入门--apktool的使用


我们点击的次数大于一万次就给flag,当然我们不可能去点击一万次,这时我们要修改这个数。

思路:修改xml文件中的让FlagActivity的android:exported="true";然后修1000为一小的数,就修改成1吧。

如何修改这个10000为1呢?

我们首先要知道Dalvik虚拟机和Jvm一样,有着自己的一套指令集,这就类似与汇编语言,但是比汇编语言看着要容易理解一些,这里就不细讲了。

安卓入门--apktool的使用


smali文件中就是每个类的汇编语言,我们直接打开就可以看到。

安卓入门--apktool的使用


这里有一个if-lt指令,并且0x2710是10000的十六进制数值。可以锁定要修改的地方了,改完之后我们就利用刚开始讲的内容进行打包、签名。重新安装就可以了。


本文章主要是对安卓逆向的入门,大佬请绕道,有什么不足的地方请大家批评指正,一起学习!!!



招新小广告














2023年招新计划(主力/NMEGREZ)


注:不限年龄与职业要求,只要不是纯小白(或者是初学者未参与过任何一场比赛的人)就有机会通过审核,天权信安对外长期招新,出色的师傅能够参与团队项目和竞赛项目建设。


PWN:要求技术中等偏上曾参与过省级/国家级网安赛事荣获过奖项的师傅优先考虑)

REVERSE:要求技术中等(曾参与过省级/国家级网安赛事荣获过奖项的师傅优先考虑)

CRYPTO:要求技术中等偏上

WEB:要求技术中等偏上

取证:曾参与过省级网安取证赛事荣获过奖项的师傅

BLOCKCHAIN/IOT/工控/AI:要求技术中等


CTF竞赛靶场/TQCTF练习平台运维师傅:若干名,熟悉docker操作、动态题目部署、以及常规运维,还具备组网部署经验和Linux、Windows系统部署和日常维护,能使靶场平台在各种环境中正常运行。


 欢迎联系

投递邮箱:[email protected](Evan师傅)

-天权信安网络安全团队-

网络无边 安全有界

安卓入门--apktool的使用
2022,感恩有您
2023,携手同行

 用技术撬动未来,用奋斗描绘成功!


     

     天权信安欢迎技术大咖、CTF选手等资深专业人士前来分享网络安全前沿技术、攻防实战经验、内网渗透、IOT安全、CTF、工控安全等内容,一起来帮助大家了解最新网络安全动态,提升新的安全技术,拓宽知识领域,打造一个开放共享的网络安全生态圈,吸引各大爱好CTFer和实战大咖加入我们。这里聚集了一群热爱网络安全的有志之士的加入,为“网络安全爱好者”提供一个更好的学习交流生态圈。

安卓入门--apktool的使用


面向人群:欢迎各大高校、企事业单位大咖加入我们!





往期回顾:

2022IS河南工业控制安全部分web题解

NepnepxCATCTF-CatPaw视频详解

NepnepxCATCTF-CatPaw题目详解



原文始发于微信公众号(天权信安):安卓入门--apktool的使用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月9日20:31:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓入门--apktool的使用http://cn-sec.com/archives/1508420.html

发表评论

匿名网友 填写信息