Android Native So加壳技术总结

1 Android SO加壳要是对针对以下两点

1. 对elf文件加壳及针对so文件 
2. 对于在so加载,调用机制做特殊处理

2 加壳思路

简单 : 加密 + 拆解 + 混淆 
复杂 : StolenCode  在VM中进行

如果想要自己写一套加壳工具的话,第一步必须要了解elf文件结构,了解so库的加载机制,然后自己写套加壳工具  

解读 

其实so库就相当于android中library库,在android runtime时期被加载进来通过java层去调用,所要对elf文件加壳后还需要一些特殊的处理 。 

比如:
1。 在load so库以后,会将so中信息存储在一个全局的链表中,保证脱壳后的so文件可以被全局的链表访问到

2。android中so文件被java层调用有两种方式 : 
   1. registerNative注册
   2. 通过java命名规则命名
  
因此在加壳的时候必须要保证所有的库函数都能被掉用,剩下的就只需要通过过反调试(Anti tricks)的方法增加破解者耐心,最后耗死他,比如现在的我。

3  对于新人来说一定会有几个问题

 1  so中信息存储到全局的链表,链表在哪里?
 2  registerNative 注册又是在哪里 ? 

一定要深入详细的了解elf文件结构,了解so库的加载机制

你可能感兴趣的:(反编译)