Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Dll inject

-

Скрипты и перехват пакетов

- Скрипты и перехват пакетов

Ответ
 
Опции темы
Старый 02.11.2013, 11:25   #1
 Разведчик
Аватар для MickeyBlueEyes
 
MickeyBlueEyes никому не известный тип
Регистрация: 16.10.2012
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Dll inject

Всем хай)
Тут пробую перехватить ?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPa cket@@@Z методом сплайсинга, затереть 5 байт получается, подтсавная ф-ция выполняется, а дальше вылетает с general protection, но если криво было и до этого что то сделать тоже был general protection.

Сам код dll, думаю кто что то подобное реализовывал, той прочтёт без проблем.

Цитата:

BYTE old[5];

DWORD dwProtect;

BYTE * fptr;

size_t _CalculateDispacement(void* lpFirst, void* lpSecond)
{
return reinterpret_cast<char*>(lpSecond) - (reinterpret_cast<char*>(lpFirst) + 5);
}


#pragma pack(push, 1)
struct jmp_near
{
BYTE opcode;
DWORD addr;
};
#pragma pack(pop)


#pragma pack(push, 1)
struct jmp_org
{
BYTE old[5];
struct jmp_near jmp;
};
#pragma pack(pop)

struct jmp_org org;

void splice()
{
MessageBox(0, "Hello from splice", "OK", MB_OK);

BYTE * go = (BYTE*)&org;

__asm
{
jmp go
}
}


void Intercept(void)
{

MessageBox(0, "Ready!?", "", MB_OK);

struct jmp_near jmp;

fptr = (BYTE *)GetProcAddress(GetModuleHandle(TEXT("engine.dll" )), "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkP acket@@@Z");

jmp.opcode = 0xE9;
jmp.addr = _CalculateDispacement(fptr, splice);

memcpy(old, fptr, 5);

VirtualProtect(fptr, 5, PAGE_EXECUTE_READWRITE, &dwProtect);
WriteProcessMemory(GetCurrentProcess(), (void*)fptr, (void*)&jmp, 5, 0);
VirtualProtect(fptr, 5, dwProtect, &dwProtect);

memcpy(org.old, old, 5);
org.jmp.opcode = 0xE9;
org.jmp.addr = (BYTE)fptr + 6;

MessageBox(0, "End", "OK", MB_OK);
}



BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{


switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Intercept, NULL, NULL, NULL);
}
break;

case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break;
case DLL_PROCESS_DETACH: break;
}

return TRUE;
}

Можно грубо и прямо в лицо, но косяк наверное где то в коде, раз подставная функция выполняется, а дальше не, буду благодарен за любые подсказки.

Последний раз редактировалось MickeyBlueEyes; 02.11.2013 в 11:54.
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
inject 7 x64? Rock*n*roll Общение и обсуждение, архив Point Blank 11 10.06.2012 14:34
[Информация] Apb inject Deestap Прочее 0 10.03.2012 17:32

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 11:12.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net