Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Разработка
Войти через OpenID

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 01.08.2008, 06:48   #1
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию L2PacketHack 3.5.x

Исходники здесь
Вот такие скомпилированные версии есть у меня.

Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru

Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?

Программа пишется в среде Delphi 2007 и Delphi 7 с использованием следующих дополнительных библиотек компонентов:
- FastScript (http://fast-report.com/ru/products/fast-script.html)
- JCL (http://sourceforge.net/projects/jcl/)
- JVCL (http://sourceforge.net/projects/jvcl/)

Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)

/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.

Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 111 спасибками от:
-=Ma}{imuS=-, 4erteg, Agat, ak47, Alan, alexsl, alexteam, AoWpwnz, APXAHGEJI, Asmalaa Asrety, Benefit, BISMARCK_555, boy200007, boypush, Breadfan, BuKbI4, CCCP, Crypto, Curious, cutter, DashKAaa, Denis63RUS, dyh9l, Elecktron, Emocean, Evgeniy, FatalHistori, Fer123, Ferrari3200, FFALL777, Fim, freeworld, GameCoder, gavr1l0, gexiss, goodvin1709, Green, Grinch, HacPaTyc, INFERION, isya, Johnson, Keeper, Keisei, Kotyara2014, lomoWAR, lordka), LostQ, Lotar, Ma3aXakA, march, marslem, mat1s, MHz, micoach, MiRoN, mirt, MoD_Hanes, MrIICUX, Mulder, Murdoc, neonv1, nezabudkin, Nigga, Niros, NoFear, OleSha, OMOH8787, PanAm, pascalpwnz, PerioH, PIONER, QaK, rastaman_228, ratvier, RockTeam, RoZ, Rubicosha, Rysis, Ryth, saxa24111, shunder, skaner, skiner4119, Snowbars, StekloReZ, stopicot, TAMBIK, Tchep, Therapyst, TryLaw, vahes, Velizarx, victor_rvm, Vilson, Vklu4atel^^, vlad00777, vovanchik, vul-test, wanick, wasabi_100, WhiteDevil, Xelat, xkor, Yegor, Yellowboy, zDiablik, АлисаХочетСекс, Арти, женька
Старый 15.10.2008, 01:58   #331
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Grinch, а как на счет ввода констант через HTML диалог прямо в игре?), можно даж в самом пакетхаке сделать встроенные функции для формирования таких диалогов, хотя это и так просто
ИМХО это самое рациональной на мой взгляд решение
ещё можно сделать возможность указывать для включаемого плагина "соединение по умолчанию" или даже выполнять его только для этого соединения

Добавлено через 5 часов 11 минут
Ревизия: 48
Автор: xkor
Дата: 00:50:00, 15 октября 2008 г.
[+] В контекстном меню иконки программы появились подменю "Скрипты" и "Плагины" в которых можно включить/выключить их не открывая окно программы;[*] FastMM4 настроен так чтобы плагины и программа были совместимы не зависимо от режима компиляции;
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 15.10.2008 в 01:58. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
Старый 15.10.2008, 07:08   #332
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от PanAm Посмотреть сообщение
тут у меня две мысли -
1. Требуется дороботка ПакетХака - добавить в планины необязательные функции, которые будут вызыватся из контекстного меню в списке плагинов. как минимум для настройки и расширенной информации о плагине.
2. не требует дороботки ПХ и может быть дополнением к первому - обработка в плагине чат-строк типа "-myplugin -settings"
Далее станет вопрос сохранения и загрузка настроек, и тут опять есть два варианта -
1. возложить это полностью на автора плагина - он сам будет выбирать куда и как сохранять / грузить настройки- в реестр, INI-файл или в скрытый сектор диска с ключем шифрования на сьемном насителе.
2. Сделать анологично FAR - работать с настройками через API пакетхака.

Добавлено через 2 минуты
И есть еще пожелание - для ПХ свернутого в трей, дороботать меню - добавить подменю "Скрипты" и "Плагины" с динамическим списком и возможностью в щелчек влючать и выключать их.

Еще надо добавить меню для моего холодильника, чтобы он заказывал мне пиво через l2phx/ O_o
Народ, вы подождите сейчас пройдет осень, и вас отпустит ...
  Ответить с цитированием
Старый 17.10.2008, 15:00   #333
Пользователь
 
Регистрация: 10.10.2007
Сообщений: 39
Сказал Спасибо: 0
Имеет 7 спасибок в 5 сообщенях
Argot
По умолчанию

А задуматься что вы тут делаете ? ))
Код:
except
    //добавил для исключения утечки памяти, NLObP
    FreeMem(OldFunction, 255);
    Exit;
  end;
  //добавил для исключения утечки памяти, NLObP
  FreeMem(OldFunction, 255);
