首页 > 其他分享 >自实现linker加固so防dump

自实现linker加固so防dump

时间:2023-02-12 13:55:06浏览次数:42  
标签:dump linker dynamic dyn so rel 节区

对于自定义linker加固so而言,为了防止整体dump并对修复重定位表的脱壳方式(upx的脱壳),可以将一些重要的结构信息在内存中进行抹去和移动。

抹去

ELF文件头再so文件加载后就不需要使用了,所以可以在加载完so文件后直接将其抹去。

.rel.plt/.rela.plt.rel.dyn/.rela.dyn重定位表在对so文件进行连接和重定位后也不需要使用了可以抹去。

移动

对于一些在加载和链接重定位so文件之后还需要使用的结构可以将他们移动到其他位置。例如程序头表program header table,动态链接节区.dynamic,符号表 .dynsym,字符串表 .dynstr

移动时需要修复对应的虚拟地址偏移信息,符号表 .dynsym,字符串表 .dynstr的虚拟地址偏移信息保存动态链接节区.dynamic中,而动态链接节区.dynamic的虚拟地址偏移信息保存在程序头表program header table。同时还需要修复这些结构在soinfo结构体中对应的虚拟地址,这样再通过linker程序与so进行交互的时候才可以索引到正确的结构。

通过抹去elf文件头和重定位表.rel.plt/.rela.plt .rel.dyn/.rela.dyn。移动程序头表program header table,动态链接节区.dynamic,符号表 .dynsym,字符串表 .dynstr可以防止整体dump并修复so的脱壳行为,但是依然可以通过分段dump并组合成一个完整的elf文件进行脱壳,所以可以增加一些反调试的手段增加分析难度。

以上均为个人观点,仅供参考。

标签:dump,linker,dynamic,dyn,so,rel,节区
From: https://www.cnblogs.com/revercc/p/17113730.html

相关文章