Neo
|
Дата: Вторник, 03.09.2013, 17:20 | Сообщение # 1
|
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
|
Всем привет,тут такая тема возникла,вообще для осуществления инжекторов,нужно получить в машинных кодах процедуру,которая будет внедряться.Пробовал таким образом:
Код
static void APIENTRY THREAD()
{
__asm
{
nop;
nop;
nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
};
char A[] = "aaaaa";
memset(A,0x90,sizeof(A));
MessageBoxA(0,"ggggggg",":g",1);
}
DWORD SafeBuf(IN LPSTR fname,IN LPVOID buf,IN int size)
{
DWORD nw = 0;
HANDLE f1 = CreateFileA(fname,GENERIC_ALL,FILE_SHARE_WRITE,0,CREATE_ALWAYS,0,0);
WriteFile(f1,buf,512,&nw,0);
CloseHandle(f1);
return nw;
}
void ProcToArray(LPVOID ProcAddr)
{
BYTE mas[100];
BYTE epilog[5] = {0x8B,0xE5,0x5D,0xC3};
memset(mas,0,sizeof(mas));
void (APIENTRY *functionPtr)();
functionPtr = &THREAD;
memcpy(mas,functionPtr,sizeof(mas));
SafeBuf("file.bin",mas,sizeof(mas));
Но сохраняется только эпилог,а нопов я не вижу.В чём может быть проблема?
|
|
|
|
Neo
|
Дата: Вторник, 14.01.2014, 08:24 | Сообщение # 2
|
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
|
Проблема оказалась в том,что компилятор C++ все заголовки функций складывает в ряд.А когда в коде такая функция вызываются,то прога джампает на заголовок в котором есть 0xE9 XX XX XX XX (ХХ ХХ ХХ ХХ - адрес самой функции),то есть прыжок на исполнение функции.Я не знаю,зачем так сделали,но это я выяснил из отладчика...Для того,чтобы при вызове функции переходил джамп сразу на функцию(не на другой джамп), нужно при объявлении функции писать inline.Вот что я выяснил)))) |
|
|
|
Antsols
|
Дата: Вторник, 14.01.2014, 16:26 | Сообщение # 3
|
Был не раз
Зарегистрирован: 08.01.2014
Группа: Пользователи
Сообщений: 16
Статус: Offline
|
красавчик и помощь не понадобилась=)  |
|
|
|