Android ELF 文件加壳
作者:FloatingGuy 转载请注明出处:https://floatingguy.github.io/
测试,给 ELF 可执行文件的 特定section 加密。。。
目前需要对 某个工具做加密处理,但是没有发现公开的可以对 elf 可执行文件加壳的本地工具。于是参照网上 的文章修改了一个自己的加固工具,非常的菜-入门级的。
参考文章:
SO加固系列之理解ELF格式
SO加固系列之加壳原理及Python实现
SO加固系列之运行时解密
第一版 ELF 可执行文件加密
修改的地方
不能再用 head 中的 e_entry 和 e_shoff 保存加密段的长度和偏移信息了。因为 可执行文件的加载时会跳到这个入口地址去执行。
尝试了 head 中的几个字段发现都不能被修改。于是最快的办法就是 手动测试 偏移地址和 size ,然后在解密代码中 硬编码 偏移量和 size(这个方法很愚蠢)。
具体对 文章代码做的修改:
1.手动 修改 源码,中 【1】mAddr, 【2】size, 【3】name / maps 中的 app name/
修改 mAddr 和 size 是需要借助010 工具,对比 patch 前后的二进制文件。
每次修改代码都要重修 上面的几个地方
- 手动 修改 加固脚本 中 【1】文件名, 【2】自定义段名1234567so-encrypt.py 文件if __name__ == "__main__":df = SO("libs/armeabi-v7a/xxx") #patch1df.EncrySection("strings") #patch2df.Close()
###Todo List
内容 | 完成情况 |
---|---|
1. 优化代码,提高自动化 | |
2. 添加反调试代码 |