360加固保动态脱壳

测试环境:

调试器: IDA6.5

手机及系统版本:

.SO层脱壳

一:.如何到达壳入口点?

1.我是通过对dvmLoadNativeCode函数下断,分析它执行流程最后到达壳入口(如果您有更好的办法还请告知,感谢中...),函数dvmLoadNativeCode是执行加载so文件的操作。(2.3系统是这个名字),2.3以上系统被名称粉碎了,不过在2.3以上系统中可以在libdvm.so中搜索函数名也是可以找到的,(我当前系统函数名为:_Z17dvmLoadNativeCodePKcP6ObjectPPc)如下图所示:

2.对dvmLoadNativeCode函数进行下断有些小技巧,前后下断点,等壳执行完成后反回就断在这里,如下图所示:

3.跟进这libdvm.so:4087B900 BLX unk_4083F694 函数后,分析其流程就可以发现有so的加载基址为0x5B97C000,如下图:

4.得到so在内存中基址后就可以用ReadELF -a xx.so来查看so文件的INIT_ARRAY文件偏移,如下图执行 ReadELF -a libprotectClass.so 命令后

5.我们用IDA静态反编译libprotectClass.so文件,然后去0xfd98地址去看看,是一个函数地址,如下图

该函数为:

6.得到了libprotectClass.so在内存中基址与INIT_ARRAY文件偏移,将它们相加即可得到so壳入口了0x5B97EF5C,去内存中看看,如下图:

是不是与__gnu_armfini_26函数很像呢?然后我们在该函下个断点,F9执行以这儿就可以接着分析so壳代码了。

二:so如何脱壳?

1.到达壳入口后我们单步跟踪看看,到修改代码属性这里

R0为要修改的开始地址

2.准备解密代码,跟进该函数。

在该函数里做解密代码操作,首先是拷贝0xA长度的密钥,如下图,然后初始化密钥

3.从初始化密钥函数来看,应该使用的是RC4算法,接着就是解密了。

R0为要解密的Buffer, R1为Buffer的大小, R3为初始化后的密钥。

4.算法 密钥 都知道了,我们可以写个程序来解密so了,如下图解密前后JNI_OnLoad对比。

解密前为:

解密后为:(代码己正常)

到此可以静态分析了,其它的小伙伴们自己去玩吧(^_^), 解密算法RC4_so己放在附件中。

DEX 内存dump

1.接着上面so代码解密完成后,反回到这里, libdvm.so:4087B904 MOV   R1, R6

这时可以在JNI_OnLoad函数下断点了,如下图:

F9来到JNI_OnLoad函数,接着就是慢长的分析了。

详细的分析流程我就不细说了,想了解的现在可以自己动态与静态结合分析了,我们这次的目的是内存中dump完整的DEX。

到JNI_OnLoad函数后,到下面libprotectClass.so:5B88A22C BLX   R4下好断点。如下图

3.F9到这里后,F7跟进,然后在 mmap函数下断点, F9执行,当LR的地址为程序领空时反回下好断点(一定要是程序领空才有效,因为mmap会被多次调用),F9执行。

接下来R0将会存放解密后的Dex,然后F8走,直到该函数执行完成后,开始解密DEX开头0x70个字,解密完成后就可dump出来了,如下图:

到此完整的DEX己经出来了,下面我们Dump出来,打包反编译。

开始地址为0x5BC35000, 大小为0x005EDBA4, 结束地址为0x5C222BA4

4.将dump出来的dex重新打包并能成功反编,如下图:

5.到此整个过程就完成了,下面该做些什么小伙伴们自己发辉吧,我就不知道了。(^_^)。(样本就是上传了,想玩玩的去XX加固保官网下载去吧)

资料下载

http://yunpan.cn/cAFzDYcB6weWY (提取码:6e74)

时间: 2025-01-04 12:56:52

360加固保动态脱壳的相关文章

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

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

脱掉360奇虎的“加固保”壳后的发现与你的微信安全

(2014-4-23)网络牛人Kendiv揭掉了360奇虎的"加固保"的壳(脱壳器下载地址:http://vdisk.weibo.com/s/dhs5LV9q4FsZ/1398255331). 非常多网友 发现了奇虎360对微信攻击的可疑代码:

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

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

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

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

防止Android手游apk遭破解, 爱加密安卓App加固保安全!

现如今手机App的开发者无论是个人还是企业,在开发过程中,许多App应用开发商的技术不够成熟,因此在App中会留有漏洞.再加上有些市场对恶意App无法进行识别!导致许多垃圾的应用程序非常容易出现在用户的手机上,如果只是伤害手机系统,那问题还不那么严重.但是威胁到个人信息和财产安全,结果就损失惨重,所以提醒大家下载App应用时多注意点. 目前手游App很火,用户量很多,但是想找到一款免费的手游并不容易.很多手游要么就是一大堆植入的广告,要么就是挂着免费的幌子,下载后一打开还要收费的.而游戏本身的体

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

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

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

360加固动态脱壳

参考文章: http://www.52pojie.cn/thread-435746-1-1.html ①. 运行IDA服务端并端口转发 ②. 以调试方式启动app adb shell am start -D -n com.CMapp/com.e4a.runtime.android.StartActivity ③. 使用IDA远程附加 ④. 在libc.so中找到mmap函数设置断点,为了方便,直接设置到函数末尾了 ⑤. 打开ddms或者Eclipse (必要,为了使用jdb命令),获取应用程序的

360 so动态脱壳

环境及工具 手机    : 中兴 U887 系统版本:   Android 2.3.5 工具    :   IDA pro 6.6 .0101Editor 版权声明:未经许可,随便转载 目前so加壳有很多家,我己知的有 爱加密,梆梆,360, 娜迦等 各有所长.今天把学习360的脱壳笔记记录下来与小菜共同学习,没有其它目的,大神请绕道! 1.对加壳后的so进行反编译,代码不能正常显示,被加密了,如下图所示: 查看so的"INIT_ARRAY",指向了壳的入口, 如下图所示: 2.用ID