码迷,mamicode.com
首页 > 其他好文 > 详细

360加固保动态脱壳

时间:2014-11-17 22:28:24      阅读:8122      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   使用   sp   文件   on   

测试环境:

调试器: IDA6.5

手机及系统版本:

bubuko.com,布布扣

 

.SO层脱壳

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

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

该函数为:

bubuko.com,布布扣

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

bubuko.com,布布扣

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

二:so如何脱壳?

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

bubuko.com,布布扣

bubuko.com,布布扣

R0为要修改的开始地址

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

bubuko.com,布布扣

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

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

解密前为:

bubuko.com,布布扣

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

bubuko.com,布布扣

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

DEX 内存dump

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

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

资料下载

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

360加固保动态脱壳

标签:style   blog   http   color   ar   使用   sp   文件   on   

原文地址:http://www.cnblogs.com/2014asm/p/4104456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!