信息保存,当外壳程序执行完的时候,这些寄存器信息将被回复,同时源程序入口将被设置为真正的入口地址。
2) 解密原程序各个被加密的区。在加壳程序运行过程中,原程序的各个区都会被加密,这些加密后的区段完全失去了原来的信息结构,使得不仅不能被反编译,也无法被加载执行。在壳程序执行的过程中,壳程序根据加密规则,选用相应的解密算法对被加密的各个区在内存中进行解密,并且解密后的数据存放在原来的位置,这样在壳程序执行完成后,原程序己经在内存中被解密并恢复。内存中此时存储的是可被执行的程序源码。
3) 初始化IAT信息表。在程序正常执行的过程中,加载器实现对IAT的填写。在系统执行被加密的程序时,由于外壳程序会先被执行,则外壳程序在执行过程中会新建自己的IAT输入表,并且让加载器指向该新建的输入表。当外壳程序运行完后,外壳程序要修改原并填写原输入表,同时修改加载器的指向,使源程序被加载并执行。
4) 壳交出控制权。
Dex加密保护
Dex文件是对Java源码编译生成的全部class文件进行合并而产生的文件。 该文件主要包括文件头、魔术字段、检验码字段、SHA-1签名字段、map—off字段、stringjds—size/off字段等。文件头:文件头主要包括校验和以及其他结构的偏移地地和长度信息。
魔数字段:魔数字段是4字节的dex文件标识符,对dex文件进行标识是它的主要作用。
检验码字段:该字段主要用来对文件的完整性进行检测。
SHA-1签名字段:20字节码的该签名字段主要是为了实现校验的唯一性。
map_off字段:该字段中保存的是map的开始位置。通过该字段,可以方便快速的定位到map数据。
striiig_ids__size/off字段:这两个字段是字符串标识字段,源文件编译后的字符串信息都存储在这两个字段中。
安卓程序中采用RC4算法作为对dex文件进行加密的工程算法。RC4是Rob Rivest在1987年设计的密钢长度可变的流加密算法。它加解密使用相同的密钥,
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科Dex加壳解壳原理(3)全文阅读和word下载服务。
相关推荐: