Существует так много определений макросов, в комментарии говорится: «Эти макросы определяют общее использование nFixedSize
, nFixedSize16
, nModOffset
, nRelOffset
, nFlagBits
, pfCopy
». что это значит?
Я думаю, что это может быть набор инструкций процессора, поэтому я попытался найти некоторую информацию из архитектур Intel® 64 и IA-32
В Руководстве разработчика программного обеспечения я не нашел никакой информации о 0F
, 0F00
, 0F78
, 0FB8
и т. Д.
// nFlagBits flags.
enum {
DYNAMIC = 0x1u,
ADDRESS = 0x2u,
NOENLARGE = 0x4u,
RAX = 0x8u,
};
// ModR/M Flags
enum {
SIB = 0x10u,
RIP = 0x20u,
NOTSIB = 0x0fu,
};
// часть определений макросов, более подробная информация: https://github.com/microsoft/Detours/blob/master/src/disasm.cpp
#define ENTRY_CopyBytes1Address 5, 3, 0, 0, ADDRESS, &CDetourDis::CopyBytes
#define ENTRY_CopyBytes3Dynamic 3, 3, 0, 0, DYNAMIC, &CDetourDis::CopyBytes
#define ENTRY_CopyF2 ENTRY_DataIgnored &CDetourDis::CopyF2
#define ENTRY_CopyF3 ENTRY_DataIgnored &CDetourDis::CopyF3
#define ENTRY_Copy0F ENTRY_DataIgnored &CDetourDis::Copy0F
#define ENTRY_Copy0F78 ENTRY_DataIgnored &CDetourDis::Copy0F78
Я хочу знать, что это такое и для чего используется этот disasm.cpp
файл, особенно функция DetourCopyInstruction(PVOID pDst, PVOID *ppDstPool, PVOID pSrc, PVOID *ppTarget, LONG *plExtra)
?