基于对so中的section加密技术实现so加固
来源:互联网 发布:下载超大字体软件 编辑:程序博客网 时间:2024/06/01 23:43
一、技术原理
加密:
在之前的文章中我们介绍了so中的格式,那么对于找到一个section的base和size就可以对这段section进行加密了
解密:
这里的重点是什么时候去进行解密,对于一个so文件,我们load进程序之后,在运行程序之前我们可以从哪个时间点来突破?这里就需要一个知识点:
attribute((constructor));
该属性作用很简单,就是优先于main方法执行,类似于Java中的构造函数。
elf的.fini_array和.init_arry section需要注意。对于这两个section,其实就是用这个属性实现的函数存在这里。
共享目标通过动态结构中的 DT_INIT 和 DT_FINI 条目指定初始化/终止函数。通常 这些代码放在.init 和.fini 节区中。
这个知识点很重要,我们后面在进行动态调试so的时候,还会用到这个知识点,所以一定要理解。所以,在这里我们找到了解密的时机,就是自己定义一个解密函数,然后用上面的这个属性声明就可以了。
二、实现流程
第一、我们编写一个简单的native代码,这里我们需要做两件事:
1、将核心native函数定义在自己的一个section中;这里会用到这个属性:attribute((section (“.mytext”)));
2、编写我们的解密函数,用属性:attribute((constructor));声明。
第二、编写加密程序,在加密程序中我们需要做的是:
1、通过解析so文件,找到.mytext段的起始地址和大小,这里的思路是:
找到所有的Section,然后获取他的name字段,在结合String Section,遍历找到.mytext字段
2、找到.mytext段之后,然后进行加密,最后在写入到文件中。
注意:原来是先把解密程序写好并声明先于main执行;然后再对照解密程序进行加密。
三、技术实现
略
- 基于对so中的section加密技术实现so加固
- Android逆向之旅---基于对so中的section加密技术实现so加固
- Android逆向之旅---基于对so中的section加密技术实现so加固
- Android逆向之旅---基于对so中的section加密技术实现so加固
- 基于对so中的函数加密技术实现so加固
- Android逆向之旅---基于对so中的函数加密技术实现so加固
- 基于section加密的.so加固学习笔记
- 基于函数加密的.so加固学习笔记
- 对so进行section加密后,提示.dynamic section header was not found
- 加密SO文件中自定义的section
- 加密SO文件中自定义的section
- 加密SO文件中自定义的section
- Android So简单加固
- Android So简单加固
- Android中对Apk加固(加壳)续篇之---对Native层(so文件)进行加固
- Android SO文件保护加固——加密篇(一)
- Android SO文件保护加固——加密篇(二)
- Android SO文件保护加固——加密篇(一)
- 为什么zookeeper会导致磁盘IO高
- MySQL 中NULL和空值的区别
- vue 环境搭建异常
- mysql 5.6 5.7 my.cnf配置文件
- 阿里巴巴矢量图标库
- 基于对so中的section加密技术实现so加固
- photoview
- networkx的安装 egg文件的安装
- Linux搭建Java服务器环境-JDK安装
- VNC连接linux桌面
- 配置struts2的核心过滤器
- C++学习笔记(1)
- 1005继续3n+1猜想(Hash散列)
- 118/119. Pascal's Triangle/II