All pastes #995174 Raw Edit

Something

public text v1 · immutable
#995174 ·published 2008-04-23 22:20 UTC
rendered paste body
;======================================================================
; 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