逆向学习笔记
1 2 3 4 5 6 7 8 9 10 11 |
CPU(Intel,x86)各主要寄存器的一般用途: EAX:存储器:用于执行计算,并用于存储函数的返回值。基本操作,如加,减,比较使用 这个通用寄存器 EBX:存储数据 ECX:计数器:常用于计数循环的次数。 EDX:数据 ESP:栈顶指针 EBP:基指针(常用来表示一个函数帧的底部) ESI:源操作数指针 EDI:目的地址指针 EIP:指令指针 |
1 2 3 4 5 6 7 8 9 10 11 |
CPU(Intel,x86)各主要寄存器的一般用途: EAX:存储器:用于执行计算,并用于存储函数的返回值。基本操作,如加,减,比较使用 这个通用寄存器 EBX:存储数据 ECX:计数器:常用于计数循环的次数。 EDX:数据 ESP:栈顶指针 EBP:基指针(常用来表示一个函数帧的底部) ESI:源操作数指针 EDI:目的地址指针 EIP:指令指针 |
本文章由Jack_Jia编写
原文章链接:http://blog.csdn.net/jiazhijun/article/details/8678399
一、什么是加壳?
加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。PC EXE文件加壳的过程如下:
二、加壳作用
加壳的程序可以有效阻止对程序的反汇编分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件破解。
三、Android Dex文件加壳原理
PC平台现在已存在大量的标准的加壳和解壳工具,但是Android作为新兴平台还未出现APK加壳工具。Android Dex文件大量使用引用给加壳带来了一定的难度,但是从理论上讲,Android APK加壳也是可行的。
在这个过程中,牵扯到三个角色:
1、加壳程序:加密源程序为解壳数据、组装解壳程序和解壳数据
2、解壳程序:解密解壳数据,并运行时通过DexClassLoader动态加载
3、源程序:需要加壳处理的被保护代码
阅读该文章,需要您对DEX文件结构有所了解,您可以通过以下网址了解相关信息:
http://blog.csdn.net/jiazhijun/article/details/8664778
根据解壳数据在解壳程序DEX文件中的不同分布,本文将提出两种Android Dex加壳的实现方案。