.const cRetSendV dq 7D5D75h cGetFirstItemById dq 613A10h cUseItem dq 80E160h .code ServerPackets PROTO :DWORD,:DWORD ; hooked at 0x7D5D6F SendVHook proc ;.text:00000000007D5D6C mov rsi, r8 ;va_list ;.text:00000000007D5D6F mov rbp, rdx ;format ;.text:00000000007D5D72 mov rdi, rcx ;socket push rdx mov rdx, r8 ; va_list call ServerPackets pop rdx mov rbp, rdx mov rdi, rcx jmp qword ptr [cRetSendV] SendVHook endp extern "C" { // SendV customization void ServerPackets(CUserSocket *s, u8 *va_list) { switch(*va_list) { case 0x64: { ServerPacketHandlers::SystemMessage(s, va_list); break; } default: break; } } } void ServerPacketHandlers::SystemMessage(CUserSocket *s, PTR va_list) { int *msgId = (int*)(va_list + 8); int *itemId = (int*)(va_list + 32); //if(*msgId == 30 && *itemId >= 8600 && *itemId <= 8614) if(*msgId == 30 && *itemId == 1061) { s->GetUser()->UseItem(*itemId); } } fUseItem proc jmp qword ptr [cUseItem] fUseItem endp fGetFirstItemById proc add rcx, 5A0h ; CInventory jmp qword ptr [cGetFirstItemById] fGetFirstItemById endp END CUser *CUserSocket::GetUser() { return (CUser*)*(u64*)((u64)this + 0x158); } A:I:S:E:PE:DI:DE:BO=1.000000:1.000000:1.000000:5.000000:1.000000:0:0:1 L:Y:X:H=0:0:0:0:0 Crashed Thread[0]. Server Up Time : Mon Dec 31 02:11:39 2007 Current Time : Mon Dec 31 02:14:27 2007 Elapsed Time : 0 days 0 hours 2 minutes 48 seconds IOBufferPool - 49995 / 50000, PendingWrite 0 bytes [0] =============== object report user[1/0], npc[0/0], item[8/0], usersocket[1] =============== npc server connection log no connect [(1556) 2007/12/31 02:14:27]: ======================= an Access Violation in module L2Server.exe at 0033:004f9c80. start at 2007/12/31 02:11:36 Read from location 00000000 caused an access violation. Registers: EAX=4552f9c0 CS=0033 EIP=004f9c80 EFLGS=00010216 EBX=0e4466e8 SS=002b ESP=4552f778 EBP=424b47f4 ECX=1d370084 DS=002b ESI=1d370084 FS=0053 EDX=424b47f4 ES=002b EDI=41e8ede4 GS=002b Bytes at CS:EIP: 66 0f 7f 70 b8 66 0f 7f 78 a8 66 44 0f 7f 40 98 Stack dump: 4552f778: 00062fe4 00000000 ffffffff 00000000 20b10f08 00000000 00000001 00000000 4552f798: 4552f8a0 00000000 00000000 00000000 4552f948 00000000 00000000 00000000 4552f7b8: 47783462 00000000 00000000 00000000 427b5d94 00000000 00000000 00000000 4552f7d8: 00625f79 00000000 45661190 00000000 427b5d94 00000000 00000000 00000000 4552f7f8: 427b5d94 00000000 00977ce0 00000000 00062ee0 00000000 02abd26c 00000000 4552f818: 4552f948 00000000 00000001 00000000 1a8e8480 00000000 00062fe4 00000000 4552f838: 4552f940 00000000 41e8ede4 00000000 773115fe 000007ff 00000000 00000000 4552f858: ffffffff 00000000 fffffffe ffffffff 47783463 00000000 00000000 00000000 4552f878: 41e8ee54 00000000 00000000 00000000 1a8e7e60 00000000 4552f8a0 00000000 4552f898: 00400000 00000000 000003e5 00000000 4b190884 00000000 1a8e7e60 00000000 ver = Dec 16 2005_22:03:13 GuardInfo : IOThread [0][359] (ahehe): void IOThread_common(void *arglist) -> static bool PickItem(CDBSocket *socket, const unsigned char *packet) -> void CSocket::Send(const char* format, ...) -> User::UseItem(CItem*) Lock Stack : IOThread [1][0] (good): void IOThread_common(void *arglist) Lock Stack : ListenThread [13][110] (good): void ListenThread_common() -> unsigned __stdcall WaitThread(void *) Lock Stack : MainThread [12][469] (good): Lock Stack : GuardInfo end [(1556) 2007/12/31 02:14:27]: *.\ioc.cpp:648(Tue Dec 13 02:52:40 2005) exception