本文只讨论如何调试被加壳的ELF文件,包括调试中的技巧运用及调试过程中可能遇到的问题的解决方法,不包含如何还原加固的DEX本文将以某加壳程序和某加固为目标。一、ELF格式简介ELF全称:Executable and Linkable Format,是Linux下的一种 ...
本文只讨论如何调试被加壳的ELF文件,包括调试中的技巧运用及调试过程中可能遇到的问题的解决方法,不包含如何还原加固的DEX本文将以某加壳程序和某加固为目标。
一、ELF格式简介
ELF全称:Executable and Linkable Format,是Linux下的一种可执行文件格式。
此种文件格式和WINDOWS一样,常见分为两种类型:
1.可执行文件(Executable File),对应PE子类型:EXE
2.共享目标文件(Shared Object File),后缀名:.so,对应PE子类型:DLL
二、ELF文件加载大概流程
1.通过Section Header或者Program Header加载需要的镜像数据
和WINDOWS PE加载机制不同,ELF有些文件数据是不会加载到内存镜像中。
2.加载SO NEED LIB和SYM
类似PE的Import_table
3.执行重定位(如果有)
类似PE的Reloc_table
4.执行INIT_ARRAY段或者INIT段(如果有,数组中的地址不等于0xffffffff,0表示结束)
类似PE的TLS,已知的被加壳的ELF,壳代码都出现在这两个段里。
PE中的TLS也常常出现在壳中,例如Vmprotect, Execryptor等。
5.执行入口点代码(如果有)
所有的上述加载流程代码全部包含在linker.so里,可参看安卓源码或逆向linker.so
三、ARM CPU简介
原标题:浅谈被加壳ELF(即android的so文件)的调试
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。