Изменение Команды //healhty
Я нашёл то что искал - изменение комманды //healthy так, чтобы она ещё и СР регенила.
Вот на что наткулся..
.data
Return dq 0047D250h
.code
HealthyCP proc
movsd qword ptr [rax+190h], xmm1
mov rax, [rbx+588h]
movlpd xmm2, qword ptr [rax+4D0h]
movsd qword ptr [rax+198h], xmm2
jmp Return
HealthyCP endp
end
У меня нету уверености что это относится к офф серверу, но так же я и не знаю к яве ли это..
Если это к оффу - просьба рассказать где менять, чем, как, и как можно подетальнее. Зарание спасибо!
— 127.0.0.1 hacker!!1
Это явно относится к офф серваку. А вот где менять - не смогу подсказать... азм не знаю...
В win HEX в l2server.exe нашёл такую строчку 0047D250h - это пока 1 совпадения и я хз что с этим делать)
Нашёл информацию что это всё надо делать с программой Microsoft Visual Studio... Кто расскажет, а?:)
— 127.0.0.1 hacker!!1
На с++ писать дллку которая будет хукать нужное место, и врезать данный участок кода в память. Никакие winhex не нужны.
— Ålderdom - ingen glädje..
Дллка уже есть. Как ее можно "привязать" к серверу?
— 127.0.0.1 hacker!!1
CFF Explorer тебе в помощь.
з.ы Интересно что за дллка такая? Ну-ка? )
— Ålderdom - ingen glädje..
хехе... dll кривая, в работу с сервером никак не хочет вступать.
Всё-таки для меня непостежимо как сделал dll с этого
"data
Return dq 0047D250h
.code
HealthyCP proc
movsd qword ptr [rax+190h], xmm1
mov rax, [rbx+588h]
movlpd xmm2, qword ptr [rax+4D0h]
movsd qword ptr [rax+198h], xmm2
jmp Return
HealthyCP endp"
— 127.0.0.1 hacker!!1
Вот пример хуканья, выдрал из экстендера-примера с пп.
void WriteMemory(DWORD *pAddress, LPCVOID pData, BYTE length)
{
DWORD dwOldProtect = NULL;
SIZE_T bWritten = NULL;
VirtualProtect((LPVOID)(pAddress), length, PAGE_EXECUTE_READWRITE, &dwOldProtect);
WriteProcessMemory(L2Server, (LPVOID)(pAddress), (LPCVOID)pData, length, &bWritten);
VirtualProtect((LPVOID)(pAddress), length, dwOldProtect, &dwOldProtect);
}
..............
void WriteFunctionHook(BYTE *pAddress, DWORD *pFunction, BYTE bNops)
{
BYTE Call = 0xE9;
BYTE Nop = 0x90;
WriteMemory((DWORD *)(pAddress), (LPCVOID)&Call, 1);
DWORD pFuncAddress = (DWORD)pFunction - (DWORD)(pAddress+5);
WriteMemory((DWORD *)(pAddress+1), (LPCVOID)(&pFuncAddress), sizeof(pFuncAddress));
while (bNops != 0)
{
int i = 6;
WriteMemory((DWORD *)(pAddress+i), (LPCVOID)&Nop, 1);
++i;
--bNops;
}
}
....................
WriteFunctionHook((BYTE *)0x8F0E36, (DWORD *) CancelHook, 2);
........................
Далее тело "asm", которое собсна и будет врезано в память:
.data
ReturnAddr dq 005012E4h
.code
CancelHook proc
lea eax, [rdx-1]
cmp eax, 5
jg short Five
mov [rsp+98h], eax
jmp ReturnAddr
Five:
mov eax, 5
mov [rsp+98h], eax
jmp ReturnAddr
CancelHook endp
end
Это как пример, как видишь просто так вот как 2х2 не выйдет...
— Ålderdom - ingen glädje..

