
04.08.2020, 17:11
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
а зачем
|
|
|

04.08.2020, 17:12
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Как сделать нормальный ноп для RPC? В плане как хранить данные о RPC? В собейте я нихера не понял  . Я понимаю что нужна структурка RPC, в которой будет ее статус и прочие свойства, но как хранить эти структуры удобно и т.д.?
|
|
|

04.08.2020, 17:38
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от KiN4StAt
Как сделать нормальный ноп для RPC? В плане как хранить данные о RPC? В собейте я нихера не понял  . Я понимаю что нужна структурка RPC, в которой будет ее статус и прочие свойства, но как хранить эти структуры удобно и т.д.?
|
|
|

04.08.2020, 17:42
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от loganhackerdff
Да не, не то. Мне надо в функции приема RPC, проверять, включено ли оно. Примерно продумал такой ход: Массив, в нем индекс = ID RPC. массив типа struct RPC, в котором два поля: std::string name и bool enabled. Мне теперь надо придумать как это заполнять
|
|
|

05.08.2020, 04:42
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от KiN4StAt
Да не, не то. Мне надо в функции приема RPC, проверять, включено ли оно. Примерно продумал такой ход: Массив, в нем индекс = ID RPC. массив типа struct RPC, в котором два поля: std::string name и bool enabled. Мне теперь надо придумать как это заполнять
Используй std::map.
Заполнять через for.
|
|
|

05.08.2020, 13:23
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от Musaigen
Используй std::map.
Заполнять через for.
Можно спокойной через vector сделать не напрягаясь и юзать std::find_if для поиска любых значений.
map имеет метод find, но позволит искать по первому элементу пары(sld:  air)
Ideone.com
Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.
ideone.com
|
|
|

04.08.2020, 23:53
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
как через WndProc получить нажатие кнопок на мышке (а именно Средней, X1 и X2)
|
|
|

04.08.2020, 23:55
|
|
Флудер
Регистрация: 17.06.2013
Сообщений: 3,635
С нами:
6791977
Репутация:
183
|
|
|
|
|

05.08.2020, 13:36
|
|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Здравствуйте, опять я со своими цыганскими фокусами по трансформации internal->external, на сей раз Nametag. Подскажите, что неправильно, я так и не нашёл проблему, а работать оно не хочет.
P.S.
1. Интернал точно правильный.
2. Получение адреса samp.dll точно работает
3. Виртал протект делал, не помогает.
Internal:
Код:
Idefine SAMP_INFO 0x21A0F8
#define SAMP_SETTINGS 0x3D5
DWORD* pInfo;
BYTE* ThroughWalls;
BYTE* ShowNameTags;
float* fDistance;
DWORD SampDLL = (DWORD)GetModuleHandleA("samp.dll");
if (SampDLL) {
pInfo = (DWORD*)(SampDLL + SAMP_INFO);
while (*pInfo == 0) Sleep(1000);
while (*(DWORD*)(*pInfo + SAMP_SETTINGS) == 0) Sleep(1000);
ShowNameTags = (BYTE*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x38);
ThroughWalls = (BYTE*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x2F);
fDistance = (float*)((DWORD*)(*(DWORD*)(*pInfo + SAMP_SETTINGS) + 0x27));
for (;;)
{
do {
Sleep(100);
} while (!KeyPressed(VK_MENU) || !KeyPressed(0x32));
do {
Sleep(50);
} while (KeyPressed(0x32));
gta_showText("okoboga v2 ~g~Activated", 1000, NULL, NULL);
*ShowNameTags = 1;
*ThroughWalls = 0;
*fDistance = 999.0f;
do {
Sleep(100);
} while (!KeyPressed(VK_MENU) || !KeyPressed(0x32));
do {
Sleep(50);
} while (KeyPressed(0x32));
gta_showText("okoboga v2 ~r~Deactivated", 1000, NULL, NULL);
*ShowNameTags = 1;
*ThroughWalls = 1;
*fDistance = 0.0f;
}
}
External (моё):
Код:
#define SAMP_INFO 0x21A0F8
#define SAMP_SETTINGS 0x3D5
if (checkBox5->Checked)
{
DWORD pInfo;
BYTE ShowNameTags = 1;
BYTE ThroughWalls = 0;
float fDistance = 999.0f;
ReadProcessMemory(hProcess, (LPVOID)(moduleBase + SAMP_INFO), &pInfo, sizeof(pInfo), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x38), &ShowNameTags, sizeof(ShowNameTags), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x2F), &ThroughWalls, sizeof(ThroughWalls), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x27), &fDistance, sizeof(fDistance), nullptr);
}
else
{
DWORD pInfo;
BYTE ShowNameTags = 1;
BYTE ThroughWalls = 1;
float fDistance = 0.0f;
ReadProcessMemory(hProcess, (LPVOID)(moduleBase + SAMP_INFO), &pInfo, sizeof(pInfo), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x38), &ShowNameTags, sizeof(ShowNameTags), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x2F), &ThroughWalls, sizeof(ThroughWalls), nullptr);
WriteProcessMemory(hProcess, (LPVOID)(pInfo + SAMP_SETTINGS + 0x27), &fDistance, sizeof(fDistance), nullptr);
|
|
|

05.08.2020, 14:04
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от T4yz1e
Здравствуйте, опять я со своими цыганскими фокусами по трансформации internal->external, на сей раз Nametag. Подскажите, что неправильно, я так и не нашёл проблему, а работать оно не хочет.
Если я все правильно понял, то
Код:
(DWORD*)(*pInfo + SAMP_SETTINGS)
Преобразует *pInfo+SAMP_SETTINGS в DWORD*, после идет +0x27, а из-за арифметики указателей, это получается 0x27 * 4, и потом идет разыменование.
Возможно ты еще с преобразованиями накосячил, пока с телефонам, не совсем удобно смотреть
Также возможно у тебя DWORD задейфанен в 8 байт, а не в 4. Я однажды из-за этого час искал где приколы возникли
нашел где ошибка. Вместо
C++:
Код:
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
moduleBase
+
SAMP_INFO
)
,
&
pInfo
,
sizeof
(
pInfo
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
+
0x38
)
,
&
ShowNameTags
,
sizeof
(
ShowNameTags
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
+
0x2F
)
,
&
ThroughWalls
,
sizeof
(
ThroughWalls
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
+
0x27
)
,
&
fDistance
,
sizeof
(
fDistance
)
,
nullptr
)
;
Должно быть что-то типа такого:
C++:
Код:
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
moduleBase
+
SAMP_INFO
)
,
&
pInfo
,
sizeof
(
pInfo
)
,
nullptr
)
;
DWORD pSettings
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pInfo
+
SAMP_SETTINGS
)
,
&
pSettings
,
sizeof
(
pSettings
)
,
NULL
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pSettings
+
0x38
)
,
&
ShowNameTags
,
sizeof
(
ShowNameTags
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pSettings
+
0x2F
)
,
&
ThroughWalls
,
sizeof
(
ThroughWalls
)
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pSettings
+
0x27
)
,
&
fDistance
,
sizeof
(
fDistance
)
,
nullptr
)
;
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|