Программинг Форум для тем связанных с программированием
15.01.2017, 18:27
#1
Пользователь
Регистрация: 14.07.2016
Сообщений: 59
Сказал Спасибо: 6
Имеет 10 спасибок в 9 сообщенях
Экспортируется только экземпляр, а не методы (они виртуальные, поэтому хватит определения что я дал выше).
Выделять/освобождать память под структуру пакета и буффер надо именно ими.
15.01.2017, 21:16
#2
Новичок
Регистрация: 17.04.2016
Сообщений: 8
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
Цитата:
Сообщение от
Smwr
Экспортируется только экземпляр, а не методы (они виртуальные, поэтому хватит определения что я дал выше).
Выделять/освобождать память под структуру пакета и буффер надо именно ими.
А можно пример, или описание хода действий, чето не пойму
Добавлено через 1 час 51 минуту
Цитата:
Сообщение от
Smwr
Экспортируется только экземпляр, а не методы (они виртуальные, поэтому хватит определения что я дал выше).
Выделять/освобождать память под структуру пакета и буффер надо именно ими.
Что то я не могу найти в Core.dll FMallocWindows
Последний раз редактировалось DaVilka, 15.01.2017 в 21:16 .
Причина: Добавлено сообщение
16.01.2017, 07:41
#3
Местный
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
DaVilka ,
Код:
hCore:= GetModuleHandle('core.dll');
L2MemAlloc:= GetProcAddress(hCore, '?GMalloc@@3PAVFMalloc@@A');
...
function L2MemoryAllocNetPacket: PNetworkPacket; register;
asm
push NetPacket
push $0C
mov edx, L2MemAlloc
mov ecx, [edx]
mov eax, [ecx]
mov edx, [eax]
call edx
end;
function L2MemoryAllocNetCmd(len: integer): Pointer; register;
asm
push NetCmd
push len
mov edx, L2MemAlloc
mov ecx, [edx]
mov edx, [ecx]
mov eax, [edx]
call eax
end;
procedure L2MemoryFreeNetPacket(pck: PNetworkPacket); stdcall;
asm
lea edi, pck
mov edx, L2MemAlloc
mov ecx, [edx]
mov eax, [ecx]
mov edx, [edi]
mov edx, [edx+8]
push edx
mov eax, [eax+8]
call eax
mov ecx, L2MemAlloc
mov ecx, [ecx]
mov eax, [edi]
mov edx, [ecx]
push eax
mov edx, [edx+8]
call edx
end;
...
var
np: PNetworkPacket;
begin
np:= L2MemoryAllocNetPacket;
np.id:= pck[0];
np.res:= 0;
np.size:= len - 1;
np.res2:= 0;
np.id2:= -1;
np.data:= L2MemoryAllocNetCmd(len - 1);
Move(pck[1], np.data[0], len - 1);
AddNetworkQueue(np);
__________________
Н а ч а л о .
За это сообщение supernewbie нажился спасибкой от:
16.01.2017, 10:15
#4
Пользователь
Регистрация: 14.07.2016
Сообщений: 59
Сказал Спасибо: 6
Имеет 10 спасибок в 9 сообщенях
DaVilka ,
Код:
char payload[] = { 0xC9, 0x29, 0x13, 0x10, 0x02, 0x00, 0x00, 0x00 };
HMODULE hCore = GetModuleHandleA("Core.dll");
FMalloc* pMalloc = (FMalloc*)GetProcAddress(hCore, "?GMalloc@@3PAVFMalloc@@A");
NetworkPacket* packet = (NetworkPacket*)pMalloc->Allocate(sizeof(NetworkPacket), 0);
packet->Buffer = (uint8_t*)pMalloc->Allocate(sizeof(payload), 0);
std::memcpy(packet->Buffer, payload, sizeof(payload));
packet->Id = 0x27;
packet->Id2 = 0xFF;
packet->Size = sizeof(payload);
//do stuff
За это сообщение Smwr нажился 2 спасибками от:
16.01.2017, 19:57
#5
Новичок
Регистрация: 17.04.2016
Сообщений: 8
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
Цитата:
Сообщение от
Smwr
NetworkPacket* packet = (NetworkPacket*)pMalloc->Allocate(sizeof(NetworkPacket), 0);
Вот здесь клиент падает, либа подключается, функцию находит хм
Последний раз редактировалось DaVilka, 16.01.2017 в 23:24 .
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 10:09 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!