Вход

Просмотр полной версии : Rguard interlude


edawid
05.04.2015, 23:50
Hi, My friends i write in English because my Russian is very bad.
This is my First post but i need help i search response for my problem but anyone can give me good fix ;)
This is a part of code form Rguard H5

unsigned int GetSendPacketAddress(void)
{
HMODULE hEngine = LoadLibraryA("engine.dll");

unsigned int startVMT = (unsigned int) hEngine + 0x51F658;
unsigned int AddNetworkQueue = (unsigned int) GetProcAddress(hEngine, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPa cket@@@Z");
unsigned int currVMT = startVMT;

if (AddNetworkQueue == 0)
{
return 0;
}

while (true)
{
if (*(unsigned int*) currVMT == AddNetworkQueue)
{
return *(unsigned int*) (currVMT - 0xA4);
}

currVMT++;
if (currVMT - startVMT > 10000)
{
return 0;
}
}
return 0;
}



I need fix only this part for interlude 746 protocol [EU]


Добавлено через 52 минуты
Fix like this is okey Ya ?
unsigned int GetSendPacketAddress(void)
{
HMODULE hEngine = LoadLibraryA("engine.dll");
unsigned int UNHandlerTable = (unsigned int)GetProcAddress(hEngine, "??_7UNetworkHandler@@6BUObject@@@");
return (UNHandlerTable + 0x48) + 0x6C;
}

Yegor
06.04.2015, 01:24
return (UNHandlerTable + 0x48) + 0x68;


I do like this:


DWORD sendPacketAddr = 0;

int __fastcall new_AddNetworkQueue(unsigned int This, unsigned int EDX, TNetworkPacket *NetworkPacket)
{
if (sendPacketAddr == 0)
{
UNetworkHandler* UNH;
UNH = (UNetworkHandler*)This;
__asm
{
mov ecx,UNH;
mov eax,[ecx + 48h];
mov ecx,[eax]
mov edx,[ecx + 68h]//IL
mov sendPacketAddr,edx;
}

true_SendPacket = (_SendPacket) splice((unsigned char*) sendPacketAddr, new_SendPacket);
}
.....



And need another recursed version function Splice for Interlude:

unsigned int splice(unsigned char *addr, void *hook_fn)
{
if (*addr == 0xE9)
{
//splice> jmp operand found, calc jump addr and retry splice on this addr
unsigned int jmpAddr = (unsigned int)addr + (*(int*)((unsigned int)addr + 1)) + 5;
return splice((unsigned char*)jmpAddr, hook_fn);
}

unsigned char *saved = alloc_rwx_mem();
int cb = splicing_length(addr);
unsigned long oldprotect;

for (int i = 0; i < cb; i++)
{
saved[i] = addr[i];
}

write_jmp(saved + cb, addr + cb);
VirtualProtect(addr, 5, PAGE_EXECUTE_READWRITE, &oldprotect);
write_jmp(addr, hook_fn);
VirtualProtect(addr, 5, oldprotect, &oldprotect);

return (unsigned int) saved;
}

void write_jmp(unsigned char *addr, void *dest)
{
*addr = 0xE9;

*(int*) (addr + 1) = (unsigned char*) dest - (addr + 5);
}

int splicing_length(void *codePtr)
{
int cb = 0;

do
{
cb += instruction_length((char*) codePtr + cb);
}
while (cb < 5);

return cb;
}

edawid
06.04.2015, 06:17
Thanks ;)
i've one more Questions this is clean main.cpp from h5
http://pastebin.com/raw.php?i=S0z0uqzt

i want to draw on l2window

I've correct GetSendPacketAddress

I Changed ?DrawTextTTFToCanvas@UCanvas@@QAEHHHPB_WPBVFontDra wInfo@@EHHPBV?$TArray@PAVFontDrawInfoSection@@@@@Z

to :
?DrawTextToCanvas@UCanvas@@UAEKHHKPBGKKKMHW4L2Font Type@@HHKHHHPAV?$TArray@PAVFL2ColorFontInfo@@@@GW4 EFontExceptionType@@H@Z


but i've problem with
true_MasterProcessPreRender
and
true_Render
Client will crash with this

No log in protection
if (!SetHooks())
{
ErrorExit("Protection is not attached this client!");
Sleep(INFINITE);
}


I think addr is good but problem is in function anyone have idea how to fix this problem ?

TTF
27.10.2015, 01:29
Уважаемые пользователи, расскажите решили ли вопрос с Dsetup для Interlude 746. Месяц кручу верчу и не в какую . Может у вас есть готовое решение поделитесь, я отблагодарю.

Yegor
27.10.2015, 10:54
Уважаемые пользователи, расскажите решили ли вопрос с Dsetup для Interlude 746. Месяц кручу верчу и не в какую . Может у вас есть готовое решение поделитесь, я отблагодарю.

Смотря в чем именно вопрос.

TTF
28.10.2015, 16:06
Смотря в чем именно вопрос.

В готовом Dsetup под ФТ гварт и ему подобного.

Добавлено через 8 часов 26 минут
Смотря в чем именно вопрос.

Если есть у вас готовый, скиньте в лс пожалуйста и ваш кошелек сразу.
Или подскажите что куда вписать. Правда пробовал могу скинуть что делал. Не как не получается. Снял с Енгине темиду раскрыл её. Писал в дсетуп но не то (

Yegor
29.10.2015, 05:26
Готовой нет.

Я как понял у вас есть исходники какой то из защит и вы не можете их заставить работать в ИЛ. Напишите в личку что именно не получается.

wongerlt
31.08.2017, 21:17
Hello, what can be wrong with this guard, in windows xp ping about 10 sec.
send packet about 10 sec, receive about ~1-2 sec.