1-1-逆向分析和脱壳的意义

本文描述初步识别安卓加固、逆向分析APP的一般流程。

识别加固

经验方法:判断一个App是否加固,通常可以直接解压查看文件。(各大厂商加固逻辑不相同,导致出现各种特征)

文件:libjiagu.so(360) 特征类:qihoo360

使用Android Killer:直接打开APK查看反编译失败信息。

识别入口点

AndroidManifest.xml: 清单文件中查找<activity android:name=”com.meishshubao.client.activity.StatupActivity” …/>

android Killer: 自动识别入口点。

image

被加壳了:DEX被保护了。

编译失败:有对反编译工具的应对策略。

GDA反编译工具

image

Packed: (加固信息,使用了一些腾讯服务)

360sec{site:jiagu.360.cn}

bangcle Enterprise Edition{site:www.bangcle.com}

Note:提示被加固,需要先进行脱壳

识别并非100%准确,但可以用于确定是否被加固

推进书籍:
非虫《Android软件安全与逆向分析》
姜维《Android应用安全防护和逆向分析》
邓凡平《深入理解Android: Java虚拟机ART》

脱壳需要了解什么?

Android平台的apk开发流程有基本的认识,四大组件、App的运行流程等等。只有懂得正向开发,才知道如何逆向分析。

逆向分析APP的一般流程

  1. 使用自动化检测工具检测apl是否加壳。(或者反编译工具以及依靠经验推断加壳)
  2. 对apk进行脱壳
  3. 使用jeb、jadx、apktool反编译工具对apk反编译
  4. 先通过静态分析得到关键字符串、关键api调用等。快速定位关键代码喝流程。
  5. 无法通过字符串、关键api定位时,则apk可能进行了字符串加密与反射盗用等处理。此时需结合hook、动态调试等方法。
  6. 定位到关键函数后,根据是Java实现还是jni实现进一步进行分析,其中so中的函数逻辑分析难度较大。

注意事项

被加固的apk,在脱壳取出dex后,有可能存在magic信息被修改的情况,只需要找到正常的dex文件复制修复即可。

image

onCreateVMP化保护。

1
2
protected native void onCreate(Bundle arg1) {
}

动态注册的函数(例如Check函数)在JNI_OnLoad中,并加了ollvm的保护的情况。

针对这种情况,通常使用动态调试或者Hook的方式对RegisterActivity以及art注册进行监控,以便快速定位到Check函数。

image

0条搜索结果。