type
fr_jmp = packed record
PuhsOp: byte;
PushArg: pointer;
RetOp: byte;
end;
OldCode = packed record
One: dword;
two: word;
end;
Перехват API
Знаю есть таблица импорта, хуки, но как это разлизовать
нет ни малейшего представления.
советую почитать статьи Ms-Rem'а по перехвату API. получишь общее представление о перехвате, посмотришь как это применять, примеры и т.д. вот ссылки:
Код:
А что такое packed в паскале, и как это перевести на С++?
Чем оно отличается от record и struct?
Использую CBuilder 6:confused:
там можно и без packed, просто не учитывай его. packed связано с выравниванием данных в record и быстротой доступа к данным: при packed доступ к данным медленнее, вроде бы так - вообще я packed никогда не пишу.
Логично, что pointer - void *, или все-таки byte (unsigned char) ?
вроде void *. вот статейки про перехват на си:
Вот еще статья по слежению за API, тоже полезно, перед тем как хватать:)
Код:
#pragma pack(push, 1)
struct jmp_far
{
BYTE instr_push;
DWORD arg;
BYTE instr_ret;
};
struct old_bytes
{
DWORD one;
WORD two;
};
.......
текст_моей_проги
.......
#pragma pack(pop)
//конец файла
struct jmp_far
{
BYTE instr_push;
DWORD arg;
BYTE instr_ret;
};
struct old_bytes
{
DWORD one;
WORD two;
};
.......
текст_моей_проги
.......
#pragma pack(pop)
//конец файла
А в Borland CBuilder это, насколько я понял, Data aligment : Byte В опциях проэкта