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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 11.01.2016, 12:57   #1
Новичок
 
Аватар для Barsik
 
Регистрация: 18.12.2008
Сообщений: 7
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
Barsik пока неопределено
По умолчанию

Цитата:
Сообщение от Botter100 Посмотреть сообщение
__declspec(naked) void UGameEngine__OnNpcHtmlMessage()
Твоя функция подмены должна быть по параметрам и возвращаемому значению идентична оригинальной функции. Вот так этот метод класса выглядит:
int __thiscall UGameEngine::OnNpcHtmlMessage(UGameEngine *this, struct User *, wchar_t *, int)
Barsik вне форума   Ответить с цитированием
Старый 11.01.2016, 13:02   #2
Новичок
 
Регистрация: 11.01.2016
Сообщений: 2
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Botter100 пока неопределено
По умолчанию

Цитата:
Сообщение от Barsik Посмотреть сообщение
Твоя функция подмены должна быть по параметрам и возвращаемому значению идентична оригинальной функции. Вот так этот метод класса выглядит:
int __thiscall UGameEngine::OnNpcHtmlMessage(UGameEngine *this, struct User *, wchar_t *, int)
Это понятно, если я хочу жить после всего этого. Но щас для меня цель отобразить мессадж бокс и гори оно синим пламенем. Ведь должно же по логике проканать. Мне не надо сохранять стэк и прочее ведь? По сути че происходит - вызывается функция из енжин длл OnNpcHtmlMessage а там вместо ее кода уже мой тупо jmp а по этому жмп тупо call MessageBox.

я не переписываю адрес функции в таблице, я хукаюсь внутрь самой функции и мне в принципе пофигу на параметры.
Botter100 вне форума   Ответить с цитированием
Старый 11.01.2016, 14:08   #3
Новичок
 
Аватар для Barsik
 
Регистрация: 18.12.2008
Сообщений: 7
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
Barsik пока неопределено
По умолчанию

memcpy(addr + 1, &ff, 4); неверно, так как нужно пересчитать относительное смещение т.е.
вместо &ff UGameEngine__OnNpcHtmlMessage - addr - 5;

с GG не пробовал хукать, возможно он палит, попробуй хукнуть не на первом байте а дальше, глянь что в отладчике переписывается ли джамп

Последний раз редактировалось Barsik, 11.01.2016 в 15:18.
Barsik вне форума   Ответить с цитированием
Старый 13.01.2016, 09:37   #4
Новичок
 
Аватар для Barsik
 
Регистрация: 18.12.2008
Сообщений: 7
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
Barsik пока неопределено
По умолчанию

Цитата:
Сообщение от Barsik Посмотреть сообщение
memcpy(addr + 1, &ff, 4); неверно, так как нужно пересчитать относительное смещение т.е.
вместо &ff UGameEngine__OnNpcHtmlMessage - addr - 5;
вот расчет относительного смещения
========================
в отладчике после jmp виден адрес готового перехода который на самом деле вычесляется
Оффтоп
вот кусок кода правда не мой но как пример подойдет :Оффтоп

Последний раз редактировалось Barsik, 13.01.2016 в 10:10.
Barsik вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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