Android病毒分析实战(二)_androidmanifest

+ - [样本无法安装](#_18)
	- [强混淆方法hook、字符串解密](#hook_28)
+ [总结](#_83)

今天星友求助一个类似杀猪盘的样本。该样本有以下几个点需要攻克:

分析过程

1、AndroidManifest.xml经过处理:
file
2、整个样本的字符串全部经过加密,解密方法名经过强混淆:
file
3、资源文件也经过了混淆:
file
4、样本伪加密:
file
5、样本无法安装(签名问题):
file

接下来我们来解决一下2、5两个问题。

详细问题

样本无法安装

我们看样本安装报错,提示签名问题,我们直接上Xposed模块:核心破解
核心破解的主要功能:
1、允许降级安装应用
2、允许安装签名错误的apk
3、允许在使用不同签名的情况下覆盖安装
缺点:
当前版本只支持安卓10-12
file

强混淆方法hook、字符串解密

file
接下来我们hook一下这个加密方法,简单的hook我们直接使用objection即可:

hook 监测该类,可以看到只有这一个方法:

objection -g com.biaoqyun.tongchengaglao explore
android hooking watch class b6p.alur0e.fmjoi

file
我们直接复制,hook该方法,报错,找不到这个方法:
file
这样看直接hook这个方法显然是有问题,因为其中包含了各种字符,frida在解析这个方法时由于乱码的原因,无法正常解析道这个类,这样看来我们只能想其他办法了。

曲线救国,可以试试hook它的上层调用a.c,打印对应的参数和返回值来看,其中的参数即是解密后的字符串。

得到结果如下:

android hooking watch class_method com.g
aoyuan.mianshu.k.c.a --dump-args --dump-return

file
从上图我们可以看到有RSA密钥,以及返回的一些URL。

这样的缺点是只能知道这一块的字符串解密内容,其他的还是无法定位,这样看还是需要hook这个混淆的方法。

我们的大佬提供了解决方法,可以hook混淆方法,展示一下hook到的结果:
file
我们也可以根据打印出来的字符串在jadx中搜索对应的字符串然后继续分析代码

hook代码如下:

Java.perform(
    function() {
 
        var targetClass = "b6p.alur0e.fmjoi";
 
        var hookCls = Java.use(targetClass);
        var methods = hookCls.class.getDeclaredMethods();
 

        var methodname = encodeURIComponent(methods[0].toString().replace(/^.\*?\.([^\s\.\(\)]+)\(.\*?$/, "$1"));//对字符串进行js自己编码

 
        hookCls[decodeURIComponent(methodname)]//使用的时候再去解码
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

![img](https://img-blog.csdnimg.cn/img_convert/71f996327dfc5827252f9ebf9fd8d919.png)

![img](https://img-blog.csdnimg.cn/img_convert/762bd241d33bfb6bf896dcf5b9fb7976.png)

![img](https://img-blog.csdnimg.cn/img_convert/57898fae388aaf27813d030f09c931ea.png)

![img](https://img-blog.csdnimg.cn/img_convert/f635c1c48f2d17162dab4423446683ff.png)

![img](https://img-blog.csdnimg.cn/img_convert/5f7571dd5cac04669a492ddca5153685.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中的`android.permission.WRITE_EXTERNAL_STORAGE`权限用于访问外部存储设备(如SD卡)的写入权限。以下是Android 11及以上版本和Android 6.0到Android 10版本的适配方法: 1. Android 11及以上版本: 在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 然后,在代码中使用`ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION`权限来请求用户授权操作手机中的文件管理: ```java Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); ``` 2. Android 6.0到Android 10版本: 在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` 然后,在代码中使用运行时权限来请求用户授权: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); } } ``` 请注意,从Android 11开始,即使在AndroidManifest.xml中声明了存储权限,也需要在代码中动态请求权限。此外,Android 11及以上版本的存储权限只允许访问媒体文件,无法直接操作手机的文件管理。只有通过`ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION`权限才能操作手机中的文件管理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值