360加固之libjiagu.so dump修复

原创 2015年11月20日 13:49:41

一、elfheader修复

dump出来的内存如下图所示,elf header结构有缺失

下面是正常elf头的对比图

下面是010editor对正常elf header的解析

    由上图可知,dump出来的elf header除了e_phoff、e_phentsize、e_phum三个值,其它都为0。

   不过这里缺失的,除了e_shoff, e_shnum, e_shtrndx三个是变量,其它都是固定值。而实际上e_shoff, e_shnum, e_shtrndx这三个值在dlopen时并没有用到,全部填0,也可以正常使用。

   那么这里elf header把固定值填上,e_shoff, e_shnum, e_shtrndx三个值留空,elf header就修复好了。

   elf header修复完成后的dump就跟一个so经过dlopen后,dump出来的内存是一样的了。但是这样的dump是不能直接加载的,很多情况下用IDA分析也会缺失导入函数的解析。

 

二、so及其dump差异分析

    为了修复这个dump出来的so,我们写一个so来做个测试。

将测试so加载后,dump出来进行加载前后的对比


    后面一大块数据不一样。首先有个问题就是内存里的对齐跟文件是有差异的。

    看下elf Loadable Segment


    可以发现第二个Loadable Segmentp_offsetp_vadder是一样的,相差了0x1000,dump出来的内存在这个位置会比file0x1000

 

   Dynamic Segment同样存在这样的差异。

三、so dump修复

   由于dump的数据是跟内存加载后是一致的,把上面两个Segment里的p_offset都改成跟p_vaddr一样的值。

   完成这样的修改后,IDA就可以正常解析导入函数了,因为IDA对导入函数的解析依赖于Dynamic Segment里的数据。

   如果要能让dump能正常被dlopen起来,还需要继续对重定位数据进行修复

下面是DynamicSegmentrel对应的数据


可知rel对应的数据开始于0x6aa8,大小为0xf30


0x6aa8指向的elf32_rel结构体数组

typedef structelf32_rel {
       Elf32_Addr   r_offset;
       Elf32_Word  r_info;
} Elf32_Rel;

r_offset指向的地址会被重定位

下图是原始so的数据:


下图是dump内经过重定位的数据:


    可以发现dump里的数据被加上了so的加载基址,修复的时候,减去基址就可以恢复原始数据

    除了rel还有plt_rel需要修复,修复方法跟rel一样

    由于relplt_rel需要修复的数据量比较大,手动修复不太现实,需要编写个工具来完成这样的修复。可以把dlopen里的源码扣出来做一些修改完成这样的操作。

    下面是两张IDA分析的截图:




    修复后的so,跟普通so已经没什么区别了,导入函数和字符串暴露无遗。居然没有对字符串做加密,这样给分析者带来很大方便,对于加固核心so来说有点太依赖so加固了。

  (创建了一个Android逆向分析群,欢迎有兴趣的同学加入,群号码:376745720)

360加固之libjiagu.so脱壳及dex dump

360加固后的apk,在arm设备上首先会将assets目录下的libjiagu.so拷贝到files目录下,然后通过libjiagu.so动态加载原始dex        libjiagu.so...
  • justFWD
  • justFWD
  • 2015年11月17日 13:57
  • 13584

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

转:http://blog.csdn.net/qq_21051503/article/details/51322505 Android相比iOS,安全问题往往比较突出,各种漏洞和破解层出不穷...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2017年05月06日 00:41
  • 1225

360二代加固脱壳方法总结

二代加固的难度有所增加,最明显的地方就是qihoo下面增加了一个Configuration.smali文件。由以前的一个增加为两个。 脱壳时有几个关键的so: 1.libc.so(主要是提供一些系统函...
  • feibabeibei_beibei
  • feibabeibei_beibei
  • 2017年05月29日 20:24
  • 4128

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

http://blog.csdn.net/qq_21051503/article/details/51322505 Android相比iOS,安全问题往往比较突出,各种漏洞和破解层出不穷。对破解...
  • oMingZi12345678
  • oMingZi12345678
  • 2016年07月05日 11:55
  • 14085

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

Android相比iOS,安全问题往往比较突出,各种漏洞和破解层出不穷。对破解方法的了解,能在开发中进行预防,加强应用的安全性。本系列文章会对Android应用的破解和保护两方面做个探讨,给开发的同学...
  • qq_21051503
  • qq_21051503
  • 2016年05月05日 14:16
  • 16638

Android常见App加固厂商脱壳方法的整理

目录 简述(脱壳前学习的知识、壳的历史、脱壳方法)第一代壳第二代壳第三代壳第N代壳 简述 Apk文件结构Dex文件结构壳史壳的识别 Apk文件结构 Dex文件结构...
  • QQ1084283172
  • QQ1084283172
  • 2016年12月11日 12:29
  • 5894

Android常见App加固厂商脱壳方法的整理

目录 简述(脱壳前学习的知识、壳的历史、脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结构 壳史 壳的识别 Apk文件结构 Dex文件结构 ...
  • mergerly
  • mergerly
  • 2017年03月14日 16:50
  • 4128

xxx加固 之 动态脱壳

http://www.52pojie.cn/thread-435746-1-1.html 0x1 对比 上传demo进行加固,解包后对比下原包和加固包,...
  • oMingZi12345678
  • oMingZi12345678
  • 2016年07月06日 11:21
  • 1195

Apk脱壳之—脱掉“360加固”的壳

一、前言 现在主流的加固平台有:梆梆加固,爱加密,360加固,腾讯加固,在之前的一篇文章中介绍了:如何脱掉“爱加密”的壳,现在这里要脱掉另外一个平台的壳:360加固,因为有了之前的脱壳经验,很多...
  • ab6326795
  • ab6326795
  • 2016年07月12日 14:39
  • 2736

360加固动态脱壳

转:http://www.cnblogs.com/dacainiao/p/5139969.html ①. 运行IDA服务端并端口转发 ②. 以调试方式启动app adb shell a...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2016年08月06日 19:43
  • 5833
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:360加固之libjiagu.so dump修复
举报原因:
原因补充:

(最多只允许输入30个字)