Среда, 26.07.2017, 01:45 Приветствую вас Гость | Группа "Гости" 


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Neo, xXxSh@dowxXx 
delfcode » Обсуждения » Остальные языки программирования » [C++] Скопировать функцию в массив (Скопировать функцию в массив)
[C++] Скопировать функцию в массив
NeoДата: Вторник, 03.09.2013, 17:20 | Сообщение # 1
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 316
Статус: 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
Группа: Модераторы
Сообщений: 316
Статус: Offline
Проблема оказалась в том,что компилятор C++ все заголовки функций складывает в ряд.А когда в коде такая функция вызываются,то прога джампает на заголовок в котором есть 0xE9 XX XX XX XX (ХХ ХХ ХХ ХХ - адрес самой функции),то есть прыжок на исполнение функции.Я не знаю,зачем так сделали,но это я выяснил из отладчика...Для того,чтобы при вызове функции переходил джамп сразу на функцию(не на другой джамп), нужно при объявлении функции писать inline.Вот что я выяснил))))
 
AntsolsДата: Вторник, 14.01.2014, 16:26 | Сообщение # 3
Был не раз
Зарегистрирован: 08.01.2014
Группа: Пользователи
Сообщений: 16
Статус: Offline
красавчик и помощь не понадобилась=) biggrin
 
delfcode » Обсуждения » Остальные языки программирования » [C++] Скопировать функцию в массив (Скопировать функцию в массив)
Страница 1 из 11
Поиск:

delfcode.ru © 2008 - 2017 Хостинг от uCoz