0x00 前言

本文为科普文,在蒸米的《安卓动态调试七种武器之长生剑 - Smali Instrumentation》一文的基础上,针对smali注入保持源程序逻辑完整性总结一些方法和思考,现和大家分享一下,欢迎大家一起探讨。

0x01 smali注入

相信大家在入门Android安全的时候都会接触到smali注入吧。通过smali注入,我们可以修改程序的逻辑,或者在程序适当的位置插入一段代码,通过执行这段代码我们可以得到程序的一些中间运行结果。

1.smali注入过程

可能大家对这个smali注入过程都比较熟悉了,这里稍微过一过流程吧。

1.1 反编译apk

可以使用apktool对apk进行反编译,命令是apktool d apk名

1.2 打开smali文件,注入语句

我们在上一步中反编译得到了一个装有smali文件的目录,那么我们可以在特定的smali文件中注入我们想要插入的smali语句。

1.3 重打包

修改好smali文件之后,就要重新打包,那么这里同样可以使用apktool工具,命令是apktool b apk名打包成功后,新的apk会在反编译目录下的dist目录中

1.4 签名

如果不对重新打包的apk重新签名,就会有问题,那么签名完之后就可以去模拟器或者真机上运行看看效果啦。

2.常用的一些smali注入代码

2.1 输出Log信息

插入一段log方法的代码之后,可以在logcat中查看我们想要输出的信息,这对于想看到程序的中间结果是一种常用的方法。

java代码:

1
Log.v("tag","msg");

smali代码:

1
2
3
const-string v0, "tag"
const-string v1, "msg"
invoke-static {v0, v1}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

Read More

前言

周六的时候抽空做了四道题,傍晚去班级聚餐之后就没弄了。这次的ctf挺有意思的,开题还要拿金币去买,哈哈。

writeup

0x00 404

抓包
flag藏在一个302的响应包里

flag:hctf{w3lcome_t0_hc7f_f4f4f4}

Read More

前言

昨天比赛结束,趁热打铁,写一下writeup,第一次两天都专心比赛,团队的力量很强大,哈哈。

这个省的强网杯是第一届,感觉出的crypto,misc题还挺多的,而pwn和re的题居然没有队解出来。

writeup

0x00 来看一下flag格式

这题告诉我们flag的格式,直接粘贴复制就好了

0x01 致敬经典

题目:
lrua{1uy3yj9l-yw9u-48j2-uuj8-36h03706y7u7}

题目的图片扔去百度识图发现是凯撒大帝,so..可能跟凯撒密码有关,做下去发现算是凯撒密码的变种。映射关系是,按字母表顺序,奇数位的字母循环右移6位,偶数位的字母循环左移6位,所以l->f,r->l,u->a,a->g,符合,所以最后得到flag。

flag{1ae3ed9f-ec9a-48d2-aad8-36b03706e7a7}

Read More

0x00 前言

Androrat原本是一个对Android设备进行远程管理的工具,但是使用不当的话,其实就相当于是一个木马程序。Androrat现在主要有两个版本,一个是国外原版,另一个是国内开发人员开发的,我这里分析的是国外原版(法国人写的- -|| 看不懂的注释..),没有经过太大改动。

那么它官方给出的功能有:

获取通讯录信息
获取呼叫记录
获取短信和彩信
通过 GPS 获取定位
实时监控接收到的短信
监控手机的呼叫状态
拍照
获取来自麦克风的声音信息
视频
弹窗
发送文本消息
拨号
在浏览器中打开某个网址
震动等

Androrat的工作模式是C/S模式,在pc端或者服务器上安装Androrat的server,在移动设备上安装Androrat的client端。大概的流程是,server端发送指令到client,client对指令做出相应的解释和操作,接着返回数据给server,server展现收到的数据。
client的主界面是需要手动输入server端的ip和port,然后点击按钮启动服务,那如果修改Androrat的源码,指定ip和port(当然这时server就要放置在有外网ip的服务器上啦),默认开启服务,通过其他手段让受害者安装这个修改后的andorat,这样server就可以控制多台肉鸡了。

那我们现在来分析一下Androrat的工作原理:

Read More

最近做了一个作业,要求用python获取apk的一些信息,要求:
1、获取apk文件存在哪些文件并保存到一个文本;
2、获取apk文件存在使用哪些权限(uses-permission)并保存到一个文本。

第一个功能的实现需要先把apk解压,然后直接读取目录文件名就可以了。
第二个功能的实现需要把apk反编译,这个可以借助现有的反编译工具实现,我使用的是apktool v2.0.1,反编译之后才能正常看到AndroidManifest.xml的内容。关于获取xml文件的内容,一开始用了简单的文件读取方式,后来发现用dom读取xml更加方便。

Read More