;====================================================================== ; l2extender for l2server.exe x64 version ; Write by x64, Copyright (C) 2006 ; Email & MSN Messenger:ezasm(ezasm@hotmail.com) ;====================================================================== include stdafx.inc .const .code ;============================================================== ;BYTE * GetUserObjectByName(BYTE *pUserSocket, wchar_t *pwszName) ; ;ŇÔ//sendhome char_nameÎŞ»ů׼ ; ;rsp + 90h ·µ»Ř˝áąű˝áąążŞĘĽ ;rsp + A8h ˛éŃŻ˝áąąĚ忪ʼ ;rsp + 120h СдµÄĂű×Ö ;============================================================== GetUserObjectByName proc mov [rsp+08h], rcx ;socket mov [rsp+10h], rdx ;name mov [rsp+18h], rsi mov [rsp+20h], rdi mov rsi, rcx mov rdi, rdx sub rsp, 200h ;»şłĺÇř mov rsi, [rsi + 158h] ;OFFSET_USERSOCKET_USER test rsi, rsi jnz JUMP_START xor rax, rax ;·µ»ŘżŐÖ¸Őë jmp JUMP_PROC_END JUMP_START: ;Ľě˛é˝ÇÉ«Ăűł¤¶Č,ł¬ąý15×Ö·űÔň·µ»ŘżŐÖ¸Őë mov rcx, rdi call wcslen cmp rax, 10h jl JUMP_CHK_NAME_OK xor rax, rax ;Ăű×Öł¬ł¤Ôň·µ»ŘżŐ jmp JUMP_PROC_END JUMP_CHK_NAME_OK: ;ÄÚ´ćÖĂ0 lea rcx, [rsp] xor rdx, rdx mov r8, 200h call memset mov rcx, rdi ;Ăű×Ö lea rdx, [rsp + 120h] ;ת»»ÎŞĐˇĐ´ mov rax, 00759D40h call rax ;LCase ;----------------------------- ;***0045A21E mov r8d, 0E7Eh mov rdx, 00831C40h ; ".\\BuilderCmdHandler.cpp" mov rcx, rsi mov rax, 004331A0h call rax ;Creature_ReadLock ;***ĚîłäλÖĂA0,δ֪..ËĆşő˛»Đ´Ň˛żÉŇÔ mov rax, [rsi] mov rcx, rsi mov rax, [rax + 2C8h] call rax mov [rsp + 0A0h], eax ;ĚîłäλÖĂD0,δ֪ mov rax, [rsi] mov rcx, rsi mov rax, [rax + 778h] call rax mov [rsp + 0D0h], eax ;ĚîłäλÖĂ100,˛éŃŻŐߵĵǽŐʺŠlea r8, [rsi + 27FCh] mov edx, 0Fh lea rcx, [rsp + 100h] call wcscpy_s ;***0045A305 mov rcx, rsi mov rax, 00439A60h call rax ;Creature_ReadUnlock ;---------------------------- ;Ěîłä˝ÇÉ«Ăű lea rcx, [rsp + 120h] ;ĽĆË㳤¶Č call wcslen cmp rax, 8 ;×î´ół¤¶Č jl JUMP_SHORT_NAME mov [rsp + 0C0h], rax ;×Ö·ű¸öĘý mov rcx, 0Fh mov [rsp + 0C8h], rcx ;×î´ół¤¶Č 0x0F xor r8, r8 mov rdx, rax lea rcx, [rsp + 0A8h] mov rax, 00407970h call rax ;operater new() jmp JUMP_COPY_NAME_DONE JUMP_SHORT_NAME: mov [rsp + 0C0h], rax ;×Ö·ű¸öĘý mov rcx, 07h mov [rsp + 0C8h], rcx ;×î´ół¤¶Č 0x07 lea r9, [rax + rax] lea r8, [rsp + 120h] lea rdx, [rcx + rcx] ;»şłĺÇř´óС lea rcx, [rsp + 0B0h] call memcpy_s JUMP_COPY_NAME_DONE: lea rax, [rsp + 0A8h] mov [rsp + 0E0h], rax lea r8, [rsp + 0A8h] lea rdx, [rsp + 090h] mov rcx, 0E842BC0h mov rax, 00455610h call rax mov rax, [rsp + 090h] JUMP_PROC_END: add rsp, 200h ;»şłĺÇř mov rsi, [rsp+18h] mov rdi, [rsp+20h] ret GetUserObjectByName endp END