Показать сообщение отдельно
Старый 05.06.2009, 02:11   #17
Новичок
 
Регистрация: 03.03.2009
Сообщений: 12
Сказал Спасибо: 6
Имеет 1 спасибку в 1 сообщении
Arseny пока неопределено
По умолчанию

перед тем как отправить пакет от имени engine.dll надо еще заполнить стек отправки
вчера стал ковырять функцую отправки пакета на сдачу манора - в принципе механизм тот же, что и в других функциях Л2, можно разбить на следующую цепочку:
1. преварительные действия, нас не интересуют в общем-то. Могут интересовать, чтобы подобрать место для перехода на наш код.
2. чтение из стека Л2, подготовка параметров для обработки - самая интересная часть, нас интересует больше всего. Именно в этот момент нам доступны внутренние данные пакетов при получении и перед отправкой, именно этот код нужно дублировать в нашей программе.
3. последующие действия клиента, как правило, не представляют интереса.

Murdoc, у меня этот пример убил клиент Ц4, хотя я почитал как он переписывается под Ц4. Но именно он подтолкнул меня к написанию собственного аналога, и дал кое-какое понимание о внутренней работе клиента и том, что и как надо в нём перехватывать. После чего был написан аналог по механизму работы для Ц4, который опробован на конкретном клиенте, на вин XP и Висте, сама ДЛЛка работает стабильно, программа-приемник периодически вылетает. Сейчас обдумываю как лучше сделать отправку пакета от имени клиента... вариантов два - или создать свой стек и заполнить его, после чего вызвать нужную функцию с указателем на мой стек, или же внедриться в функцию и внаглую прописывать в нужных местах значения(ессно передаются через переменные). Сами проги на дельфи, код, отвечающий за перехват функций клиента - ассемблер... без ассемблера никак вообще тут.
Arseny вне форума   Ответить с цитированием