Тема: Rguard interlude
Показать сообщение отдельно
Старый 06.04.2015, 01:24   #2
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

return (UNHandlerTable + 0x48) + 0x68;


I do like this:

PHP код:
DWORD sendPacketAddr 0;

int __fastcall new_AddNetworkQueue(unsigned int Thisunsigned int EDXTNetworkPacket *NetworkPacket)
{
    if (
sendPacketAddr == 0)
    {
        
UNetworkHandlerUNH;
        
UNH = (UNetworkHandler*)This;
        
__asm
        

            
mov ecx,UNH;
            
mov eax,[ecx 48h];
            
mov ecx,[eax]
            
mov edx,[ecx 68h]//IL
            
mov sendPacketAddr,edx;
        }

        
true_SendPacket = (_SendPacketsplice((unsigned char*) sendPacketAddrnew_SendPacket);
    }
..... 

And need another recursed version function Splice for Interlude:
PHP код:
unsigned int splice(unsigned char *addrvoid *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*)jmpAddrhook_fn);
    }

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

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

    
write_jmp(saved cbaddr cb);
    
VirtualProtect(addr5PAGE_EXECUTE_READWRITE, &oldprotect);
    
write_jmp(addrhook_fn);
    
VirtualProtect(addr5oldprotect, &oldprotect);

    return (
unsigned intsaved;
}

void write_jmp(unsigned char *addrvoid *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;

__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)

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