Android分析破解-秒脱360加固大法

Android相比iOS,安全问题往往比较突出,各种漏洞和破解层出不穷。对破解方法的了解,能在开发中进行预防,加强应用的安全性。本系列文章会对Android应用的破解和保护两方面做个探讨,给开发的同学一些借鉴。Andoid开发的同学可能会遇到需要做竞品分析的情况,APK加固常常会成为分析的障碍。360渠道做为Android应用分发的最大渠道,很多apk都使用了360加固。本文就来聊聊如何过掉这个坑。360加固后的apk,在arm设备上首先会将assets目录下的libjiagu.so拷贝到files目录下,然后通过libjiagu.so动态解密并加载原始dex

要对apk脱壳,首先要分析libjiagu.so实现。而该so做了二进制加壳。那么现在首先要做的事就是先把so的壳给脱了。通过010Editor查看libjiagu.so结构可知,其init_proc和init_array都无实质功能,真正的解密放在JNI_OnLoad里面。

JNI_OnLoad函数里有非常多的垃圾跳转指令干扰分析,后面还会有动态解密的函数运行,如果检测到调试器,会把动态函数置成非法代码,使程序CRASH

1b0c404这个位置就会跑飞。这样分析比较累人。换个思路,对一些关键函数进行hook,进行hook log分析Hook dlopen和dlsym LOG打印出libjiagu.so的加载基址和大小

可以看到JNI_OnLoad的地址还是在libjiasu.so内存范围内的

Hook RegisterNatives函数,打印如下LOG

这个LOG可以看到RegisterNatives有被调用,注册了一个interface7函数,函数地址是51e2f211,仔细看这个地址发现,这个地址已经是thumb指令集了,跟libjiagu.so使用的arm指令集不太相符,而且可以看到函数地址已经超出了libjiagu.so内存范围了.libjiagu.so的基址是51b3b000,大小是46000,最大内存地址是51B81000那么,基本可以确定,它在内存中加载了另一个so从/proc/%pid%/maps里找到函数地址所在的内存块,把周围连续的内存一起dump出来在这片内存里找到如下一块内存

这其实就是elf heaer了,不过一些elf结构信息已经被抹掉了。除了基本的结构信息还缺失如下三个数据:0x20 e_shoff0x30 e_shnum0x32 e_shtrndx接下来的工作就是对这个残缺的内存进行修复了,通过分析上面三个数据,dlopen其实都没有用到,其值对elf运行没有影响。经过修复后的文件可以替换掉原来的libjiagu.so,重新签名后使apk正常运行,用于IDA动态调试分析。下面是经过修复后的libjiagu.so用ida分析的流程图片段

360在dex加载的时候,并没有调用dvmDexFileOpenPartial,而是自实现了此函数的功能,因此直接在这个函数上下断点是不能脱壳的。它的实现方式基本是照抄了bionic源码

如上面源码所示,使用dex所在内存的时候都会使用memcmp校验MAGIC是否为dex,所以只要hook memcmp,然后在过滤函数里校验是否为dex,然后dump出来即是原始的dex。把hook框架搭好,实现如下的memcmp过滤函数,就可自动将原始dex dump下来。

前面的都搞定后,整个脱壳过程就可以自动化了。APK启动瞬间即会自动脱壳。点击启动APK,会输出如下LOG

LOG里的第3个dmp即为原始dex,已经自动写入到指定目录。

该脱壳器可应用于目前所有360加固,只需指定APK包名即可在启动时秒脱

时间: 2024-10-07 18:05:01

Android分析破解-秒脱360加固大法的相关文章

Apk脱壳圣战之---脱掉“360加固”的壳

一.前言 现在主流的加固平台有:梆梆加固,爱加密,360加固,腾讯加固,在之前的一篇文章中介绍了:如何脱掉"爱加密"的壳,现在这里要脱掉另外一个平台的壳:360加固,因为有了之前的脱壳经验,很多基础知识和准备工作这里就不详细介绍了,为了能够脱掉他家的壳,用一个案例来去360平台进行加固,然后进行脱壳.下面就来开始脱壳: 二.分析360加固的原理 首先拿到加固之后的apk,这里为了方便查看内部信息,先不用dex2jar+jd-gui工具进行分析了,直接使用我们之前分析了源码的一个工具:J

