Android防逆向基础

admin 2022年6月4日12:34:53评论202 views字数 2142阅读7分8秒阅读模式

零基础一对一技术咨询服务(远程指导)

防逆向

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


欢迎关注"哆啦安全"视频号,对移动安全、网络安全、Web安全、Android系统Framework/驱动/内核开发等感兴趣的都可以关注,目前处于需求调研、备课阶段,主要以需求、实战为主,欢迎加入"哆啦安全"体验

Android防逆向基础



推荐阅读

Android混淆规则

Oo0代码混淆实现方法

超实用的优质公众号推荐

Android应用安全方案梳理

加固不等于安全之APP应用更安全浅析

加密shared_prefs/xml中的内容防窃取

Android包体积优化(常规、进阶、极致)

bundletool工具使用(Android aab包安装)

Google Play上架App之aab转apk和apk转aab的使用方法

Android aab包google上架避免关联下架的解决方案(App出海企业的福利)

Android App Bundle混淆加密加壳加固保护的解决方案(过Google App上架审核)

最全Android及资源混淆方法汇总(无需加固节约成本并将APP上架Google Play成功的最佳方案)


Android防逆向基础

点赞、转发、分享

原文始发于微信公众号(哆啦安全):Android防逆向基础

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月4日12:34:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android防逆向基础http://cn-sec.com/archives/1085418.html

发表评论

匿名网友 填写信息