1. Как называется класс, который отвечает за окно над головой персонажа, если точнее - за ник. +
2. Где обрабатывается и краситься никнейм в зависимости от количества кармы? Я так понимаю нужно смотреть что-то связанное с User\CharInfo?
5. В лобби, при выборе персонажа, в левом верхнем углу есть окно, с ником\хп\сп\кармой персонажа, как оно называется?
п.с: все вопросы связаны непосредственно с клиентом игры, interface.u и прочей хренью
п.с.с: решил переделать первый пост в мини-гайд, по мере решения появившихся вопросов, буду добавлять ответы сюда.
Актуальные вопросы выделены жирным цветом.
2. Где обрабатывается и краситься никнейм в зависимости от количества кармы? Я так понимаю нужно смотреть что-то связанное с User\CharInfo?
3. Абнормалы, я так понимаю они захардкожены где-то, вопрос в том где именно, и пытался ли кто-то добавлять свои?Engine.dll -> getNameColor, NWindow.dll, interface.u -> DetailStatusWnd
4. Где захардкожены соулшоты? С панельки шорткатов, при нажатии на них правой клавишей, только от соулшотов идет пакет RequestAutoSoulShot.Engine.dll -> искать функции по abnormal, захардкожены там же.
Код:
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
include 'MACRO/IF.INC'
;-------------------------------------------------------------------------------------
section '.data' data readable writeable
n_NWindow db "NWindow.dll",0
p_waddr dd ?
p_oldValue dd ?
p_unused dd ?
;-------------------------------------------------------------------------------------
section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax, [fdwReason]
.if eax = DLL_PROCESS_ATTACH
call LoadBaseHook
invoke DisableThreadLibraryCalls, [hinstDLL]
.endif
mov eax,TRUE
ret
endp
;-------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------
proc LoadBaseHook
pushad
invoke LoadLibrary,n_NWindow
add eax, 149F09h ;return 0 offset
add [p_waddr], eax
invoke VirtualProtect, [p_waddr],5,PAGE_READWRITE, p_oldValue
mov eax, [p_waddr]
mov byte [eax], 0xE9
mov ebx, addCond
sub ebx, eax
sub ebx, 05h
mov dword [eax+01h], ebx
invoke VirtualProtect, [p_waddr],5,[p_oldValue], p_unused
popad
ret
endp
;-------------------------------------------------------------------------------------
proc addCond
.if eax = 0603h ;HP Potion
mov eax, 1
.elseif eax = 15D8h ;CP Potion
mov eax, 1
.elseif eax = 02D8h ;MP Potion
mov eax, 1
.else
xor eax, eax
.endif
retn 04h
endp
;-------------------------------------------------------------------------------------
;-------------------------------------------------------------------------------------
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
;-------------------------------------------------------------------------------------
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL'
import kernel,\
DisableThreadLibraryCalls, 'DisableThreadLibraryCalls',\
LoadLibrary, 'LoadLibraryA',\
VirtualProtect, 'VirtualProtect'
;-------------------------------------------------------------------------------------
section '.edata' export data readable
export 'DSETUP.DLL',\
DllEntryPoint, 'DllEntryPoint',\
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' fixups data discardable
Для IL-HF не нашел его в interface.u. Ник в лобби краситься прямо в NWindow.dll
Идем в NWindow.dll по оффсету 17F027 и меняем 7E -> 7D, так же идем сюда 17F021 и меняем FF -> 00
Дальше в engine.dll идем по оффсету 181760 и меняем байты 56 8B B1 98 01 00 00 на 56 BE 00 00 00 00 90.
Дабы в окне с характеристиками персонажа, цвет никнейма так же был белым, находим класс DetailStatusWnd в interface.u, и в нем же находим переменную CrimRate, убираем ее из параметров NameColor.* = 255 - CrimRate, готово!
Дальше в engine.dll идем по оффсету 181760 и меняем байты 56 8B B1 98 01 00 00 на 56 BE 00 00 00 00 90.
Дабы в окне с характеристиками персонажа, цвет никнейма так же был белым, находим класс DetailStatusWnd в interface.u, и в нем же находим переменную CrimRate, убираем ее из параметров NameColor.* = 255 - CrimRate, готово!
п.с: все вопросы связаны непосредственно с клиентом игры, interface.u и прочей хренью
п.с.с: решил переделать первый пост в мини-гайд, по мере решения появившихся вопросов, буду добавлять ответы сюда.
Актуальные вопросы выделены жирным цветом.
Последнее редактирование: