Другое С/С++ Вопрос - Ответ

legendabrn

Известный
Проверенный
122
172
Всем привет, никак не могу решить данную ошибку, #define _CRT_SECURE_NO_WARNINGS не помогает.

C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
свойства проекта -> C/C++ -> определение препроцессора -> _CRT_SECURE_NO_WARNINGS
 

Z3roKwq

Известный
294
157
Всем привет, никак не могу решить данную ошибку, #define _CRT_SECURE_NO_WARNINGS не помогает.

C4996 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
если ошибка вылазит из sparsehash и у тебя компилятор v143(17.4), то не поможет, единственный вариант который я нашел это юзать v143(17.2)
 
  • Нравится
Реакции: Marver13881

Marver13881

Новичок
8
0
свойства проекта -> C/C++ -> определение препроцессора -> _CRT_SECURE_NO_WARNINGS
1668945824779.png


При использовании _CRT_SECURE_NO_WARNINGS
 

Marver13881

Новичок
8
0
мб хотя бы функцию покажеш, мы тут не гадалки
1:
    void WriteString(LPCSTR lpName, LPSTR lpString, ...)
    {
        va_list ap;
        char    *szStr = new char[strlen(lpString) * 2 + 1024];
        va_start(ap, lpString);
        vsprintf(szStr, lpString, ap);
        va_end(ap);

        no_error = SetRegister(lpName, REG_SZ, szStr, strlen(szStr));
        delete[] szStr;
    }
    std::string ReadString(LPCSTR lpName)
    {
        char szStr[0x1000];
        no_error = GetRegister(lpName, REG_SZ, szStr, 0x1000);
        return szStr;
    }
 
  • Эм
Реакции: Z3roKwq и MeG@LaDo[N] ^_^

papercut

Участник
90
13
Как в SAMP API дождаться загрузки сампа? Плагин через поток работает, без хуков, то есть там while(1). Вообще если бы кто нибудь подкинул ссылку на исходники какого-нибудь проекта с SAMP API, я бы разобрался
 

AdCKuY_DpO4uLa

Известный
286
474
Как в SAMP API дождаться загрузки сампа? Плагин через поток работает, без хуков, то есть там while(1). Вообще если бы кто нибудь подкинул ссылку на исходники какого-нибудь проекта с SAMP API, я бы разобрался
 

Savchik Blazer

Но я, мечту свою лелея...
Проверенный
672
292
Как в SAMP API дождаться загрузки сампа? Плагин через поток работает, без хуков, то есть там while(1). Вообще если бы кто нибудь подкинул ссылку на исходники какого-нибудь проекта с SAMP API, я бы разобрался
а не проще ли?
C++:
*reinterpret_cast<void**>(GetSAMPHandle() + 0x21A0F8) != nullptr;
 

AdCKuY_DpO4uLa

Известный
286
474
а не проще ли?
C++:
*reinterpret_cast<void**>(GetSAMPHandle() + 0x21A0F8) != nullptr;
Он проверяет в потоке, в то время, пока класс по адресу samp.dll+0x21A0F8 проинициализировался, остальные могли не успеть этого сделать

А вообще, вот адрес под R1 samp.dll+0x21A114 (bool), если самп загрузился, там будет true
 
Последнее редактирование:

kin4stat

mq-team
Всефорумный модератор
2,731
4,693
Харош велосипеды придумывать, все за вас придумали уже

 

papercut

Участник
90
13
Харош велосипеды придумывать, все за вас придумали уже

Гайд и ридми пора подправить, после обновы *Nov 21, 2021* даже такого конструктора kthook_simple_t нету.
Поставил версию от 11 ноября 21, все работает
300px-The_Engineer.jpg
 
  • Ха-ха
Реакции: sizeoftrickster и Z3roKwq

eze

Новичок
3
0
1.Как можно сделать авто обновление exe файла любыми возможными методами
 

sizeoftrickster

…And Megadeth For All?
Проверенный
117
409
Гайд и ридми пора подправить, после обновы *Nov 21, 2021* даже такого конструктора kthook_simple_t нету.
Поставил версию от 11 ноября 21, все работает
300px-The_Engineer.jpg
К вашему вниманию несколько видов защиты:
1) скачать и закинуть в папки: ktsignal и xbyak [Уровень: hard]
2) подключить к проекту [Уровень: easy]
И последнее, самое сложное! Когда просто скопировать не получится, нужно будет разбираться и искать нужное тебе через намеспасе) [Уровень: insane]
 
  • Нравится
Реакции: Savchik Blazer

papercut

Участник
90
13
К вашему вниманию несколько видов защиты:
1) скачать и закинуть в папки: ktsignal и xbyak [Уровень: hard]
2) подключить к проекту [Уровень: easy]
И последнее, самое сложное! Когда просто скопировать не получится, нужно будет разбираться и искать нужное тебе через намеспасе) [Уровень: insane]
Вместо того, чтобы умничать, могли бы объяснить как работают новые хуки, про которые ни слова нигде не написано. В readme и "гайде" описаны методы, которые были больше года назад актуальны.
Вместо методов из примера есть set_cb, который чтобы использовать, надо преисполнится в плюсах. Код с reset remove, выглядит как заклинание, написанное insane'ом(безумцем)
C++:
window_init_hook.set_cb([this](const auto& hook, auto&& hinst)
Я, конечно, понимаю, что лямбда функции это супер удобно. Но вариант из гайда явно проще и понятнее. А объяснение почему функция принимает ссылку на хук и, как я понимаю, ссылку на ссылку на адрес ,который указан при инициализации хука?