Android动态方式破解apk终极篇(加固apk破解方式)

一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应对Android中一些加固apk安全防护,在之前的两篇破解文章中,我们可以看到一个是针对于Java层的破解,一个是针对于native层的破解,还没有涉及到apk的加固,那么今天就要来介绍一下如何应对现在市场中一些加固的apk的破解之道,现在市场中加固apk的方式一般就是两种:一种是对源apk整体做一

Android逆向之旅---动态方式破解apk终极篇(加固apk破解方式)

一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应对Android中一些加固apk安全防护,在之前的两篇破解文章中,我们可以看到一个是针对于Java层的破解,一个是针对于native层的破解,还没有涉及到apk的加固,那么今天就要来介绍一下如何应对现在市场中一些加固的apk的破解之道,现在市场中加固apk的方式一般就是两种:一种是对源apk整体做一

Android基于jenkins全自动构建打包---------Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)

Android打包喝咖啡系列(Windows版) 这篇博客主要讲述的内容: 1.windows上部署Jenkins https://jenkins.io 2.基于SVN或Git https://github.com/Codetroupe/JenKinsTestAPP 3.Android项目参数化自动构建 4.自动将APK上传至蒲公英 https://www.pgyer.com   5.自动发Email到指定邮箱提示构建结果 6.自动本地360插件加固apk包http://jiagu.360.cn

360加固保 安全防护 多渠道打包

官网:http://jiagu.360.cn/ 功能还是比较多的,这里仅摘录最常用的部分. 介绍 加固保介绍        加固保是为移动应用安全提供专业保护的平台,盗版App通常是将正版App进行破解.篡改后重新打包生成的应用.如果手机APP能够具备防反编译.防反破解能力,就可以有效的防止App被盗版.        360加固保专为开发者的应用提供免费安全加固服务,独创了多重防护方式,对应用程序深度加密处理:独有的程序文字信息加密功能,能有效防止应用被反编译和恶意篡改,保护应用不被二次打包,

柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布

柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布 由于JAVA和Android的平台型,所以APP很容易被反编译,这对于我们开发者来说,是一个不想要的结果,对于用户来说,就是一个噩耗,而安全性,一直是我们关注的焦点,今天,我们来聊聊这个安全性,和一起玩玩Apk加固! 一.我们为什么要提高APP的安全性 手机已经是不会离开身边了,APP更是重中之重的环节,我们衣食住行,基本上大部分都是靠APP来完成的,这样的话,APP的安全就是一个很大的挑战了,

Android -- 桌面悬浮,仿360

实现原理                                                                               这种桌面悬浮窗的效果很类似与Widget,但是它比Widget要灵活的多.主要是通过WindowManager这个类来实现的,调用这个类的addView方法用于添加一个悬浮窗,updateViewLayout方法用于更新悬浮窗的参数,removeView用于移除悬浮窗.其中悬浮窗的参数有必要详细说明一下. WindowManager

【转】Android 防破解技术简介

http://www.cnblogs.com/likeandroid/p/4888808.html Android 防破解技术简介 这几年随着互联网的不断发展,Android App 也越来越多!但是随之而来的问题也越来越多,这其中比较令人头疼的问题就是:有些不法分子利用反编译技术破解 App,修改代码,之后再重新编译上传到应用商店!到时候,如果用户下载了这些应用,就可能造成个人信息或者金钱的丢失!所以,作为开发者的我们,有必要学习一些防止被破解的技术手段了! 简介 现在想要破解一个 App,

Android自定义控件,轻松实现360软件详情页

Android自定义控件,轻松实现360软件详情页在海军陆战队服役超过 10 年后,我于去年 7 月份退役了.随后在 8 月份找到了一份赌场的工作做公关,到今年 2 月中旬的时候又被辞退了.到 5 月中旬的时候我在 DE 协会找到了一份临时的"初级用户体验工程师"工作,而到了 8 月底我则成了正式的"用户体验工程师". 当我丢掉赌场的那份工作时,我就在想公关这行可能真的不适合我.我想做一名程序员.于是我开始节衣缩食学习编程.家人对我的情况非常担心.从 2 月份到 5