ok100fen 发表于 2010-10-21 13:02:25

TA,简单说一下LDasm.h这个头文件的用处

这个头文件的功能好像很强大
是不是就是你说的那个反汇编引擎?
谢谢

ok100fen 发表于 2010-10-21 13:03:23

#ifndef _LDASM_
#define _LDASM_

#ifdef __cplusplus
extern "C" {
#endif

unsigned long __fastcall SizeOfCode(void *Code, unsigned char **pOpcode);

unsigned long __fastcall SizeOfProc(void *Proc);

char __fastcall IsRelativeCmd(unsigned char *pOpcode);

#ifdef __cplusplus
}
#endif

#endif


#define OP_NONE         0x00
#define OP_MODRM          0x01
#define OP_DATA_I8      0x02
#define OP_DATA_I16       0x04
#define OP_DATA_I32       0x08
#define OP_DATA_PRE66_670x10
#define OP_WORD         0x20
#define OP_REL32          0x40


UCHAR OpcodeFlags =
{
        OP_MODRM,                      // 00
    OP_MODRM,                      // 01
    OP_MODRM,                      // 02
    OP_MODRM,                      // 03
    OP_DATA_I8,                  // 04
    OP_DATA_PRE66_67,            // 05
    OP_NONE,                     // 06
    OP_NONE,                     // 07
    OP_MODRM,                      // 08
    OP_MODRM,                      // 09
    OP_MODRM,                      // 0A
    OP_MODRM,                      // 0B
    OP_DATA_I8,                  // 0C
    OP_DATA_PRE66_67,            // 0D
    OP_NONE,                     // 0E
    OP_NONE,                     // 0F
    OP_MODRM,                      // 10
    OP_MODRM,                      // 11
    OP_MODRM,                      // 12
    OP_MODRM,                      // 13
    OP_DATA_I8,                  // 14
    OP_DATA_PRE66_67,            // 15
    OP_NONE,                     // 16
    OP_NONE,                     // 17
    OP_MODRM,                      // 18
    OP_MODRM,                      // 19
    OP_MODRM,                      // 1A
    OP_MODRM,                      // 1B
    OP_DATA_I8,                  // 1C
    OP_DATA_PRE66_67,            // 1D
    OP_NONE,                     // 1E
    OP_NONE,                     // 1F
    OP_MODRM,                      // 20
    OP_MODRM,                      // 21
    OP_MODRM,                      // 22
    OP_MODRM,                      // 23
    OP_DATA_I8,                  // 24
    OP_DATA_PRE66_67,            // 25
    OP_NONE,                     // 26
    OP_NONE,                     // 27
    OP_MODRM,                      // 28
    OP_MODRM,                      // 29
    OP_MODRM,                      // 2A
    OP_MODRM,                      // 2B
    OP_DATA_I8,                  // 2C
    OP_DATA_PRE66_67,            // 2D
    OP_NONE,                     // 2E
    OP_NONE,                     // 2F
    OP_MODRM,                      // 30
    OP_MODRM,                      // 31
    OP_MODRM,                      // 32
    OP_MODRM,                      // 33
    OP_DATA_I8,                  // 34
    OP_DATA_PRE66_67,            // 35
    OP_NONE,                     // 36
    OP_NONE,                     // 37
    OP_MODRM,                      // 38
    OP_MODRM,                      // 39
    OP_MODRM,                      // 3A
    OP_MODRM,                      // 3B
    OP_DATA_I8,                  // 3C
    OP_DATA_PRE66_67,            // 3D
    OP_NONE,                     // 3E
    OP_NONE,                     // 3F
    OP_NONE,                     // 40
    OP_NONE,                     // 41
    OP_NONE,                     // 42
    OP_NONE,                     // 43
    OP_NONE,                     // 44
    OP_NONE,                     // 45
    OP_NONE,                     // 46
    OP_NONE,                     // 47
    OP_NONE,                     // 48
    OP_NONE,                     // 49
    OP_NONE,                     // 4A
    OP_NONE,                     // 4B
    OP_NONE,                     // 4C
    OP_NONE,                     // 4D
    OP_NONE,                     // 4E
    OP_NONE,                     // 4F
    OP_NONE,                     // 50
    OP_NONE,                     // 51
    OP_NONE,                     // 52
    OP_NONE,                     // 53
    OP_NONE,                     // 54
    OP_NONE,                     // 55
    OP_NONE,                     // 56
    OP_NONE,                     // 57
    OP_NONE,                     // 58
    OP_NONE,                     // 59
    OP_NONE,                     // 5A
    OP_NONE,                     // 5B
    OP_NONE,                     // 5C
    OP_NONE,                     // 5D
    OP_NONE,                     // 5E
    OP_NONE,                     // 5F
    OP_NONE,                     // 60
    OP_NONE,                     // 61
    OP_MODRM,                      // 62
    OP_MODRM,                      // 63
    OP_NONE,                     // 64
    OP_NONE,                     // 65
    OP_NONE,                     // 66
    OP_NONE,                     // 67
    OP_DATA_PRE66_67,            // 68
    OP_MODRM | OP_DATA_PRE66_67,   // 69
    OP_DATA_I8,                  // 6A
    OP_MODRM | OP_DATA_I8,         // 6B
    OP_NONE,                     // 6C
    OP_NONE,                     // 6D
    OP_NONE,                     // 6E
    OP_NONE,                     // 6F
    OP_DATA_I8,                  // 70
    OP_DATA_I8,                  // 71
    OP_DATA_I8,                  // 72
    OP_DATA_I8,                  // 73
    OP_DATA_I8,                  // 74
    OP_DATA_I8,                  // 75
    OP_DATA_I8,                  // 76
    OP_DATA_I8,                  // 77
    OP_DATA_I8,                  // 78
    OP_DATA_I8,                  // 79
    OP_DATA_I8,                  // 7A
    OP_DATA_I8,                  // 7B
    OP_DATA_I8,                  // 7C
    OP_DATA_I8,                  // 7D
    OP_DATA_I8,                  // 7E
    OP_DATA_I8,                  // 7F
    OP_MODRM | OP_DATA_I8,         // 80
    OP_MODRM | OP_DATA_PRE66_67,   // 81
    OP_MODRM | OP_DATA_I8,         // 82
    OP_MODRM | OP_DATA_I8,         // 83
    OP_MODRM,                      // 84
    OP_MODRM,                      // 85
    OP_MODRM,                      // 86
    OP_MODRM,                      // 87
    OP_MODRM,                      // 88
    OP_MODRM,                      // 89
    OP_MODRM,                      // 8A
    OP_MODRM,                      // 8B
    OP_MODRM,                      // 8C
    OP_MODRM,                      // 8D
    OP_MODRM,                      // 8E
    OP_MODRM,                      // 8F
    OP_NONE,                     // 90
    OP_NONE,                     // 91
    OP_NONE,                     // 92
    OP_NONE,                     // 93
    OP_NONE,                     // 94
    OP_NONE,                     // 95
    OP_NONE,                     // 96
    OP_NONE,                     // 97
    OP_NONE,                     // 98
    OP_NONE,                     // 99
    OP_DATA_I16 | OP_DATA_PRE66_67,// 9A
    OP_NONE,                     // 9B
    OP_NONE,                     // 9C
    OP_NONE,                     // 9D
    OP_NONE,                     // 9E
    OP_NONE,                     // 9F
    OP_DATA_PRE66_67,            // A0
    OP_DATA_PRE66_67,            // A1
    OP_DATA_PRE66_67,            // A2
    OP_DATA_PRE66_67,            // A3
    OP_NONE,                     // A4
    OP_NONE,                     // A5
    OP_NONE,                     // A6
    OP_NONE,                     // A7
    OP_DATA_I8,                  // A8
    OP_DATA_PRE66_67,            // A9
    OP_NONE,                     // AA
    OP_NONE,                     // AB
    OP_NONE,                     // AC
    OP_NONE,                     // AD
    OP_NONE,                     // AE
    OP_NONE,                     // AF
    OP_DATA_I8,                  // B0
    OP_DATA_I8,                  // B1
    OP_DATA_I8,                  // B2
    OP_DATA_I8,                  // B3
    OP_DATA_I8,                  // B4
    OP_DATA_I8,                  // B5
    OP_DATA_I8,                  // B6
    OP_DATA_I8,                  // B7
    OP_DATA_PRE66_67,            // B8
    OP_DATA_PRE66_67,            // B9
    OP_DATA_PRE66_67,            // BA
    OP_DATA_PRE66_67,            // BB
    OP_DATA_PRE66_67,            // BC
    OP_DATA_PRE66_67,            // BD
    OP_DATA_PRE66_67,            // BE
    OP_DATA_PRE66_67,            // BF
    OP_MODRM | OP_DATA_I8,         // C0
    OP_MODRM | OP_DATA_I8,         // C1
    OP_DATA_I16,                   // C2
    OP_NONE,                     // C3
    OP_MODRM,                      // C4
    OP_MODRM,                      // C5
    OP_MODRM   | OP_DATA_I8,       // C6
    OP_MODRM   | OP_DATA_PRE66_67, // C7
    OP_DATA_I8 | OP_DATA_I16,      // C8
    OP_NONE,                     // C9
    OP_DATA_I16,                   // CA
    OP_NONE,                     // CB
    OP_NONE,                     // CC
    OP_DATA_I8,                  // CD
    OP_NONE,                     // CE
    OP_NONE,                     // CF
    OP_MODRM,                      // D0
    OP_MODRM,                      // D1
    OP_MODRM,                      // D2
    OP_MODRM,                      // D3
    OP_DATA_I8,                  // D4
    OP_DATA_I8,                  // D5
    OP_NONE,                     // D6
    OP_NONE,                     // D7
    OP_WORD,                     // D8
    OP_WORD,                     // D9
    OP_WORD,                     // DA
    OP_WORD,                     // DB
    OP_WORD,                     // DC
    OP_WORD,                     // DD
    OP_WORD,                     // DE
    OP_WORD,                     // DF
    OP_DATA_I8,                  // E0
    OP_DATA_I8,                  // E1
    OP_DATA_I8,                  // E2
    OP_DATA_I8,                  // E3
    OP_DATA_I8,                  // E4
    OP_DATA_I8,                  // E5
    OP_DATA_I8,                  // E6
    OP_DATA_I8,                  // E7
    OP_DATA_PRE66_67 | OP_REL32,   // E8
    OP_DATA_PRE66_67 | OP_REL32,   // E9
    OP_DATA_I16 | OP_DATA_PRE66_67,// EA
    OP_DATA_I8,                  // EB
    OP_NONE,                     // EC
    OP_NONE,                     // ED
    OP_NONE,                     // EE
    OP_NONE,                     // EF
    OP_NONE,                     // F0
    OP_NONE,                     // F1
    OP_NONE,                     // F2
    OP_NONE,                     // F3
    OP_NONE,                     // F4
    OP_NONE,                     // F5
    OP_MODRM,                      // F6
    OP_MODRM,                      // F7
    OP_NONE,                     // F8
    OP_NONE,                     // F9
    OP_NONE,                     // FA
    OP_NONE,                     // FB
    OP_NONE,                     // FC
    OP_NONE,                     // FD
    OP_MODRM,                      // FE
    OP_MODRM | OP_REL32            // FF
};


