#include <stdio.h>
#include <stdlib.h>

/* opcode jmp 
 * 
 * short opcode EB m8             2 bytes
 * near  opcode E9 m16/32         5 bytes
 * far   opcode EA ptr 16:16/32   7 bytes
 * 
 * short jmp :
 * 
 *  0xFE - 0xFF -> opcode ( word )
 *  
 *  add 0x00 - 0x7F min -> max
 *  sub 0x80 - 0xFD min -> max
 *  
 *  short jmp addressing Mode :
 *   add : des = eip + immed + 2
 *   sub : des = eip - 0xFE + immed 
 *   
 *  near jmp addressing Mode :
 *   add : des = eip + immed + 5
 *   sub : des = eip - 0xFB + immed 
 *  
 * reg jmp opcode FF
 * 
 * eax E0
 * ecx E1
 * edx E2
 * ebx E3
 * esp E4                                                         ______________ + eax : 24 01
 * ebp E5                                                        |               + ebx : 24 19
 * esi E6                                + eax :  24 03 ______   |               + ecx : 24 09
 * edi E7                                + ebx :  24 1B       |  |               + edx : 24 11
 *                                       + ecx :  24 0B       |  |               + esi : 24 31
 * seg reg jmp opcode                    + edx :  24 13       |  |               + edi : 24 39
 *                                       + esi :  24 33       |  |               + esp : 24 0C
 *                 ds : 3E               + edi :  24 3B       |  |               + ebp : 24 29
 *                 es : 26               + esp :  24 1C       |  |               + immed : 61 XX
 *                 cs : 2E               + ebp :  24 2B       |  |      
 *                 ss : 36               + immed : 63 XX      |  |     ____________ + eax : 24 02
 *                 fs : 64                                    |  |    |             + ebx : 24 1A
 *                 gs : 65   __                               |  |    |             + ecx : 24 0A
 *                             \                              |  |    |             + edx : 24 12
 *                             |                              |  |    |             + esi : 24 32
 *       +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |  |    |             + edi : 24 3A
 *                             XX FF XX (XX....)              |  |    |             + esp : 24 14
 *       +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |  |    |             + ebp : 24 2A
 *                                    |                       |  |    |             + immed : 62 XX
 *                                    |                       |  |    |               
 *                                    |                       |  |    |
 *   + eax :          _____           |                       |  |    |
 *   + ebx :               \          \__  eax : 20 __________|__|____|________________________
 *   + ecx :               |               ecx : 21 __________|__|    |                        \______   + eax : 24 00
 *   + edx :               |               edx : 22 __________|_______|                                  + ebx : 24 18
 *   + esi :               |               ebx : 23 __________|                                          + ecx : 24 08
 *   + edi :               |               esi : 26 ___________________________                          + edx : 24 10
 *   + esp :               \______________ edi : 27                            \__  + eax :              + esi : 24 30
 *   + ebp :                               esp : 24 24 ________                     + ebx :              + edi : 24 38
 *   + immed :                             ebp : 65 00         |                    + ecx :              + esp : 24 04
 *                                        /                    |                    + edx :              + ebp : 24 28
 *                                       /                     |                    + esi :              + immed : 60 XX 
 *                                      /                      |                    + edi :               
 *                                     /                       |                    + esp :
 *     + eax :           _____________/                        |                    + ebp :
 *     + ebx :                                        + eax :                       + immed :
 *     + ecx :                                        + ebx :
 *     + edx :                                        + ecx :
 *     + esi :                                        + edx :
 *     + edi :                                        + esi :
 *     + esp :                                        + edi :
 *     + ebp :                                        + esp :
 *	   + immed :                                      + ebp :
 *                                                    + immed :
 * 
 * stack mem jmp opcode FF 65
 * static mem jmp opcode FF 25
 * 
 * 
 * */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值