Тема: L2PacketHack 3.5.x
Показать сообщение отдельно
Старый 07.10.2008, 01:01   #292
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

ревизия 39:
обновил возможности плагинов, теперь из плагина есть доступ к следующим встроенным в пакетхак фукнциям:
procedure SendPacket(Size: Word; pck: string; tid: Byte; ToServer: Boolean);
procedure SendPckStr(pck: string; const tid: Byte; const ToServer: Boolean);
procedure SendPckData(var pck; const tid: Byte; const ToServer: Boolean); stdcall;
function DataPckToStrPck(var pck): string; stdcall;

function ReadC(const pck: string; const index:integer):byte; stdcall;
function ReadH(const pck: string; const index:integer):word; stdcall;
function ReadD(const pck: string; const index:integer):integer; stdcall;
function ReadF(const pck: string; const index:integer):double; stdcall;
function ReadS(const pck: string; const index:integer):string; stdcall;
function ReadCEx(const pck; const index:integer):byte; stdcall;
function ReadHEx(const pck; const index:integer):word; stdcall;
function ReadDEx(const pck; const index:integer):integer; stdcall;
function ReadFEx(const pck; const index:integer):double; stdcall;
function ReadSEx(const pck; const index:integer):string; stdcall;
procedure WriteC(var pck: string; const v:byte; ind:integer=-1); stdcall;
procedure WriteH(var pck: string; const v:word; ind:integer=-1); stdcall;
procedure WriteD(var pck: string; const v:integer; ind:integer=-1); stdcall;
procedure WriteF(var pck: string; const v:double; ind:integer=-1); stdcall;
procedure WriteS(var pck: string; const v:string; ind:integer=-1); stdcall;
procedure WriteCEx(var pck; const v:byte; ind:integer=-1); stdcall;
procedure WriteHEx(var pck; const v:word; ind:integer=-1); stdcall;
procedure WriteDEx(var pck; const v:integer; ind:integer=-1); stdcall;
procedure WriteFEx(var pck; const v:double; ind:integer=-1); stdcall;
procedure WriteSEx(var pck; const v:string; ind:integer=-1); stdcall;

function HexToString(Hex:String):String;
function StringToHex(str1,Separator:String):String;

а так же в качестве демо-плагина теперь простенький автоюзатель НР бутылок

Добавлено через 42 минуты
RoZ, почитал я ту статью, действительно проблемы возникнуть могут, но не из за того что ты описал а если память освободиться между присвоением значения строке в длл и копированием строки в программе, а это на мой взгляд произойти практически не может...

вот не большое исследование в дебагере
выполняется в программе:
Код:
phxPlugins.pas.143: Info:=String(GetPluginInfo(version));
004928EF 6801000403       push $03040001               ;кладём в стек параметр version
004928F4 FF5618           call dword ptr [esi+$18]     ;вызываем GetPluginInfo
прыгаем в плагин:
Код:
plugin_demo.dpr.23: Result:='Демонстрационный Plugin к программе l2phx'+sLineBreak+
0141459F B830464101       mov eax,$01414630            ;записываем в результат ссылку на текст
plugin_demo.dpr.26: end;
014145A4 5D               pop ebp                      ;неважно
014145A5 C20400           ret $0004                    ;возврат в программу
возвращаемся в программу:
Код:
004928F7 8BD0             mov edx,eax                  ;переносим результат GetPluginInfo в другой регистр
004928F9 8D4608           lea eax,[esi+$08]            ;записываем в регистр eax адрес Info
004928FC E86B29F7FF       call @LStrFromPChar          ;преобразуем PChar из edx в String помещая его в Info
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 07.10.2008 в 01:01. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 3 спасибками от: