Initial MSVC 2008 projects workspace
This commit is contained in:
53
my_dsetup/dsetup.asm
Normal file
53
my_dsetup/dsetup.asm
Normal file
@@ -0,0 +1,53 @@
|
||||
;wildcard, by Fyyre
|
||||
;http://fyyre.l2-fashion.de
|
||||
;modified to not disable GameGuard, by minlexx ;)
|
||||
; just to link to L2Detect.dll
|
||||
;
|
||||
|
||||
format PE GUI 4.0 DLL at 00400000h
|
||||
entry DllEntryPoint
|
||||
|
||||
include '%fasminc%\win32a.inc'
|
||||
|
||||
section '.text' code readable executable
|
||||
|
||||
proc DllEntryPoint
|
||||
mov eax, 1
|
||||
ret
|
||||
; next will never be executed, but reference to L2Detect.dll will remain )
|
||||
call dword [L2Detect_fake] ; minlexx ;) if we don't call it, it won't appear in imports section =[
|
||||
endp
|
||||
|
||||
; include standard dsetup.dll exports (c) Fyyre
|
||||
include 'inc\exported.inc'
|
||||
|
||||
section '.idata' import data readable
|
||||
|
||||
library kernel32,'kernel32.dll',\
|
||||
l2detect,'l2detect.dll' ; minlexx ;)
|
||||
|
||||
include '%fasminc%\API\KERNEL32.INC'
|
||||
import l2detect, L2Detect_fake,'fake' ; minlexx ;)
|
||||
|
||||
section '.edata' export data readable executable
|
||||
export 'wildcard.dll',\
|
||||
DirectXDeviceDriverSetupA,'DirectXDeviceDriverSetupA',\
|
||||
DirectXDeviceDriverSetupW,'DirectXDeviceDriverSetupW',\
|
||||
DirectXRegisterApplicationA,'DirectXRegisterApplicationA',\
|
||||
DirectXRegisterApplicationW,'DirectXRegisterApplicationW',\
|
||||
DirectXSetupA,'DirectXSetupA',\
|
||||
DirectXSetupIsJapan,'DirectXSetupIsJapan',\
|
||||
DirectXSetupIsJapanNec,'DirectXSetupIsJapanNec',\
|
||||
DirectXSetupW,'DirectXSetupW',\
|
||||
DirectXUnRegisterApplication,'DirectXUnRegisterApplication',\
|
||||
DirectXSetupSetCallback,'DirectXSetupSetCallback',\
|
||||
DirectXSetupGetVersion,'DirectXSetupGetVersion',\
|
||||
DirectXSetupCallback,'DirectXSetupCallback',\
|
||||
DirectXSetupGetFileVersion,'DirectXSetupGetFileVersion',\
|
||||
DirectXLoadString,'DirectXLoadString',\
|
||||
DirectXSetupIsEng,'DirectXSetupIsEng',\
|
||||
DirectXSetupShowEULA,'DirectXSetupShowEULA',\
|
||||
DirectXSetupGetEULAA,'DirectXSetupGetEULAA',\
|
||||
DirectXSetupGetEULAW,'DirectXSetupGetEULAW'
|
||||
|
||||
section '.reloc' data discardable fixups
|
BIN
my_dsetup/dsetup.dll
Normal file
BIN
my_dsetup/dsetup.dll
Normal file
Binary file not shown.
181
my_dsetup/dsetup_fyyre.asm
Normal file
181
my_dsetup/dsetup_fyyre.asm
Normal file
@@ -0,0 +1,181 @@
|
||||
;wildcard, by Fyyre
|
||||
;http://fyyre.l2-fashion.de
|
||||
;
|
||||
|
||||
format PE GUI 4.0 DLL at 00400000h
|
||||
entry DllEntryPoint
|
||||
|
||||
ERROR_INVALID_DATA equ 13
|
||||
|
||||
include '%fasminc%\win32a.inc'
|
||||
|
||||
section '.text' code readable executable
|
||||
|
||||
proc DllEntryPoint
|
||||
cmp dword [IsCorePatched], 1
|
||||
je @F
|
||||
call PatchCoreDll
|
||||
@@:
|
||||
cmp dword [IsEnginePatched], 1
|
||||
je @F
|
||||
call verify_opcodes
|
||||
@@:
|
||||
mov eax, 1
|
||||
ret
|
||||
call dword [L2Detect_fake] ; minlexx ;) if we don't call it, it won't appear in imports section =[
|
||||
endp
|
||||
|
||||
proc PatchCoreDll
|
||||
mov eax, [?StaticInit@FName@@SAXXZ] ;check for non-Themida opcodes
|
||||
mov eax, [eax]
|
||||
cmp eax, 06AEC8B55h
|
||||
je @F
|
||||
ret
|
||||
@@:
|
||||
pushad
|
||||
mov ebp, esp
|
||||
lea edx, [ebp-4]
|
||||
push edx ;old protect
|
||||
push PAGE_READWRITE ;0x40
|
||||
push 4 ;one dword
|
||||
mov ebx, [?GL2UseGameGuard@@3HA] ;address of export
|
||||
push ebx
|
||||
push -1 ;(-1) == GetCurrentProcess
|
||||
call [VirtualProtectEx]
|
||||
; test al, al
|
||||
; jz @F ;should never fail...
|
||||
;
|
||||
mov dword [ebx], 0h ;set ?GL2UseGameGuard@3HLA to false
|
||||
mov [IsCorePatched], 1 ;mark as complete
|
||||
mov esp, ebp
|
||||
popad ;restore registers, etc.
|
||||
ret
|
||||
endp
|
||||
|
||||
proc verify_opcodes
|
||||
push edi
|
||||
mov edi, [?Destroy@UNetworkHandler@@UAEXXZ] ;ExRestart client is always the function above this one,
|
||||
;for CT2.2 and below...
|
||||
cmp dword [edi], 0F98B5753h
|
||||
jne @F
|
||||
call PatchEngineDll
|
||||
|
||||
@@:
|
||||
pop edi
|
||||
ret
|
||||
endp
|
||||
|
||||
proc PatchEngineDll ;locate ExRestartClient & IsRASConnected
|
||||
push edi ;both are non-exported.
|
||||
push ecx
|
||||
|
||||
std ;set the directional flag, search backwards in memory.
|
||||
mov ecx, 0FFFFh
|
||||
mov eax, 06AEC8B55h
|
||||
;edi == address of UNetworkHandler::Destroy ... no need to set it again.
|
||||
|
||||
@@:
|
||||
repne scasb
|
||||
jcxz error_handler ;if ecx == zero, our search fails.
|
||||
cmp dword [edi+1], eax
|
||||
jne @B
|
||||
inc edi
|
||||
cmp dword [edi+18h], 007B0EC81h ;sub esp, 7B0h == IsRASConnected
|
||||
jne _is_ct2_2_or_lower ;if not present, client is CT2.2 or lower.
|
||||
mov dword [edi], 0C0FEC033h ;replace function start with xor eax, eax .. inc al
|
||||
add edi, 4 ;move forward by one dword
|
||||
mov byte [edi], 0C3h ;retn - replace function start with -->> return true;
|
||||
|
||||
mov ecx, 0FFFFh
|
||||
@@:
|
||||
repne scasb
|
||||
jcxz error_handler
|
||||
cmp dword [edi+1], eax
|
||||
jne @B
|
||||
inc edi
|
||||
|
||||
_is_ct2_2_or_lower:
|
||||
mov dword [edi], 0C0FEC033h
|
||||
add edi, 4
|
||||
mov byte [edi], 0C3h
|
||||
|
||||
@@:
|
||||
cld ;fix the directional flag back.
|
||||
pop ecx ;restore saved registers.
|
||||
pop edi
|
||||
|
||||
mov [IsEnginePatched], 1
|
||||
ret
|
||||
endp
|
||||
|
||||
proc error_handler
|
||||
;when ecx == 0 we display a message box/ExitProcess, searching beyond the code section is pointless
|
||||
;in this situation and will only end up crashing.
|
||||
;
|
||||
cmp eax, 250C862Bh
|
||||
je @F
|
||||
|
||||
push 0
|
||||
push error_caption
|
||||
push error_text
|
||||
push MB_OK
|
||||
call [MessageBoxA]
|
||||
push ERROR_INVALID_DATA
|
||||
call [ExitProcess]
|
||||
|
||||
@@:
|
||||
xor ecx, ecx
|
||||
mov bl, 0
|
||||
ret
|
||||
endp
|
||||
|
||||
include 'inc\exported.inc'
|
||||
|
||||
section '.data' data readable writeable
|
||||
cmpb1 dd 0
|
||||
IsCorePatched dd 0
|
||||
IsEnginePatched dd 0
|
||||
dw 0
|
||||
error_text db 'byte signature not found =( contact me -->> fyyre@nightmail.ru', 0
|
||||
dw 0
|
||||
error_caption db 'error_handler', 0
|
||||
dw 0
|
||||
Fyyre du 'Fyyre', 0 ; =)
|
||||
|
||||
section '.idata' import data readable
|
||||
|
||||
library kernel32,'kernel32.dll',\
|
||||
user32, 'user32.dll',\
|
||||
core,'core.dll',\
|
||||
engine,'engine.dll',\
|
||||
l2detect,'L2Detect.dll'
|
||||
|
||||
include '%fasminc%\API\KERNEL32.INC'
|
||||
include '%fasminc%\API\USER32.INC'
|
||||
include 'inc\core.inc'
|
||||
include 'inc\engine.inc'
|
||||
import l2detect, L2Detect_fake,'fake' ; minlexx ;)
|
||||
|
||||
section '.edata' export data readable executable
|
||||
export 'dsetup_fyyre.dll',\
|
||||
DirectXDeviceDriverSetupA,'DirectXDeviceDriverSetupA',\
|
||||
DirectXDeviceDriverSetupW,'DirectXDeviceDriverSetupW',\
|
||||
DirectXRegisterApplicationA,'DirectXRegisterApplicationA',\
|
||||
DirectXRegisterApplicationW,'DirectXRegisterApplicationW',\
|
||||
DirectXSetupA,'DirectXSetupA',\
|
||||
DirectXSetupIsJapan,'DirectXSetupIsJapan',\
|
||||
DirectXSetupIsJapanNec,'DirectXSetupIsJapanNec',\
|
||||
DirectXSetupW,'DirectXSetupW',\
|
||||
DirectXUnRegisterApplication,'DirectXUnRegisterApplication',\
|
||||
DirectXSetupSetCallback,'DirectXSetupSetCallback',\
|
||||
DirectXSetupGetVersion,'DirectXSetupGetVersion',\
|
||||
DirectXSetupCallback,'DirectXSetupCallback',\
|
||||
DirectXSetupGetFileVersion,'DirectXSetupGetFileVersion',\
|
||||
DirectXLoadString,'DirectXLoadString',\
|
||||
DirectXSetupIsEng,'DirectXSetupIsEng',\
|
||||
DirectXSetupShowEULA,'DirectXSetupShowEULA',\
|
||||
DirectXSetupGetEULAA,'DirectXSetupGetEULAA',\
|
||||
DirectXSetupGetEULAW,'DirectXSetupGetEULAW'
|
||||
|
||||
section '.reloc' data discardable fixups
|
||||
section '.rsrc' data readable resource from 'wildcard.res'
|
BIN
my_dsetup/dsetup_radar.dll
Normal file
BIN
my_dsetup/dsetup_radar.dll
Normal file
Binary file not shown.
2677
my_dsetup/inc/core.inc
Normal file
2677
my_dsetup/inc/core.inc
Normal file
File diff suppressed because it is too large
Load Diff
17
my_dsetup/inc/dsetup.inc
Normal file
17
my_dsetup/inc/dsetup.inc
Normal file
@@ -0,0 +1,17 @@
|
||||
;fyyre
|
||||
;
|
||||
import dsetup,\
|
||||
DirectXDeviceDriverSetup,'DirectXDeviceDriverSetupA',\
|
||||
DirectXLoadString,'DirectXLoadString',\
|
||||
DirectXRegisterApplication,'DirectXRegisterApplicationA',\
|
||||
DirectXSetup,'DirectXSetupA',\
|
||||
DirectXSetupCallback,'DirectXSetupCallback',\
|
||||
DirectXSetupGetEULA,'DirectXSetupGetEULAA',\
|
||||
DirectXSetupGetFileVersion,'DirectXSetupGetFileVersion',\
|
||||
DirectXSetupIsJapanNec,'DirectXSetupIsJapanNec',\
|
||||
DirectXSetupIsEng,'DirectXSetupIsEng',\
|
||||
DirectXSetupIsJapan,'DirectXSetupIsJapan',\
|
||||
DirectXSetupGetVersion,'DirectXSetupGetVersion',\
|
||||
DirectXSetupSetCallback,'DirectXSetupSetCallback',\
|
||||
DirectXSetupShowEUL,'DirectXSetupShowEULA',\
|
||||
DirectXUnRegisterApplication,'DirectXUnRegisterApplication'
|
10346
my_dsetup/inc/engine.inc
Normal file
10346
my_dsetup/inc/engine.inc
Normal file
File diff suppressed because it is too large
Load Diff
88
my_dsetup/inc/exported.inc
Normal file
88
my_dsetup/inc/exported.inc
Normal file
@@ -0,0 +1,88 @@
|
||||
proc DirectXDeviceDriverSetupA
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXDeviceDriverSetupW
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXRegisterApplicationA
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
proc DirectXRegisterApplicationW
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupA
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupIsJapan
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupIsJapanNec
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupW
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXUnRegisterApplication
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupSetCallback
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupGetVersion
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupCallback
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupGetFileVersion
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXLoadString
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupIsEng
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupShowEULA
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupGetEULAA
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
||||
|
||||
proc DirectXSetupGetEULAW
|
||||
xor eax, eax
|
||||
ret
|
||||
endp
|
BIN
my_dsetup/wildcard.res
Normal file
BIN
my_dsetup/wildcard.res
Normal file
Binary file not shown.
Reference in New Issue
Block a user