Другое SAMPFUNCS | API C++

AWRage

Активный
642
141
Не работает чет. Вроде должно, заменяем функцию Present (VTable[17]) на свою и в своей вызываем оригинал. До этого в другом плагине делал так же, все работало.
C++:
DWORD dwOriginal = 0x0;

__declspec(naked) void hook()
{
    __asm pushad
    __asm pushfd

    Log("work");

    __asm popfd
    __asm popad

    __asm jmp[dwOriginal]
}

void init()
{
    Log("init");
    while ((*(IDirect3DDevice9 **)0xC97C28) == nullptr)
        Sleep(100);

    IDirect3DDevice9 *Device = *(IDirect3DDevice9 **)0xC97C28;

    Log("%X", Device);

    DWORD *VTable = (DWORD *)*(DWORD *)Device;

    Log("%X", VTable);

    MEMORY_BASIC_INFORMATION mbi;
    VirtualQuery((LPCVOID)VTable, &mbi, sizeof(mbi));
    VirtualProtect(mbi.BaseAddress, mbi.RegionSize, PAGE_READWRITE, &mbi.Protect);
    Log("Start hook.");
 
    dwOriginal = VTable[17];
    VTable[17] = (DWORD)hook;
 
    Log("Finish hook.");
    VirtualProtect(mbi.BaseAddress, mbi.RegionSize, mbi.Protect, &mbi.Protect);
}
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Только сендер ид имеет тип ворд.
А битстрим входящий как перезаписывать?
C++:
            BitStream bs;
            bs.Write((BYTE)ID_PASSENGER_SYNC);
            bs.Write(SenderID);
            bs.Write((PCHAR)&psSync, sizeof(PASSENGER_SYNC_DATA));
            memcpy(hook->bitStream->GetData(), bs.GetData(), sizeof(BitStream));
 
Последнее редактирование:

SR_team

like pancake
BH Team
4,808
6,496
Не работает чет. Вроде должно, заменяем функцию Present (VTable[17]) на свою и в своей вызываем оригинал. До этого в другом плагине делал так же, все работало.
C++:
DWORD dwOriginal = 0x0;

__declspec(naked) void hook()
{
    __asm pushad
    __asm pushfd

    Log("work");

    __asm popfd
    __asm popad

    __asm jmp[dwOriginal]
}

void init()
{
    Log("init");
    while ((*(IDirect3DDevice9 **)0xC97C28) == nullptr)
        Sleep(100);

    IDirect3DDevice9 *Device = *(IDirect3DDevice9 **)0xC97C28;

    Log("%X", Device);

    DWORD *VTable = (DWORD *)*(DWORD *)Device;

    Log("%X", VTable);

    MEMORY_BASIC_INFORMATION mbi;
    VirtualQuery((LPCVOID)VTable, &mbi, sizeof(mbi));
    VirtualProtect(mbi.BaseAddress, mbi.RegionSize, PAGE_READWRITE, &mbi.Protect);
    Log("Start hook.");

    dwOriginal = VTable[17];
    VTable[17] = (DWORD)hook;

    Log("Finish hook.");
    VirtualProtect(mbi.BaseAddress, mbi.RegionSize, mbi.Protect, &mbi.Protect);
}
А нахуя? В SFAPI и так есть хук на нее
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
reserWriteOffset();
ignorebits(8);
write(senderID);
Write((PCHAR)&psSync, sizeof(psSync));
Не перезаписывает оно входящий битстрим(( В итоге ничего не происходит.
C++:
hook->bitStream->ResetWritePointer();
hook->bitStream->IgnoreBits(8);
hook->bitStream->Write(SenderID);
hook->bitStream->Write((PCHAR)&psSync, sizeof(psSync));
 

Dark_Knight

Me, me and me.
Друг
4,085
2,114
Пробуй читать ид пакета и записывать его тоже. Игнорирование прийдется убрать.
 

barspinoff

Известный
126
34
помогите с кодом
никак не могу gui доделать - самп крашит
C++:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{

if (params->packetId == RPC_ClickTextDraw)
{
void *pointer;
char *text;
WORD TextDrawID;
char *settext = "Settings";

params->Read(TextDrawID);
params->ResetReadPointer();

stSAMP *samp = SF->getSAMP()->getInfo();

pointer = (SAMP->pPools->pTextdraw) + 0x2400 + 4 * TextDrawID;
text = *(char **)addr;

if(strcmp(settext, text) != 0)
{
//...
}

}

}