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

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

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

перечитал всю тему о "радаре" - http://coderx.ru/showthread.php?t=1077
изучил "хуки" - http://coderx.ru/showthread.php?t=3609
возникли вопросы..
ну хорошо. допустим я перечитав весь форум, и не только этот, полностью разберусь с перехватом фукций и их обработкой.
и даже напишу свою длл.
отлично. а как мне объяснить клиенту л2 что вот эту мою длл надо подгрузить и использовать?
а еще лучше было бы не длл, а приложение, которое подключается к процессу. как тот чат.

хотелось бы пример как подгрузить/перехватить (действующий пример - предел мечтаний) в идеале на с++ билдере, на крайняк делфи..

зы: предвидя вопросы - на офф сервере не играю, для экспериментов на компе стоит джава с4.
Elecktron вне форума   Ответить с цитированием
Старый 28.10.2011, 00:05   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Elecktron, помойму тема внедрения обсосана не многим хуже чем перехвата...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 30.10.2011, 23:24   #3
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Цитата:
Сообщение от Elecktron Посмотреть сообщение
перечитал всю тему о "радаре" - http://coderx.ru/showthread.php?t=1077
изучил "хуки" - http://coderx.ru/showthread.php?t=3609
возникли вопросы..
ну хорошо. допустим я перечитав весь форум, и не только этот, полностью разберусь с перехватом фукций и их обработкой.
и даже напишу свою длл.
отлично. а как мне объяснить клиенту л2 что вот эту мою длл надо подгрузить и использовать?
а еще лучше было бы не длл, а приложение, которое подключается к процессу. как тот чат.

хотелось бы пример как подгрузить/перехватить (действующий пример - предел мечтаний) в идеале на с++ билдере, на крайняк делфи..

зы: предвидя вопросы - на офф сервере не играю, для экспериментов на компе стоит джава с4.
Качаем LordPE Delux
Запускаем её
нажимаем PE Editor
Выбираем там клиентскую ДЛЛ-ку (я раньше выбирал всегда fire.dll, сейчас просто пишу DSETUP.dll с тему функциями что в оригинале)
жмем Directories затем Import Table "..."
при нажатии на три точки откроется таблица импорта длл-ки
Туда можно как добавить импорт так и удалить
что бы добавить в списке импорта нажимаем правую кнопку мыши и добавляем импорт на вашу дллку
"Add import"
откроется окно добавления
в первой строке пишем имя длл - например "hook.dll"
во второй импортируемый модуль, например "myfunc" или же "DllEntryPoint"
нажимаем "+" и всё сохраняем...
Если все сделал правильно - будет работать
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
За это сообщение ALF нажился 3 спасибками от:
Старый 31.10.2011, 19:52   #4
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

спасибо.
то есть не принципиально к какой длл привязывать свою?

хмм... с DSETUP.dll хорошая идея!
а где взять исходник оригинальной DSETUP, гугль с наскока на ответил

вопросов меньше не становится:

int* DispatchNetworkQueuePtrPtr=(int*)(hEngine+(0x00361B44-0x00361B4D));
не ясен синтаксис выделенного..
взято из темы - http://coderx.ru/showthread.php?t=1835

как впихнуть GUI в написанную мной длл?
например типа как в иг валкере.
Elecktron вне форума   Ответить с цитированием
Старый 31.10.2011, 20:50   #5
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Цитата:
спасибо.
то есть не принципиально к какой длл привязывать свою?
подгружается все что в импорте. а так же то что в импорте у того что импортируем.

c Код:
int* DispatchNetworkQueuePtrPtr=(int*)(hEngine+(0x00361B44-0x00361B4D));
равнозначно
c Код:
int* DispatchNetworkQueuePtrPtr=(int*)(hEngine - 9);

Цитата:
как впихнуть GUI в написанную мной длл?
так же как и не в длл.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 31.10.2011, 21:35   #6
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

Цитата:
Сообщение от alexteam Посмотреть сообщение
подгружается все что в импорте. а так же то что в импорте у того что импортируем.
ага. теперь ясно.

Цитата:
c Код:
int* DispatchNetworkQueuePtrPtr=(int*)(hEngine - 9);
я допустил ошибку - вставил копаный мною кусок кода
вот то что было изначально:
c Код:
int* DispatchNetworkQueuePtrPtr=(int*)(hEngine+(0x0201D4B0-0x01B80000));
то есть это обыкновенное вычитание?
а какой смысл писать именно так?

