zoukankan      html  css  js  c++  java
  • android apk壳

      壳对于有过pc端加解密经验的同学来说并不陌生,android世界中的壳也是相同的存在。看下图(exe = dex):

         

      概念清楚罗,我们就说下:壳最本质的功能就是实现加载器。你看加壳后,系统是先执行壳代码的。但我们想要的是执行原dex,可是系统此时是不会自动来执行的需要壳去将原dex加载到系统中。ok,壳就说到这里,看android apk壳:

      Android APK加壳技术方案【1】

      Android APK加壳技术方案【2】

      APK加壳【1】初步方案实现详解

      在看完上述的几篇文章后,相信对apk 壳应该有一定的了解(其实apk壳和pc端的都差不多,只是在处理不同的文件格式:dex和exe中会有差别;导致不同的加壳、解壳步骤。当然我们需要了解文件的格式,才能有的放矢哦)。来看下android apk加壳中处理方法:

      1 :编写解壳apk,得到壳的文件:UnShelldex;

      2:编写脚本或代码(你开心就好),对原dex进行encode变成encodeDex,并将其插入(这里有几种姿势哦,看你喜欢咯)到UnShelldex文件中;注意被修改后的UnShelldex必须要符合dex格式,否则android不执行艾(在上述的文章里就对修改后的UnShelldex的checksum、signature 和file_size值进行修正);

      解壳步骤:

      1 执行解壳apk的代码,decode endcodeDex为原来的dex;

      2 模拟android系统把dex装载,让其顺利执行;

      这里需要提及一点:壳绝对不能改变原来代码的执行流程;又不是hook,你改是算什么意思啊!apk壳的思路讲完啦,但这只是纸上谈兵,还有很多细节需要我们考虑。加壳的步骤没什么好考虑的,无非是跟文件格式打交道(当然你要做高精尖的encode是另说啦)。在解壳步骤里,decode也没什么好分析的(主要是跟encode对应,且每个人的处理方式也不一样);把dex装载才是关键,前面说了壳本质就是装载器。上面的文章的思路是在解壳过程中,调用dexclassloader把dex载入内存,dexclassloader需要dex文件路径,故decode后的dex直接存在目录下。(dalvik浅析三:类加载 ClassLoader)。什么!dex直接放在目录下,别人不是可以直接获取了吗,那加壳干什么啊。是不是觉得加壳然并卵。ok,那我不把dex提取出来放在目录下,直接在内存里装载:

      Android4.0内存Dex数据动态加载技术

      APK加壳【2】内存加载dex实现详解

       android4.0后有DalvikNativeFunc函数Dalvik_dalvik_system_DexFile_openDexFile_bytearray可以直接把dex对应的字节流装载到系统中(其中相关联到很多的知识点,已另写文章注释,看这里)。刚好我们在上面的解壳过程中不是得到dex嘛,这个时候不要再把dex存在目录下了,用Dalvik_dalvik_system_DexFile_openDexFile_bytearray加载。wow,别人不就看不到dex了嘛(真的看不到了嘛;看后续脱壳文章)。

       

      上面是apk加壳的一些基本概念,加壳的实质是反编译软件无法得到dex代码(即dex代码不会静态暴露)。一些加壳思路:

      1 java解密dex代码,难度系数不高

      2 C++解密dex代码,so加固+apk加壳

      3 不使用系统提供的加载dex方法,自己写效果佳

      加壳的基本知识就先到了,在后面脱壳中有新的知识点再补充上来。

    资料:

      1 Android APK加壳技术方案【1】

      2 Android APK加壳技术方案【2】

      3 APK加壳【1】初步方案实现详解

      4 Android4.0内存Dex数据动态加载技术

      5 APK加壳【2】内存加载dex实现详解

  • 相关阅读:
    安卓中期小作业
    安卓大作业UI预定搞
    实验3
    实验一总结
    实验8 SQLite数据库操作
    实验6 在应用程序中播放音频和视频
    实验4 颜色、字符串资源的使用
    实验四
    实验三
    实验二
  • 原文地址:https://www.cnblogs.com/vendanner/p/4813772.html
Copyright © 2011-2022 走看看