Кто нибудь отучивал волкер от верификации?
Я решил попробовать сделать как в WSS но чего то не хватает, не пойму чего.
Для волкера 10.9.1 я взял из patcher.ini (WSS) запись:
[L2Walker 10.9.1]
Offset1=$004168CA
Offset2=$00626B54
По адресу Offset1 находится:
Код:
004168C0 |. B8 60806100 MOV EAX,618060
004168C5 |. E8 F6F40100 CALL 00435DC0 ; L2Walker.00435DC0
004168CA |. 83F8 01 CMP EAX,1
004168CD |. 75 22 JNZ SHORT 004168F1 ; L2Walker.004168F1
004168CF |. C783 84000000>MOV DWORD PTR DS:[EBX+84],3
Тут я понял патчить нужно так:
Код:
004168C0 |. B8 60806100 MOV EAX,618060
004168C5 |. E8 F6F40100 CALL 00435DC0 ; L2Walker.00435DC0
004168CA B8 01000000 MOV EAX,1
004168CF |. C783 84000000>MOV DWORD PTR DS:[EBX+84],3
Или как делал xkor для WCorrector:
Код:
004168C0 |. B8 60806100 MOV EAX,618060
004168C5 |. E8 F6F40100 CALL 00435DC0 ; L2Walker.00435DC0
004168CA B0 01 MOV AL,1
004168CC 90 NOP
004168CD 90 NOP
004168CE 90 NOP
004168CF |. C783 84000000>MOV DWORD PTR DS:[EBX+84],3
По адресу Offset2 находится нечто похожее на структуру для:
delphi Код:
DWORD(Pointer(Offset2)^) := DWORD(inet_addr(PAnsiChar(LoginServerIP))); //LoginServerIP:String
WORD(Pointer(Integer(Offset2)+4)^) := WORD(LoginServerPort); //LoginServerPort:Integer
WORD(Pointer(Integer(Offset2)+8)^) := WORD(ProtocolVersion); //ProtocolVersion:Integer
Извиняюсь за код выше, по другому не дочухал как можно оформить.
Вот для наглядности этот же Offset2:
00626B54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 -
LoginServerIP
00 00 -
LoginServerPort
00 00 -
ProtocolVersion
Не ясно, что ему не хватает, бот ловит первый пакет, успешно его расшифровывает, после короткое время тупит и высыпает 3 ошибки без деталей и благополучно дохнет...
Кто может делал, что то подобное, может знает что ему не хватает то.(