浅谈被加壳ELF文件的DUMP修复

网站建设评论54

前面的文章中(http://www.freebuf.com/articles/system/67927.html),我已经介绍了如何调试被加壳的ELF,这里不在叙述,直接进入正题,以某加固为例,如何DUMP和修复被加壳的ELF,使其能调试加载。

加壳ELF头和Program Header

我们先来看看被加壳ELF的头和Program Header

浅谈被加壳ELF文件的DUMP修复-开水网络

浅谈被加壳ELF文件的DUMP修复-开水网络

首先我要让调试器停在入口点0×3860的位置

开始DUMP修复之旅,我的第一次DUMP修复的方法,延续了PE的思路,结果失败了

失败的原因并不是思路不对,而是细节上出现问题

第一次DUMP的方法:

1.废除不影响加载的section(直接把结构体填0),只关心PT_LOAD和PT_DYNAMIC两种类型节

2.计算DUMP文件最大值

align_up(0x28ca4, 0x8000) = 0x31000

3.将offset和va变成相等值,filesize和memsize按照align对齐

4.根据PT_LOAD节数据把数据DUMP出来,把DUMP数据放进文件里

那么根据上图描述数据,应该有两块儿

PT_LOAD : 0 ----align_up(0x12044, 0x8000) = 0 ----- 0x1B000PT_LOAD : align_down(0x28ca4,0x1000) = 0x28000 ---- align_up(0x28ca4, 0x8000) = 0x31000

因为安卓也是linux内核,内存页对齐粒度为4K(0×1000)

按照上述方法DUMP完,我们来看看IDA加载以后,JNI_ONLOAD的样子

浅谈被加壳ELF文件的DUMP修复-开水网络

看下红色的部分,奇怪了,本来应该有的代码去哪里了?? 0x221b0这个地址竟然无效,可是动态调试器中明明可以看到这段代码:

浅谈被加壳ELF文件的DUMP修复-开水网络

对照Program Header, 再看0x221b0这个地址,PT_LOAD节中并没有描述这个地址

所以,失败就是在这个地方,壳的代码里一定是mmap了这段内存,将解密后的数据,放进去,并修改了内存属性

通过跟踪壳代码,发现确实如此,壳代码通过svc 0,调用了mmap,mprotect两个函数

mmap(0x3000, 0x23710, 0x3, 0x32, 0xffffffff, 0x0)

map页属性:PROT_READ | PROT_WRITE

mprotect(0x3000, 0x23710, 0x5)

修改页属性:PROT_READ | PROT_EXEC

具体参数说明请参考帮助文档

这段区域起始地址:0x3000大小:align_up(0x23710, 0x1000) = 0x24000结束地址:0x3000 + 0x24000 = 0x27000

0x221b0这个地址正好在0×3000—0×27000这个范围里

通过上述过程,重新总结DUMP方法如下

1.废除不影响加载的section(直接把结构体填0),只关心PT_LOAD和PT_DYNAMIC两种类型节

2.计算DUMP文件最大值

align_up(0x28ca4, 0x8000) = 0x31000

3.只保留一个PT_LOAD节,从0到0×31000

将整块儿数据DUMP下来直接写入文件,修改align为0×1000,修改flag为RWE

4.修改PT_DYNAMIC节的offset,和VA相等

修复完的节表如下:

浅谈被加壳ELF文件的DUMP修复-开水网络

干掉INIT段或者INIT_ARRAY段

最后一个注意的地方,就是干掉INIT段或者是INIT_ARRAY段

干掉INIT方法:定位INIT描述的数据偏移,将偏移+8的数据,前移8个字节

干掉INIT_ARRAY方法:定位到VA处,按照结构,将数据填充为0xffffffff或者0

看下图,INIT段已经不存在了

浅谈被加壳ELF文件的DUMP修复-开水网络

我们来打开IDA,加载修复的文件,看看效果:

浅谈被加壳ELF文件的DUMP修复-开水网络

浅谈被加壳ELF文件的DUMP修复-开水网络

数据完整,再看看动态加载的效果

浅谈被加壳ELF文件的DUMP修复-开水网络

加载成功~~~

哈哈,至此,修复完成

* 作者/腾讯电脑管家(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

该文章由WP-AutoPost插件自动采集发布

原文地址:http://bluereader.org/article/48010859

 
通过旁注渗透拿下F国司法部 网站建设

通过旁注渗透拿下F国司法部

首先看了一下网站,没看出是什么程序写的,也没发现值得深入下手的地方。于是便旁注了,很快,拿到了一个旁站的shell。这才发现,服务器支持asp,aspx,php,但是限制很多。简单试了下没提权成功。反...
中小企业网站建设需要注意的八大事项 网站建设

中小企业网站建设需要注意的八大事项

  虽然现在企业进行业务还是通过传统的形式进行,但是想要通过互联网来拓展业务的企业也不在少数,可以说这是信息时代的一个大趋势。那么对于很多中小企业网站建设来说,怎样才能让网站起到理想的效果呢?下面联为...
网站建设

三星手机远程代码执行漏洞分析

摘要远程攻击者完全有能力控制用户网络流量,操纵三星手机的键盘更新机制,并且在目标手机上使用系统用户权限执行代码。在三星设备中预装的快速键盘,无法禁用也无法卸载。即使这个快速键盘并非用户默认使用,攻击者...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: