• 安卓防逆向、防动态分析、渗透测试及加固


    五大反逆向技术:

    代码混淆、针对不同逆向工具保护技术、增加逆向难度(java代码native化)、动态加载技术、代码验证技术

    代码混淆:

    工具:proguard

    常用操作:保留选项、压缩、优化、混淆。

    功能:

    混淆代码(注意使用混淆文件的时候需加入自己的具体操作以防程序无法运行)

    删除无用Log:可删除调试和分析代码逻辑时的log,也可删除不使用的调试接口和测试环境

    问题:

    混淆错误:用到第三方jar时要指明proguard不要检查

    运行错误:代码不能混淆的情况下

    调试定位较为痛苦,开发者需要自己备份一份map记录对应混淆映像

    DEX保护:

    工具:dex文件混淆器dalvik-obfuscato、DexGuard

    原理:fill-array-data-payload指令,隐藏原始字节码

    加壳处理:android平台的加壳公司:APKProtect、Bangcle、LIAPP、Qihoo

    脱壳工具:android-unpacker(Github)

    so文件保护:

    so文件:Native C/C++代码编译得到的文件

    问题:对ELF文件加壳、对Android系统中so文件的加载、调用机制的处理

    防止jd-GUI查看代码

    方法:添加无意义的代码段、针对jd-GUI的bug使其运行时崩溃。最常用的是添加无意义switch代码。

    防止二次打包

    APK机器识别原理:包名及签名

    1、java层签名验证

    定位签名方式:搜索Landroid/content/pm/PackageInfo:->signatures

    2、服务器验证

    可行性不高,依赖网络,可伪造。

    3、NDK技术底层获取签名和验证

    将获取和验证的方法封装在so文件中,破解难度加强。但是用IDA PRO工具等也可以完美获取验证签名的具体位置

    4、自定义文件指纹验证

    自定义一天签名和校验机制算法

    防止动态分析

    Anti-debug和Anti-Anti-debug之间的博弈

    检测运行环境:

    检测IDA等工具:使用IDA或者gdb等工具的时候,会在android进程中启动一些本地进程,如android_server、gdbserver等

    查看是否存在模拟器:使用设备的imei和build.MODE判断

    防止动态注入:防止对方调用ptrace函数或保证平台进行注入检测

    Android渗透测试:

    主要方向:网络调试、数据表嗅探、网络攻击、口令破解、私有文件排查、逆向代码分析

    工具:

    Drozer(又称Mercury),针对android系统地安全审计与攻击框架

    瑞士军刀busybox,安装步骤:

    (1)root设备

    (2)busybox二进制文件,选择对应架构的最新版本

    (3)将busybox传入到android设备:adb push busybox /mnt/sdcard

    (4)重新挂载/system目录读写权限

    adb shell

    su

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

    (5)复制busybox文件到/system/xbin并将其修改为“可执行”的权限

    cp /mnt/sdcard/busybox /system/xbin

    chomd 755 busybox

    (6)安装busybox

    busybox --install

    集成化工具:dSploit、zANTI

    加固问题

    1、加固厂商:加固宝360、娜迦nagapt、梆梆bangcle、爱加密ijm、阿里、百度,盛大,腾讯,网秦通付盾

    2、加固厂商对应的特征:

    娜迦libchaosvmp.so,libddog.so,libfdog.co

    爱加密libexec.so,libexemain.so

    梆梆libsecexe.so,libsecmain.so,libDexHelper.so

    360libprotectClass.so,libjiagu.so

    通付盾libegis.so

    网秦libnqshield.so

    百度libbaiduprotect.so

    3、脱壳方法:

    修改系统源码自动脱壳

    通过hook方式对关键函数脱壳

    开源工具ZjDroid,DexHunter脱壳

    IDA或者GDB动态调试脱壳

  • 相关阅读:
    JSP动作--JSP有三种凝视方式
    osgi实战学习之路:5.生命周期及利用命令、装饰者模式实现基于socket交互Bundle命令demo
    一个int类型究竟占多少个字节
    FORM验证简单demo
    centOS设为文本启动方式
    定时关机命令——shutdown
    【剑指offer】Q38:数字在数组中出现的次数
    Union和Union All的差别
    基于协同过滤的推荐引擎
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
  • 原文地址:https://www.cnblogs.com/miaohj/p/5954046.html
Copyright © 2020-2023  润新知