Android App 动态防护技术

2020-7-17 宋宋宋

1.防调试方法:

    复制子进程对自己附加。

    轮询/proc/app_pid/status,读取TracerPid字段值

    利用Linux系统inotify机制检测/proc目录,是否处在阻塞。

    防挂钩方法,常见:Xposed CydiaSubstrate(需要替换系统中/system/bin/app_process文件)

        查看/proc/App_pid/mmaps文件,读取信息。


2.防日志输出:

    对__android_log_print/write()函数挂钩,关闭调试日志输出。


3.安全软键盘:

    主要: 随机字符位置,输入随机加密,后台解密。


4.防界面劫持:

    检测焦点变化,即Activity变为onPaush。


5.防篡改:

    签名校验防篡改。

    完整性校验防篡改。


6.防截屏/录屏:

    关闭程序截屏/录屏功能,即Activity中,onCreate()方法的Layout初始化部分加入FLAG_SECURE。


7.模拟器检测:

        检测设备IMEI,MAC值等(现在的模拟器都可以修改)

        蓝牙,传感器等状态

        其他特征等


8.应用多开检测:

    检测files目录路径(/data/data/)

    检测能否在/data/data/<package_name>/目录下创建文件

    ps检测(UID唯一性)

    应用列表检测

    maps检测(/proc/self/maps)


9.ROOT环境检测:

   检测su命令是否存在

    检查ro.debbuggable,ro.secure

    检查特定路径是否有写权限(/system /system/bin /system/sbin /system/xbin /vendor/bin /sys /sbin /etc /proc /dev)mount


10.挂钩框架检测:

    Xposed举例:

        特征

        classLoader检查Xposed类

        检查当前进程是否存在Xposed动态库(so文件)

        检查是否安装Xposed包(最容易被绕过)


参考《Android应用安全测试与防护》 转载需注明本页面url及参考书籍。

标签: Android

发表评论:

密码站 2013 - 2020 | 辽ICP备17016418号-1