Andorid APK反逆向解决方案---梆梆加固原理探寻
一、序言
目前Android市场充斥着大量的盗版软件,开发者的官方应用被“打包党”们恶意篡改。如何使程序代码免受盗版篡改就成了开发者面临的头等大事,今天我们将分析一个不错的解决方案---梆梆加固(http://www.secneo.com/appProtect/)。
通过对App进行加固保护。梆梆可以有效防止移动应用在运营推广过程中被破解、盗版、二次打包、注入、反编译等破坏,保障程序的安全性、稳定性,对移动应用的整体逻辑结构进行保护,保证了移动应用的用户体验。
二、梆梆加固逆向分析过程
首先我们通过对APK加固前后文件结构的比较,来了解梆梆加固对APK文件所做的处理。为了使分析过程足够简单,我新建一个最简单的测试程序,并上传到梆梆加固,整个加固过程大概需要4天的时间才可以完成,这是一个漫长的等待过程。
该测试程序包含了Activity、Service、ContentProvider、BroadcastRecevier四大组件、Application、普通类、Jni调用等7类对象,目的就是全面的了解梆梆的加固效果。
1、apk加固前后静态文件结构及动态运行时对比分析
(1) 加固前后静态文件结构变化(左为加固前,右为加固后)
加固后apk新增以下文件:
assets\meta-data\manifest.mf //APK文件列表SHA1-Digest
assets\meta-data\rsa.pub //RSA公钥信息
assets\meta-data\rsa.sig //数字签名文件
assets\classes.jar //已加密原classes.dex文件
assets\com.example.hellojni //ARM平台二进制可执行文件
assets\com.example.hellojni.x86 //x86功能同上
libs\armeabi\libsecexe.so //ARM平台共享库文件
libs\x86\libsecexe.so //x86功能同上
加固后修改文件:
AndroidMainfest.xml //(如果应用配置有Application信息,则该文件加固前后相同,如果应用未配置Application信息,则该文件加固前后不 //相同,梆梆会配置Application信息为自己实现类)
classes.dex
对classes.dex进行反编译,观察代码树结构变化:(左为加固前,右为加固后)
(2)加固前后动态运行时变化
运行原程序,系统仅创建一个相关进程,但是加固的程序,系统会为其同时创建三个相关程序进程:
进程启动顺序:597进程创建605进程,605进程又创建了607进程
通过查看maps文件获取597进程映射文件信息
通过map文件可以看出,597进程为主进程,android各组件在该进程中运行。
605和607进程并无与apk文件相关文件信息,通过cmdline查看启动参数:
初步怀疑该进程为assets\com.example.hellojni 可执行文件运行结果。
2、梆梆加固保护效果分析
我们通过逆向分析加固后的app,来看看梆梆加固对app的保护效果。
程序代码的第一执行点是Application对象,首先查看TestApplicati
补充:移动开发 , Android ,