The invention discloses a memory loaded Dalvik byte code optimization based method, which comprises the following steps: 1, read to decrypt the encrypted DEX file after decompression, and extract the DEX file to decrypt the byte code stored to the stack memory; step 2, the openDexFile method uses reflection to call DexFile in step 1, parsing DEX file byte code to get a DexOrJar structure, the DexOrJar structure of the content is loaded into the userDexFile structure in gDvm hash table, DexOrJar structure pointer and finally return to store the DEX file information, denoted as cookie; step 3, the definition of local loadDex method, DEX file transfer byte array and byte size; step 4, rewrite the class loader loads the specified class, the invention in the read encrypted compressed DEX files, has been in memory using byte code form DEX file decryption, decompression, storage and loading, to a great extent protect the DEX file, and enhance the anti attack of APK after reinforcement.
【技术实现步骤摘要】
基于内存加载的dalvik字节码优化方法
本专利技术涉及移动终端应用安全领域,具体涉及基于内存加载的dalvik字节码优化方法。
技术介绍
据最新智能终端销量统计,中国的Android系统目前已占据移动端73%以上的市场份额,各种Android应用程序也在成级数式增长且涉及的业务越来越广,涵盖娱乐、支付、生活等各个领域。由于android平台软件使用的语言是JAVA,而JAVA源代码编译后的二进制代码极易被反编译,导致android应用程序易被黑客通过二次打包、篡改、恶意注入等手段进行恶意破坏。因此应用安全问题已经成为开发者/发布者/使用者关注的热点。目前市场上比较主流的应用软件加固措施可分为加壳和脱壳两个过程。其中,加壳技术主要是通过用一个新的classes.dex文件替换掉APP中的核心代码文件,将原dex文件通过加密技术处理,生成加密文件另行存储,最后修改应用配置文件,并加入对应解密算法库,形成加固后的APP安装包。加壳后APK中的dex文件便是壳dex。该方法可防止破解者还原真实代码逻辑。脱壳技术则是指程序在运行过程中将原APK的dex文件解密出来并加载到内存中,让该APK正常运行起来。APK的脱壳过程需要利用壳dex来完成。现有的脱壳方法多是通过AndroidAPI提供的DexClassLoader类加载原dex文件中的核心代码,并通过反射将Android默认的类加载器android.app.ActivityThread中的mClassLoader置换为为DexClassLoader,这样既保证加载了源程序又没有放弃原先加载的资源与系统代码。这种 ...
【技术保护点】
一种基于内存加载的dalvik字节码优化方法,其特征在于,它包括以下步骤:步骤1,读取加密的DEX文件进行解密解压,并将解密解压后的DEX文件以字节码的形式保存到栈内存中;步骤2,采用反射调用DexFile的openDexFile方法,解析步骤1中的DEX文件字节码得到一个DexOrJar结构体,将DexOrJar结构体的内容加载到gDvm中的userDexFile结构的hash表中,最后返回存储DEX文件信息的DexOrJar结构体指针,记为cookie值;步骤3,定义本地方法loadDex,传递DEX文件的字节数组和字节大小;步骤4,重写类加载器加载指定的类。
【技术特征摘要】
1.一种基于内存加载的dalvik字节码优化方法,其特征在于,它包括以下步骤:步骤1,读取加密的DEX文件进行解密解压,并将解密解压后的DEX文件以字节码的形式保存到栈内存中;步骤2,采用反射调用DexFile的openDexFile方法,解析步骤1中的DEX文件字节码得到一个DexOrJar结构体,将DexOrJar结构体的内容加载到gDvm中的userDexFile结构的hash表中,最后返回存储DEX文件信息的DexOrJar结构体指针,记为cookie值;步骤3,定义本地方法loadDex,传递DEX文件的字节数组和字节大小;步骤4,重写类加载器加载指定的类。2.根据权利要求1所述的基于内存加载的dalvik字节码优化方法,其特征在于,所述步骤1中是在java层调用本地方法对DEX文件进行解密解压。3.根据权利要求1所述的基于内存加载的dalvik字节码优化方法,其特征在于,所述步骤2具体包括:步骤2.1,采用dlopen函数打开动态链接库libdvm.so,返回一个句柄和符号;步骤2.2,采用dlsym函数根据步骤2.1中返回的句柄和符号,拿到动态链接库libdvm.so中内存加载DEX文件;步骤2.3,调用nativ...
【专利技术属性】
技术研发人员:翟栋,谭源泉,康红娟,邓密密,
申请(专利权)人:四川长虹电器股份有限公司,
类型:发明
国别省市:四川,51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。