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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 24.09.2013, 09:56   #1
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

Вот тут снизу мой быдлокод.

Оффтоп
Delphi Код:
Procedure Init_UNetworkHandler_Hook(I:Integer;UGameEngine:Pointer); begin asm mov esi,[UGameEngine]; mov [NH],esi; //call Init_UNetworkHandler_Original; end; MessageDlg('UNetworkHandler:'+VarToStr(DWORD(NH)),mtInformation, [mbOk],0); if UnhookCode(@Init_UNetworkHandler_Original) then MessageDlg('Хук на UNetworkHandler успешно снят.',mtInformation, [mbOk],0) else MessageDlg('Не смогли снять хук на UNetworkHandler',mtInformation, [mbOk],0); end;
Как сделать возврат в оригинальную?
Получать то получаю UnetworkHandler а вот назад его запихнуть не могу(
Или как получить этот указатель другим путем.:?

Добавлено через 3 часа 4 минуты
Сылка на библиотеку для хука и иньектора.

Добавлено через 11 часов 37 минут
UP
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/

Последний раз редактировалось goodvin1709, 24.09.2013 в 09:56. Причина: Добавлено сообщение
goodvin1709 вне форума   Ответить с цитированием
Старый 24.09.2013, 10:19   #2
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

Оффтоп
Что я не так делаю?
P.S Добавил функцию для отображения уже L2ParamStack.
Вот еще пока без возвратки так как еще не отловил UNetworkHandler.
Ух этот клиет,а я думаю что же будет дальше то Там же нужно будет нарыть структуру User))) и все такое
Может кто то делал это все с функциями полегче? например что то в чат ебануть?
а то да действительно гемора немного есть с L2ParamStack.)
Я прикреплю ниже свою библиотеку,протестите и скажите какие результаты пожалуйста.
http://rghost.ru/48942586Вот сама библиотека хука.
http://rghost.ru/48942628Вот иньектор.
ОШИБКА ТУТ
Delphi Код:
procedure  L2StackPushBackInt(l2p: PL2ParamStack; cmd: Integer); stdcall;  //Заполняем стек(последнее значение) Int числом (8 байт). asm   mov   ecx,cmd;   push  ecx;   mov   ecx,l2p;   call  [L2ParamStackPushBack_Original]; end;
Как ее блин исправить то?
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/

Последний раз редактировалось goodvin1709, 24.09.2013 в 16:06.
goodvin1709 вне форума   Ответить с цитированием
Старый 26.09.2013, 10:11   #3
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

UP

Добавлено через 11 часов 7 минут
UP
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/

Последний раз редактировалось goodvin1709, 26.09.2013 в 10:11. Причина: Добавлено сообщение
goodvin1709 вне форума   Ответить с цитированием
Старый 27.09.2013, 10:29   #4
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

UP
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/
goodvin1709 вне форума   Ответить с цитированием
Старый 27.09.2013, 13:02   #5
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

во! попробуй на cracklab.ru на форуме тему создать. там думаю подскажут правда регистрация галимая...
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 29.09.2013, 02:01   #6
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

а какой тайный смысл перехватывать L2ParamStack?
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 29.09.2013, 03:34   #7
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

В каком это смысле?В параметре приходит L2ParamStack
Я от туда извлекаю то что мне нужно т.е данные.
потом создаю чистый L2ParamStack
Засовываю туда данные,и отправляю на сервер вызовом оригинальной функции.
Вот только данные вставить нормально не могу(
1.Создаю
Delphi Код:
procedure l2stackCreate(l2p: PL2ParamStack);  stdcall;  asm   mov   ecx,l2p;   push  ecx;   push  0Ah;   call [L2ParamStackCreate_Original];  end;
Вот тут создали стек.Все работает хорошо.
Потом очищаю стек.
Delphi Код:
procedure  L2StackClear(l2p: PL2ParamStack); stdcall;  asm   mov   ecx,l2p;   call  [L2ParamStackClear_Original];  end;
Тут все хорошо работает,вроде очистили.
Потом я в него вставляю что мне нужно:
Delphi Код:
procedure  L2StackPushBackInt(l2p: PL2ParamStack; cmd: Integer); stdcall;  asm   mov   ecx,cmd;   push  ecx;   mov   ecx,l2p;   call  [L2ParamStackPushBack_Original];  end;
Правда тут почему то ошибка,но по плану следующий шаг отправка.
Delphi Код:
procedure UseItem_Call(l2p: PL2ParamStack); stdcall; begin  asm   push l2p;   mov ecx, UNetworkHundler;   call [UseItem_Original];  end;
Но блин откуда взять
1.UnetworkHandler,нужен он вобще или нет?
2.Как правильно запихнуть данные и отправить?
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/
goodvin1709 вне форума   Ответить с цитированием
Старый 03.10.2013, 16:06   #8
Местный
 
Аватар для 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   #9
Пользователь
 
Регистрация: 19.08.2014
Сообщений: 58
Сказал Спасибо: 12
Имеет 0 спасибок в 0 сообщенях
cvillian пока неопределено
По умолчанию

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

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

p.s.как-то пробовал сделать на делфи - могу поискать исходники, но они "портированы" с с++, так что по сути тоже самое
p.p.s. есть еще способ (если защита смотрит откуда сенд вызван)
Тема наверное уже мертва но всё равно попробую
Может кто-то напишет пример как на дельфях получить этот долбаный NetworkHandler
cvillian вне форума   Ответить с цитированием
Старый 02.10.2013, 03:56   #10
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

UP
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/
goodvin1709 вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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