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

  #1  
Старый 05.08.2021, 21:16
derr0x
Новичок
Регистрация: 29.06.2020
Сообщений: 19
С нами: 3091930

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

Короче решил написать свой самп клиент:

C++:





Код:
BOOL
Inject
(
DWORD pId
,
LPSTR dllName
)
{
HANDLE h
=
OpenProcess
(
PROCESS_ALL_ACCESS
,
FALSE
,
pId
)
;
if
(
h
)
{
LPVOID LoadLibAddr
=
(
LPVOID
)
GetProcAddress
(
GetModuleHandleA
(
"kernel32.dll"
)
,
"LoadLibraryA"
)
;
LPVOID dereercomp
=
VirtualAllocEx
(
h
,
NULL
,
strlen
(
dllName
)
,
MEM_COMMIT
|
MEM_RESERVE
,
PAGE_READWRITE
)
;
WriteProcessMemory
(
h
,
dereercomp
,
dllName
,
strlen
(
dllName
)
,
NULL
)
;
HANDLE asdc
=
CreateRemoteThread
(
h
,
NULL
,
NULL
,
(
LPTHREAD_START_ROUTINE
)
LoadLibAddr
,
dereercomp
,
0
,
NULL
)
;
WaitForSingleObject
(
asdc
,
INFINITE
)
;
VirtualFreeEx
(
h
,
dereercomp
,
strlen
(
dllName
)
,
MEM_RELEASE
)
;
CloseHandle
(
asdc
)
;
CloseHandle
(
h
)
;
return
TRUE
;
}
return
FALSE
;
}
int
_tmain
(
int
argc
,
_TCHAR
*
argv
[
]
)
{
STARTUPINFOA cif
;
ZeroMemory
(
&
cif
,
sizeof
(
STARTUPINFO
)
)
;
PROCESS_INFORMATION pi
;
if
(
CreateProcessA
(
"D:\\Games\\GTA SAMP\\gta_sa.exe"
,
"-c -n NickName -h 228.227.226.225 -p 7777"
,
NULL
,
NULL
,
FALSE
,
DETACHED_PROCESS
|
CREATE_SUSPENDED
,
NULL
,
NULL
,
&
cif
,
&
pi
)
)
{
if
(
pi
.
hProcess
!=
NULL
)
{
if
(
!
Inject
(
pi
.
dwProcessId
,
"D:\\Games\\GTA SAMP\\samp.dll"
)
)
{
TerminateProcess
(
pi
.
hProcess
,
0
)
;
ExitProcess
(
0
)
;
}
ResumeThread
(
pi
.
hThread
)
;
}
}
else
MessageBoxA
(
NULL
,
"Failed to Create Process"
,
"Error"
,
MB_ICONERROR
)
;
return
0
;
}


Все должно работать, но я хз почему не работает, помогите пж
 
Ответить с цитированием

  #2  
Старый 06.08.2021, 12:42
hinazuki
Постоянный
Регистрация: 12.01.2021
Сообщений: 343
С нами: 2808522

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

Решил?
 
Ответить с цитированием

  #3  
Старый 06.08.2021, 12:46
derr0x
Новичок
Регистрация: 29.06.2020
Сообщений: 19
С нами: 3091930

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

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

Решил?
нет

Что никто не писал самп клиент свой? Что вообще ни так я смотрел оригинал сурсы сампа, там по сути просто создается процесс gta_sa.exe с агрументами и потом инжектится samp.dll

Помогите пожалуйста кто нибудь, уже 2 день решить не могу
 
Ответить с цитированием

  #4  
Старый 07.08.2021, 08:52
.deserve
Познающий
Регистрация: 06.09.2018
Сообщений: 32
С нами: 4045092

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

Ты конечно молодец. Копировать научился, а всё остальное по твоему должно и так работать.

CreateProcessA создает процесс по указанному пути и с указанными аргументами, но большинство процессов, тем более игра (если ты не знал) тянут под себя еще кучу зависимостей. Мультиплеер в том числе. Откуда им нахер знать откуда тянуть ресурсы?

Ты создал манекен процесса и отрубил ему пути до зависимостей.

Если ты поместишь свой инжектор в папку с gta_sa.exe, то заметишь, что все работет. Ибо функция CreateProcessA будет всю работу делать за тебя и по умолчанию поставит дефолтный каталог на диск и каталог в котором находится модуль её исполняемый (в твоем случае инжектор).

Но она также предусматривает возможность изменения этого каталога. Так вот если ты запускаешь свой инжектор не из директории где лежит gta_sa.exe, то тебе нужно изменить тот самый параметр CurrentDirectory (текущая директория), чтобы samp и gta_sa смогли тянуть зависимости.

По итогу получаешь:

C++:





Код:
CreateProcessA
(
"D:\\Games\\GTA SAMP\\gta_sa.exe"
,
"-c -n NickName -h 228.227.226.225 -p 7777"
,
NULL
,
NULL
,
FALSE
,
DETACHED_PROCESS
|
CREATE_SUSPENDED
,
NULL
,
"D:\\Games\\GTA SAMP\\"
,
&
cif
,
&
pi
)
)
;


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



Предыдущая тема Следующая тема

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


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




ANTICHAT ™ © 2001- Antichat Kft.