HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #4071  
Старый 14.10.2019, 00:53
Stiopko
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами: 4319022

Репутация: 113
По умолчанию

Цитата:
Сообщение от SiTrak  

Нихуя ты выдал, мне даже интересно стало для чего ?🙃
Ну CMDHelper популярный плагин, у меня в плагине есть функция подмены главного символа команды типа / на что-то другое например на #, если я заменяю на # то CMDHelper перестает подсказывать доступные команды, я нашел адрес для патча плагина, теперь нужно только определить загружен он или нет)
 
Ответить с цитированием

  #4072  
Старый 14.10.2019, 00:58
Carrentine
Постоянный
Регистрация: 25.12.2018
Сообщений: 568
С нами: 3886298

Репутация: 113


По умолчанию

Цитата:
Сообщение от Stiopko  

Помомогите пожалуйста с опредением загруженого модуля(сф плагина) в гташку?

Так как название файла сф плагина можна пожно изменить я написал функцию которая по идее должна определять загружен ли плагин в игру или нет, название плагина CMDHelper.sf

я хотел делать так если в памяти выделенной под модуль есть определенная строка то это тот модуль который мне нужен, но не не работает

C++:





Код:
#define CMDHELPER_CHECK 0x172C8
HANDLE CmdEdit
::
CheckCMDHelperHANDLE
(
)
{
static
const
char
*
checkStr
=
"{FFA0661D}[blast.hk] {FFFFFF}CMD helper by {FFA0661D}MISTER_GONWIK"
;
HANDLE hProcess
;
HMODULE hMods
[
1024
]
;
DWORD cbNeeded
;
hProcess
=
GetCurrentProcess
(
)
;
if
(
NULL
==
hProcess
)
return
NULL
;
HMODULE ret
=
NULL
;
if
(
K32EnumProcessModules
(
hProcess
,
hMods
,
sizeof
(
hMods
)
,
&
cbNeeded
)
!=
NULL
)
{
DWORD dwProt
;
MODULEINFO module_info
;
MEMORY_BASIC_INFORMATION mem_info
;
TCHAR szModName
[
MAX_PATH
]
;
DWORD base
;
for
(
int
i
=
0
;
i

CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
VirtualQuery
(
(
void
*
)
(
base
+
CMDHELPER_CHECK
)
,
&
mem_info
,
sizeof
(
mem_info
)
)
!=
NULL
)
{
if
(
mem_info
.
Protect
==
PAGE_READONLY
&&
(
DWORD
)
mem_info
.
AllocationBase
+
mem_info
.
RegionSize
>
base
+
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
!
strcmp
(
(
const
char
*
)
(
hMods
[
i
]
+
CMDHELPER_CHECK
)
,
checkStr
)
)
ret
=
hMods
[
i
]
;
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"INC STR %s"
,
szModName
)
;
}
}
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"ERR %s (0x%08X) %u"
,
szModName
,
hMods
[
i
]
,
GetLastError
(
)
)
;
}
}
}
CloseHandle
(
hProcess
)
;
return
ret
;
}

Нихуя не понял, но очень интересно.
 
Ответить с цитированием

  #4073  
Старый 14.10.2019, 10:32
Roger571
Познающий
Регистрация: 22.07.2015
Сообщений: 58
С нами: 5689694

Репутация: 68
По умолчанию

Цитата:
Сообщение от Stiopko  

Ну CMDHelper популярный плагин, у меня в плагине есть функция подмены главного символа команды типа / на что-то другое например на #, если я заменяю на # то CMDHelper перестает подсказывать доступные команды, я нашел адрес для патча плагина, теперь нужно только определить загружен он или нет)
Определяй не по строке, а по массиву байт. Пример можешь посмотреть в собейте, там так детектится версия сампа
 
Ответить с цитированием

  #4074  
Старый 14.10.2019, 11:02
LuaQ
Познающий
Регистрация: 21.01.2019
Сообщений: 84
С нами: 3848030

Репутация: 18
По умолчанию

Каким способом лучше всего проверять директорию плагина? Как извлечь расширение файла из строки? Нуждаюсь в самых лучших способах
 
Ответить с цитированием

  #4075  
Старый 14.10.2019, 14:26
LuaQ
Познающий
Регистрация: 21.01.2019
Сообщений: 84
С нами: 3848030

Репутация: 18
По умолчанию

Цитата:
Сообщение от ReganRomov  

Как из исходника сделать длл?
Открыть .sln файл с собрать проект
 
Ответить с цитированием

  #4076  
Старый 14.10.2019, 15:43
ALF
Постоянный
Регистрация: 14.11.2017
Сообщений: 319
С нами: 4472205

Репутация: 163
По умолчанию

Цитата:
Сообщение от LuaQ  

Каким способом лучше всего проверять директорию плагина? Как извлечь расширение файла из строки? Нуждаюсь в самых лучших способах
найти плагины в папке? если я правильно понял, то вот

C++:





Код:
#include 
#include 
namespace
fs
=
std
::
filesystem
;
std
::
vector

FindFiles
(
)
{
std
::
vector

vFiles
;
for
(
auto
p
:
fs
::
directory_iterator
(
fs
::
current_path
(
)
.
string
(
)
.
append
(
"\\SAMPFUNCS"
)
)
)
{
if
(
!
is_regular_file
(
p
.
status
(
)
)
)
continue
;
auto
strExtension
=
p
.
path
(
)
.
extension
(
)
.
string
(
)
;
std
::
transform
(
strExtension
.
begin
(
)
,
strExtension
.
end
(
)
,
strExtension
.
begin
(
)
,
[
]
(
BYTE c
)
{
return
std
::
tolower
(
c
)
;
}
)
;
if
(
!
strExtension
.
compare
(
".sf"
)
)
vFiles
.
push_back
(
p
.
path
(
)
.
filename
(
)
.
string
(
)
)
;
}
return
vFiles
;
}
 
Ответить с цитированием

  #4077  
Старый 15.10.2019, 21:42
atizoff
Познавший АНТИЧАТ
Регистрация: 02.08.2018
Сообщений: 1,295
С нами: 4095395

Репутация: 183


По умолчанию

ребят есть у кого getproccessbyid, вставлять char, получать int?
 
Ответить с цитированием

  #4078  
Старый 15.10.2019, 21:52
LuaQ
Познающий
Регистрация: 21.01.2019
Сообщений: 84
С нами: 3848030

Репутация: 18
По умолчанию

Цитата:
Сообщение от social enemy  

ребят есть у кого getproccessbyid, вставлять char, получать int?
C++:





Код:
DWORD
GetPID
(
char
*
window
)
{
HWND idf
=
FindWindowA
(
NULL
,
window
)
;
DWORD pid
;
return
GetWindowThreadProcessId
(
idf
,
&
pid
)
;
}


ну попробуй
 
Ответить с цитированием

  #4079  
Старый 17.10.2019, 15:33
blessave
Постоянный
Регистрация: 22.05.2018
Сообщений: 362
С нами: 4199072

Репутация: 98
По умолчанию

биндер с настройкой клавиш, через ини файл
 
Ответить с цитированием

  #4080  
Старый 17.10.2019, 16:28
LuaQ
Познающий
Регистрация: 21.01.2019
Сообщений: 84
С нами: 3848030

Репутация: 18
По умолчанию

Цитата:
Сообщение от tedj  

биндер с настройкой клавиш, через ини файл
И что?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.