Argot вне форума   Ответить с цитированием
Старый 17.10.2008, 16:46   #334
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Вот вся функция
delphi Код:
function HookCode(TargetProc, NewProc: pointer; var OldProc: pointer): boolean; var   Address: dword;   OldProtect: dword;   OldFunction: pointer;   Proc: pointer; begin   Result := False;   try     Proc := TargetProc;     //вычисляем адрес относительного (jmp near) перехода на новую функцию        Address := dword(NewProc) - dword(Proc) - 5;     VirtualProtect(Proc, 5, PAGE_EXECUTE_READWRITE, OldProtect);     //создаем буффер для true функции     GetMem(OldFunction, 255);     //копируем первые 4 байта функции     dword(OldFunction^) := dword(Proc);     byte(pointer(dword(OldFunction) + 4)^) := SaveOldFunction(Proc, pointer(dword(OldFunction) + 5));     //byte(pointer(dword(OldFunction) + 4)^) - длина сохраненного участка     byte(Proc^) := $e9; //устанавливаем переход     dword(pointer(dword(Proc) + 1)^) := Address;     VirtualProtect(Proc, 5, OldProtect, OldProtect);     OldProc := pointer(dword(OldFunction) + 5);   except     Exit;   end;   Result := True; end;

Покажи, где надо освободить память? В except ... end; лишнее?
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 17.10.2008, 21:53   #335
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от Argot Посмотреть сообщение
А задуматься что вы тут делаете ? ))
Код:
except
    //добавил для исключения утечки памяти, NLObP
    FreeMem(OldFunction, 255);
    Exit;
  end;
  //добавил для исключения утечки памяти, NLObP
  FreeMem(OldFunction, 255);
а я то думал почему ShowMessage не работает...

Добавлено через 1 минуту
NLObP, освобождать надо то что больше НЕ будет использоваться...

Добавлено через 1 минуту
небольшая утечка лучше чем освобождение ещё используемой памяти...
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 17.10.2008 в 21:53. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
Старый 17.10.2008, 22:05   #336
Пользователь
 
Регистрация: 10.10.2007
Сообщений: 39
Сказал Спасибо: 0
Имеет 7 спасибок в 5 сообщенях
Argot
По умолчанию

Особождайте ее в unhook`e

тонее она там освобождается

Код:
   function UnhookCode(OldProc: pointer): boolean;
var
  OldProtect: dword;
  Proc: pointer;
  SaveSize: dword;
begin
  Result := True;
  try
    Proc := pointer(dword(pointer(dword(OldProc) - 5)^));
    SaveSize := byte(pointer(dword(OldProc) - 1)^);
    VirtualProtect(Proc, 5, PAGE_EXECUTE_READWRITE, OldProtect);
    CopyMemory(Proc, OldProc, SaveSize);
    VirtualProtect(Proc, 5, OldProtect, OldProtect);
    FreeMem(pointer(dword(OldProc) - 5));
  except
    Result := False;
  end;
end;

Последний раз редактировалось Argot, 17.10.2008 в 22:08.
Argot вне форума   Ответить с цитированием
Старый 17.10.2008, 22:23   #337
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Argot Посмотреть сообщение
Особождайте ее в unhook`e
На сколько я помню он нигде не вызывается.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 18.10.2008, 08:15   #338
Пользователь
 
Регистрация: 10.10.2007
Сообщений: 39
Сказал Спасибо: 0
Имеет 7 спасибок в 5 сообщенях
Argot
По умолчанию

Цитата:
Сообщение от NLObP Посмотреть сообщение
На сколько я помню он нигде не вызывается.
это как говорится уже ваши проблемы что вы не вызываете )).

Да и правда особой надобности нет. в Вызове.
Argot вне форума   Ответить с цитированием
Старый 20.10.2008, 09:16   #339
Пользователь
 
Регистрация: 28.06.2008
Сообщений: 33
Сказал Спасибо: 12
Имеет 15 спасибок в 8 сообщенях
RoZ пока неопределено
По умолчанию

Шаблон Plugin на С++ для маньяков
Реализовано:
char* GetPluginInfo(int ver);
void OnPacket(unsigned long int cnt,bool fromServer,char* packet);
bool SetStruct(PluginStruct * PStruct);
void OnConnect(unsigned long int cnt,bool withServer);
void OnDisconnect(unsigned long int cnt,bool withServer);
void OnLoad();
void OnFree();

для отсылки пакетов используется "SendPckData(void* pck,const unsigned char tid,bool ToServer)"
Вложения
Тип файла: rar plugin.rar (3.6 Кб, 53 просмотров)
RoZ вне форума   Ответить с цитированием
За это сообщение RoZ нажился 5 спасибками от:
Старый 20.10.2008, 19:48   #340
Местный
 
Регистрация: 18.02.2008
Сообщений: 141
Сказал Спасибо: 16
Имеет 66 спасибок в 30 сообщенях
ratvier
По умолчанию

Ну раз уж такое дело, вот хидер для си (так же совместим с с++)
Вложения
Тип файла: rar main.rar (466 байт, 50 просмотров)
ratvier вне форума   Ответить с цитированием
За это сообщение ratvier нажился спасибкой от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка



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

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


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

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

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