欢迎来到天天文库
浏览记录
ID:50677057
大小:1.18 MB
页数:11页
时间:2020-03-13
《梆梆加固方案分析和破解--论梆梆安全加固的不可靠.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、梆梆加固方案分析和破解--论梆梆安全加固的不可靠一、梆梆安全加固方案技术分析2(1)APK包文件特征2(2)dex文件分析3(3)SO文件分析3二、梆梆安全加固破解9一、梆梆安全加固方案技术分析样例分析环境:APK包:齐鲁银行运行环境:安卓模拟器4.4.2CPU平台:ARM平台,(X86暂不分析)分析工具:JEB,APKIDE,IDA6.6及HEX编辑工具等(1)APK包文件特征图1齐鲁银行apk文件结构图1可见classes.dex文件极小。非应用真正的dex文件。图2assets/文件目录梆梆把SO文件都放在assets中。图
2、2中比较重要文件有:,,,,4个so文件以及一个jar文件。(2)dex文件分析图3dex结构代码中能看到的so调用有2处:ACall中的libsecexe.so,以及ApplicationWrapper中的libDexHelper.so。初步总结:根据apk包文件结构以及dex逆向中可见的调用关系,大约可推断出梆梆整体的保护策略:多层次,明暗集合。(3)SO文件分析开始详细分析梆梆的SO文件。根据上面几个方面的观察,梆梆具有4个so文件。2个为显式调用,2个为隐式调用(调用代码隐藏在so中)。1)四个so相互调用关系:本人的初步
3、研究:首先,Dex中的ACall调用libsecexe.so,其次,调用libsecmain.so,再次,Dex中的ApplicationWrapper调用libDexHelper.so,最后,libsecperload.so这个so文件很奇怪,好像并没有被调用过。2)四个so各自特征详细分析:*libsecexe.so文件大小81KB,破坏参数ELF中的section节表信息,采用加壳保护----变种UPX壳(无法使用工具直接脱壳),函数和变量名都加入混淆处理。图4仅存在段表,upx加壳(elf文件)特有段表结构图6功能性函数和
4、变量名混淆图7so入口函数变形,ida无法识别图8JNI_OnLoad函数加密字节特殊处理综上所见:该SO文件反映了梆梆加固机制的大量技术信息。但其核心技术只是国外开源的UPX壳。在本文的最后会针对UPX壳逆向分析的情况进行一些细节说明。通过技术手段进行手工脱壳,并dump出so在内存中的map并转存二进制文件。因Dump出的二进制文件,本身无法修复elf段表和节表(手工修复工作量大),所以在分析过程中,结合了runtime动态调试内存技术。图9-1脱壳前的so在内存中段布局图9-2脱壳后的so在内存中的段布局因为UPX为压缩壳,
5、所以原加载入内存的elf各分段被动态解压到内存中,如LOAD段下方的debug002实为LOAD段解压还原后的代码及数据信息。其他各段类似。此处也可看出无法dump出完整elf的原因了。Upx解压时,并没有还原section和segment,实际也没这个必要。图10相对图7这才是真正的so入口点.init_proc源码,即upx脱壳代码图11相对图8这是解压还原后的JNI_OnLoad函数(深蓝色的函数名都是本人的分析标注)图12JNI_OnLoad的一个sub函数至此libsecexe.so的启动代码部分大概流程解析出来。其中功
6、能性函数与dex有关的很多。本人搜索了一些关键词。发现前面提到的一个bangcleclasses.jar这个jar包也在该so中处理。总结:该so的特点,加壳,名称混淆,但未混淆函数实现。获得dex修复功能,与classes.dex和bangcleclasses.jar通讯交互调用了一些功能函数。*libsecmain.so第二个核心so文件。根据对libsecexe.so的研究。Libsecmain属于隐式被调用者,调用者很可能就是classess.jar这个jar文件(本人猜测)。文件大小157KB,破坏ELF中的sectio
7、n节表信息,采用加壳保护----变种UPX壳(无法使用工具直接脱壳),函数和变量名都加入混淆处理。虽然本so与libsecexe.so的保护方式几乎一样(采用同样技术的重复的图就不截了)。初步分析后,发现它仍然有一些自己的独特之处。(1)无JNI_load函数,说明该so为纯被调用者。被java或其他so调用。自身不会去主动调用java相关代码,如:jar包,dex文件等。(2)新增混淆IDA解析能力,伪造了一批函数。比如:把入口函数.init_proc的代码放在另一个函数内部(对于elf文件来说关心的定位并不受影响,程序仍可以正
8、确执行)。且此类保护技术在该so中很多。本人尚未进行更进一步的研究。图13可见B6EAA000是真正的入口点,因为隐藏在另一个函数内,IDA无法按照单一独立函数进行解析(且母函数本身也不一定合法),导致解析能力明显偏弱,很多东西无法正确解析,静态环
此文档下载收益归作者所有