Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 03.11.2013, 21:42   #1
Новичок
 
Регистрация: 02.11.2013
Сообщений: 3
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
MickeyBlueEyes пока неопределено
По умолчанию Перехват engine

Всем хай) Тема уже эта заеженая, но уже 2 дня втыкаю и немогу втыкнуть)
Перехватываю "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkP acket@@@Z"
сплайсингом, перехват удаёттся, а дальше либо крит при логине, либо ошибка в игре с первого же раза.
Пишу орыгинальные 5 байт в структуру и следом за этими 5 байтами jmp near на орыгинальную функцию + 6, jmp nearы вроде как вычеслены правильно, я хз уже волосы рву, может ктото со светлой головой подскажет, собсно код вот:
PHP код:
#include <windows.h>
BYTE old[5];

DWORD dwProtect;

BYTE fptr;

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

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

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



void splice()
{
    
//MessageBox(0, "Hello from splice", "OK", MB_OK);
    
BYTE addr = (BYTE*)&org;
    
__asm
    
{
        
jmp addr
    
}
}

void Intercept(void)
{
    
struct jmp_near jmp;
    
    
MessageBox(0"Ready!?""OK"MB_OK);
    
    
fptr = (BYTE *)GetProcAddress(GetModuleHandle(TEXT("engine.dll")), "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z");
    
    
jmp.opcode 0xE9;
    
jmp.addr = (BYTE*)_CalculateDispacement(fptrsplice);
    
    
VirtualProtect(fptr5PAGE_EXECUTE_READWRITE, &dwProtect);
    
ReadProcessMemory(GetCurrentProcess(), (void*)fptr, (void*)&old[0], 50);
    
WriteProcessMemory(GetCurrentProcess(), (void*)fptr, (void*)&jmp50);
    
    
memcpy(org.oldold5);
    
org.jmp.opcode 0xE9;
    
org.jmp.addr = (BYTE*)_CalculateDispacement(&org.jmp, (fptr 6));

    
MessageBox(0"The end""OK"MB_OK);
}



BOOL APIENTRY DllMainHANDLE hModule
                       
DWORD  ul_reason_for_call
                       
LPVOID lpReserved
                     
)
{


switch (
ul_reason_for_call

    case 
DLL_PROCESS_ATTACH
    {
        
CreateThread(NULL0, (LPTHREAD_START_ROUTINE)InterceptNULLNULLNULL); 
    }
    break; 

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


    return 
TRUE;

Добавлено через 23 часа 18 минут
Всё вышло.

Последний раз редактировалось MickeyBlueEyes, 03.11.2013 в 21:42. Причина: Добавлено сообщение
MickeyBlueEyes вне форума   Ответить с цитированием
Старый 04.11.2013, 02:21   #2
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

а значение параметров функции можно получить подобным образом?
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 04.11.2013, 11:31   #3
Новичок
 
Регистрация: 02.11.2013
Сообщений: 3
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
MickeyBlueEyes пока неопределено
По умолчанию

Ну я предполагал что можно, выталкиванием из стека. Написал нормальные прототипы и меняю 5 байт назад потом выполняю ф-цию, и ошибка была в +6, нужно было +5.
MickeyBlueEyes вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!