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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 03.10.2013, 16:06   #1
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

Цитата:
Сообщение от goodvin1709 Посмотреть сообщение
В каком это смысле?В параметре приходит L2ParamStack
Я от туда извлекаю то что мне нужно т.е данные.
потом создаю чистый L2ParamStack
Засовываю туда данные,и отправляю на сервер вызовом оригинальной функции.
Вот только данные вставить нормально не могу(
...
Но блин откуда взять
1.UnetworkHandler,нужен он вобще или нет?
2.Как правильно запихнуть данные и отправить?
зачем пользоваться глючным стеком? оО
можно проще. например(с++):
Код:
void __cdecl ReqvMagicSkillUse(int Skill,int Ctrl,int Shift)
{
 char *mask = "cddc";
 asm
 {
  mov ECX,[UNetHandler] //UnetworkHandler
  mov EDI,ECX
  mov ECX,DWORD PTR DS:[EDI+0x48]
  mov EDX,DWORD PTR DS:[ECX]
  push Shift
  push Ctrl
  push Skill
  push 0x39
  push mask
  push ECX
  CALL [EDX+0x6c]
  add esp,0x18
 }
}
CALL [EDX+0x6c] - по сути вызов сенда в engine.dll - и его можно заменить на хардкод.

UnetworkHandler - нужен!
получить его несложно.
Код:
void __cdecl UNetworkHandlerInit_hook()
{
 asm
   {
    mov dword [UNetHandler],ecx  //он лежит в ecx, копируем
    MOV EAX,DWORD PTR FS:[0]   //
    jmp DWORD PTR initUH_orig 
   }
}
Код:
  HMODULE hEngine = LoadLibraryA("Engine.dll");
  (FARPROC&) initUH_addr = GetProcAddress(hEngine, "?Init@UNetworkHandler@@UAEXHPAVUGameEngine@@@Z");
  
  initUH_orig = initUH_addr + 6;
  DWORD buf =  (DWORD)&UNetworkHandlerInit_hook + 3;   

  DWORD op;
  short  comm =0xe9;
  VirtualProtect((void*)(initUH_addr),5,PAGE_READWRITE, &op);
  DWORD offset = (DWORD) buf - (DWORD) initUH_addr - 5;
  WriteProcessMemory(GetCurrentProcess(), (void*)(initUH_addr),(void*)&comm,1,NULL);
  WriteProcessMemory(GetCurrentProcess(), (void*)(initUH_addr+0x01),(void*)&offset,4,NULL);
   VirtualProtect((void*)(initUH_addr),5,op, &op);
перехват инита, для получения NetworkHandler - чистая магия, местами подогнанная по месту, так что приведена исключительно для осознания что и куда.

p.s.как-то пробовал сделать на делфи - могу поискать исходники, но они "портированы" с с++, так что по сути тоже самое
p.p.s. есть еще способ (если защита смотрит откуда сенд вызван)
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...

Последний раз редактировалось Elecktron, 03.10.2013 в 16:09.
Elecktron вне форума   Ответить с цитированием
Старый 27.03.2015, 13:46   #2
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

Цитата:
Сообщение от Elecktron Посмотреть сообщение
зачем пользоваться глючным стеком? оО
можно проще. например(с++):

перехват инита, для получения NetworkHandler - чистая магия, местами подогнанная по месту, так что приведена исключительно для осознания что и куда.

p.s.как-то пробовал сделать на делфи - могу поискать исходники, но они "портированы" с с++, так что по сути тоже самое
p.p.s. есть еще способ (если защита смотрит откуда сенд вызван)
Тема наверное уже мертва но всё равно попробую
Может кто-то напишет пример как на дельфях получить этот долбаный NetworkHandler
cvillian вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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