UCHAR OpcodeFlagsExt =
{
    OP_MODRM,                      // 00
    OP_MODRM,                      // 01
    OP_MODRM,                      // 02
    OP_MODRM,                      // 03
    OP_NONE,                     // 04
    OP_NONE,                     // 05
    OP_NONE,                     // 06
    OP_NONE,                     // 07
    OP_NONE,                     // 08
    OP_NONE,                     // 09
    OP_NONE,                     // 0A
    OP_NONE,                     // 0B
    OP_NONE,                     // 0C
    OP_MODRM,                      // 0D
    OP_NONE,                     // 0E
    OP_MODRM | OP_DATA_I8,         // 0F
    OP_MODRM,                      // 10
    OP_MODRM,                      // 11
    OP_MODRM,                      // 12
    OP_MODRM,                      // 13
    OP_MODRM,                      // 14
    OP_MODRM,                      // 15
    OP_MODRM,                      // 16
    OP_MODRM,                      // 17
    OP_MODRM,                      // 18
    OP_NONE,                     // 19
    OP_NONE,                     // 1A
    OP_NONE,                     // 1B
    OP_NONE,                     // 1C
    OP_NONE,                     // 1D
    OP_NONE,                     // 1E
    OP_NONE,                     // 1F
    OP_MODRM,                      // 20
    OP_MODRM,                      // 21
    OP_MODRM,                      // 22
    OP_MODRM,                      // 23
    OP_MODRM,                      // 24
    OP_NONE,                     // 25
    OP_MODRM,                      // 26
    OP_NONE,                     // 27
    OP_MODRM,                      // 28
    OP_MODRM,                      // 29
    OP_MODRM,                      // 2A
    OP_MODRM,                      // 2B
    OP_MODRM,                      // 2C
    OP_MODRM,                      // 2D
    OP_MODRM,                      // 2E
    OP_MODRM,                      // 2F
    OP_NONE,                     // 30
    OP_NONE,                     // 31
    OP_NONE,                     // 32
    OP_NONE,                     // 33
    OP_NONE,                     // 34
    OP_NONE,                     // 35
    OP_NONE,                     // 36
    OP_NONE,                     // 37
    OP_NONE,                     // 38
    OP_NONE,                     // 39
    OP_NONE,                     // 3A
    OP_NONE,                     // 3B
    OP_NONE,                     // 3C
    OP_NONE,                     // 3D
    OP_NONE,                     // 3E
    OP_NONE,                     // 3F
    OP_MODRM,                      // 40
    OP_MODRM,                      // 41
    OP_MODRM,                      // 42
    OP_MODRM,                      // 43
    OP_MODRM,                      // 44
    OP_MODRM,                      // 45

马大哈 发表于 2010-10-21 15:52:20

这个是干嘛用的?

ok100fen 发表于 2010-10-21 17:50:53

我理解:可能是解析指令用的

马大哈 发表于 2010-10-21 18:00:57

看起来里面的东西都是差不多一样的,会不会是占位用的过程.

以方便后面再填充?

Tesla.Angela 发表于 2010-10-22 10:41:14

这正是反汇编引擎,使用例子见我给你的call hook demo。

ok100fen 发表于 2010-10-22 11:56:12

解释一下这个参数的意义啊


unsigned long __fastcall SizeOfCode(void *Code, unsigned char **pOpcode);

Tesla.Angela 发表于 2010-10-22 14:20:06

回复 7# ok100fen


汗,你要我一言两语怎么解释,自己搜索一下嘛。
页: [1]
查看完整版本: TA,简单说一下LDasm.h这个头文件的用处