Цитата:
так же как и не в длл.
не разобрался...
Elecktron вне форума   Ответить с цитированием
Старый 31.10.2011, 21:52   #7
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Цитата:
то есть это обыкновенное вычитание?
а какой смысл писать именно так?
удобнее читать\менять.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 31.10.2011, 22:15   #8
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

Цитата:
Сообщение от alexteam Посмотреть сообщение
удобнее читать\менять.
эмм... чет я совсем запутался....

насколько я понял - это адрес оригинальной функции.
вопрос: где его взять?
это оно:
Код:
Names in Engine, item 7606
  Address = 00361B44
  Section = .text
  Type = Export
  Name = ?DispatchNetworkQueue@UNetworkHandler@@UAEHPAPAUNetworkPacket@@@Z
  Comments = Ordinal = #3587
Elecktron вне форума   Ответить с цитированием
Старый 01.11.2011, 12:05   #9
Рыцарь
 
Аватар для destructor
 
Регистрация: 26.06.2009
Сообщений: 2,433
Сказал Спасибо: 154
Имеет 692 спасибок в 426 сообщенях
destructor на пути к лучшему
По умолчанию

тут
Цитата:
Сообщение от Elecktron Посмотреть сообщение
изучил "хуки" - http://coderx.ru/showthread.php?t=3609
и тут
Цитата:
Сообщение от Elecktron Посмотреть сообщение
взято из темы - http://coderx.ru/showthread.php?t=1835
"разные" хуки
__________________
Шожиделать.. ботить хочется..
destructor вне форума   Ответить с цитированием
Старый 01.11.2011, 12:37   #10
Пользователь
 
Аватар для ALF
 
Регистрация: 18.09.2010
Адрес: Киев
Сообщений: 70
Сказал Спасибо: 9
Имеет 10 спасибок в 6 сообщенях
ALF пока неопределено
По умолчанию

Цитата:
Сообщение от Elecktron Посмотреть сообщение
спасибо.
int* DispatchNetworkQueuePtrPtr=(int*)(hEngine+(0x00361 B44-0x00361B4D));
не ясен синтаксис выделенного..
взято из темы - http://coderx.ru/showthread.php?t=1835
Это указатель на функцию DispatchNetworkQueue. Но это "ХардКодинг"
Если функция экспортируемая то намного проще сделать так
Код:
....
static char *	nDispatchNetworkQueue	= "?DispatchNetworkQueue@UNetworkHandler@@UAEHPAPAUNetworkPacket@@@Z";
.....
void __cdecl	( * DispatchNetworkQueue)(NetworkPacket * *);
.....
hEngine = GetModuleHandle("engine.dll");
(FARPROC &)DispatchNetworkQueue = GetProcAddress(hEngine, nDispatchNetworkQueue);

Ммм насчет DSETUP.DLL
Код:
//==============================================================================
int __stdcall DirectXDeviceDriverSetupA() { return 0;}
int __stdcall DirectXDeviceDriverSetupW() { return 0;}
int __stdcall DirectXRegisterApplicationA() { return 0;}
int __stdcall DirectXRegisterApplicationW() { return 0;}
int __stdcall DirectXSetupA() { return 0;}
int __stdcall DirectXSetupIsJapan() { return 0;}
int __stdcall DirectXSetupIsJapanNec() { return 0;}
int __stdcall DirectXSetupW() { return 0;}
int __stdcall DirectXUnRegisterApplication() { return 0;}
int __stdcall DirectXSetupSetCallback() { return 0;}
int __stdcall DirectXSetupGetVersion() { return 0;}
int __stdcall DirectXSetupCallback() { return 0;}
int __stdcall DirectXSetupGetFileVersion() { return 0;}
int __stdcall DirectXLoadString() { return 0;}
int __stdcall DirectXSetupIsEng() { return 0;}
int __stdcall DirectXSetupShowEULA() { return 0;}
int __stdcall DirectXSetupGetEULAA() { return 0;}
int __stdcall DirectXSetupGetEULAW() { return 0;}
//==============================================================================
__________________
Все относительно...
ALF вне форума   Ответить с цитированием
За это сообщение ALF нажился спасибкой от:
Ответ

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



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

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


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

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

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