app安全

app安全

五大反逆向技术:

代码混淆、针对不同逆向工具保护技术、增加逆向难度(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动态调试脱壳