Задать вопрос
  • Как крякнуть защищенную программу?

    @cicatrix
    было бы большой ошибкой думать
    Это отдельное направление, которое называется Реверс-инжиниринг.
    Те, кто этим занимается, это действительно, своего рода, "элита", так как там не существует готовых методик, шаблонных решений и пр. Каждая новая программа - чёрный ящик, который надо разобрать и посмотреть, как он работает, при этом ты ничего не знаешь о том, что было на уме у его создателя.
    Разумеется, любая защита обходится, но дело это кропотливое, долгое, требующее хороших знаний языка ассемблера для той линейки процессоров, под который программа написана.
    Для C# существует IL-Spy или похожие дисассемблеры, которые действительно позволяют получить некое подобие исходного кода, но, зачастую, даже имея на руках код (очень часто обфуцированный) предстоит ещё очень долгая, нудная и кропотливая работа только для того, чтобы разобраться, что там вообще происходит.
    Кряк "взлом" программы часто сводится к подмене результата проверки условия. Простой if, казалось бы. Однако найти нужное место в машинном коде или в памяти процесса - очень и очень сложно.

    Сразу говорю, что кракером быстро не становятся. На это могут потребоваться годы наряжённого труда и самообучения (помните - этому никто не сможет научить, этому можно только научиться самому), методом проб и ошибок. А каждый новый взлом - это новая задача, требующая новых знаний и совсем других подходов.
    Ответ написан
    Комментировать
  • C++ WinForm Как правильно вывести массив структур переданный через указатель?

    @res2001
    Developer, ex-admin
    base[ind].birth.month
    Вообще и остальные поля нужно выводить через точку.
    Кроме того, если приведенный код ch_kol() - это реально все что есть в функции, то это не верно. Вы в ch_kol возвращаете указатель на локальную переменную, как только отработает return этот указатель станет не действиетльным, т.к. массив base перестанет существовать после выхода из функции.
    Подобное определение массива baseProgr base[max];, если max не константа приводит к объявлению массива переменной длины (VLA). Строго говоря С++ не поддерживает VLA, т.к. это фишка Си. Но некоторые компиляторы (gcc) при включенных расширениях (по умолчанию включено) позволяют их использовать. Но этот код становится не переносимым, т.к. при других опциях компилятора или на другом компиляторе код может не собраться.
    Ответ написан
    4 комментария
  • Как перевести строку бинарного файла в UTF8?

    Adamos
    @Adamos
    Ты не в С++ еще очень зеленый, а в информатике в целом.
    Упорно долбишься в принципиально неверно поставленную цель.
    Единственный способ, которым ты можешь наглядно отобразить бинарную информацию и ничего не потерять - это hexdump (отображение каждого символа его шестнадцатеричным кодом). Собственно, все так и делают еще с прошлого века.
    Аналогично, работа с бинарными данными принципиально отличается от работы со строками. Ты получаешь байты и обрабатываешь байты. Если какой-то кусок этих байтов выстраивается в строку в какой-то кодировке - копируешь этот кусок, присваиваешь его строке, и тогда уже можно использовать библиотеки, перекодирующие из одной кодировки в другую. Но пока у тебя файл, в котором навалено разных данных и служебной информации - разбирать его надо именно побайтово.
    Ответ написан
    2 комментария
  • Какой IDE выбрать вместо Borland C++?

    @maximsemin23
    Лучшая IDE - Visual Studio
    Попробуйте к ней привыкнуть пару дней
    Почти все c++ программисты сидят Visual Studio
    Ответ написан
    Комментировать
  • Как создать проект с++ на основе готового кода?

    @rPman
    Это известная беда кроссплатформенности или кроссфреймворков, в мире существует столько полусовместимых и там столько нюансов, и кстати это беда не только у c++ но и с другими языками, только реже.

    Кто то должен давать инструкции и тестировать. Хорошим тоном было бы чтобы это делал сам разработчик, но нужно понимать что в opensource вам никто ничего не должен, люди делают для себя и своих задач, и требовать чтобы что то выложили для вас... как минимум некрасиво. Сделай сам или заплати тому кто умеет, выложи инструкции открыто - тебе скажут спасибо.

    У этого проекта вики такая инструкция написана и даже видео выложили
    Ответ написан
    Комментировать
  • Как Исправить код?

    MvcBox
    @MvcBox
    Software Engineer [C/C++/JS(for Node.js)/etc]
    Вы не тем способом пытаетесь решить проблему.
    Подсказка:
    Q2K4YwETvJexBA.jpg
    Ответ написан
    3 комментария
  • Как вращать кривую Безье в функций на WinAPI?

    Nipheris
    @Nipheris Куратор тега C++
    1. Рисовать что-либо нужно в WM_PAINT. Но вы НЕ должны вызывать повторную инвалидацию в WM_PAINT, да и работать с таймером нежелательно.
    2. По срабатыванию таймера (т.е. или в WM_TIMER, или в колбэке, как вам удобно) нужно делать инвалидацию окна с помощью InvalidateRect или UpdateWindow. Вы НЕ должны рисовать в обработчике таймера.

    Почитайте ещё про виндовый механизм инвалидация-рисование, это критически важно для понимания происходящего. Вы не должны просить перерисовать что-либо напрямую. Вместо этого вы заявляете Винде, что вам больше "не нравится" какая-то область в окне (или всё окно целиком) и вы считаете эту область устаревшей и требующей обновления. Винда принимает это к сведению, и затем, через какое-то время, она пришлёт вам WM_PAINT, где вы всё нарисуете как считаете нужным.

    Это удобно тем, что например если окно скрыто, Винда не посылает вам WM_PAINT и вы ничего не рисуете вообще, экономя ресурсы машины.

    Если вы хотите добиться анимации, вам нужно регулярно (раз в N мс) заявлять Винде, что у вас устарело содержимое окна.
    Ответ написан
    Комментировать
  • Можно ли запустить bash-скрипт в текущем процессе?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Однако я не могу получить доступ к любой из инициированных скриптом переменных в текущем процессе. Как я понимаю, это происходит потому, что скрипт выполняется отдельным процессом, а возможности экспортировать переменную на уровень выше нет.

    Непонятно, каково отношение между "скриптом" и "текущим процессом". Кто кого запускает?

    Если скрипт запускает процесс, то переменные окружения надо экспортировать, как сказано здесь. Если процесс запускает скрипт как другой процесс, то никакие изменения в переменных окружения сделанные скриптом в процессе видны не будут.
    Ответ написан
    Комментировать
  • Как заставить работать код C++ правильно?

    @none7
    Могу предположить, что cin >> K[i].year; не читает завершение строки(ведь они не число) и оно прилетает на ввод следующего имени. Вообще в нынешнем с++ использование указателей и неуправляемых массивов — ересь.
    #include <windows.h>
    #include <iostream>
    #include <vector>
    #include <string>
    #include <sstream>
    #include <algorithm>
    #include <ctime>
    
    using namespace std;
    
    const int UserCount = 3;
    struct Worker { // начало объявления структурного типа Worker
        string surname; //объявление поля «фамилия работника»
        string position; //объявление поля «название занимаемой должности»
        unsigned short int year; //объявление поля «год поступления на работу»
    
        static bool insensitive_compare(const Worker& a, const Worker& b)
        {
            string ta(a.surname), tb(b.surname);
            transform(ta.begin(), ta.end(), ta.begin(), [](unsigned char c) { return std::toupper(c); });
            transform(tb.begin(), tb.end(), tb.begin(), [](unsigned char c) { return std::toupper(c); });
            return ta < tb;
        }
    }; //конец объявление структуры Worker
    
    template<class T> void getline_i(istream& is, T& o)
    {
        string s;
        while (true)
        {
            getline(is, s);
            stringstream(s) >> o;
    
            if (s.length() < 1 || !isdigit(s[0]))
            {
                cout << "Ошибка. Значение должно быть числом: ";
                continue;
            }
            else
            {
                break;
            }
        }
    }
    
    int main()
    {
        system("chcp 1251");
        int n = 3; // объявление константы n — числа элементов типа «Worker»
    
        bool people = false;
    
        time_t rawtime;
        struct tm _tm;
    
        time(&rawtime);
        gmtime_s(&_tm, &rawtime);
        unsigned short int now_year = _tm.tm_year + 1900, seniority; // объявление переменных now_year — текущий год и seniority — стаж
        vector<Worker> K;
        Worker temp;
    
        for (int i = 0; i < UserCount; i++)
        {
            cout << "Фамилия и инициалы: ";
            getline(cin, temp.surname);
    
            cout << "Название занимаемой должности: ";
            getline(cin, temp.position);
    
            cout << "Год поступления на работу: ";
            getline_i(cin, temp.year);
    
            cout << "\n";
            K.push_back(temp);
        }
    
        cout << "Введите стаж работы(лет): ";
        getline_i(cin, seniority);
    
        cout << endl;
    
        for (auto current : K)
        {
            if ((now_year - current.year) > seniority)
            {
                cout << current.surname << endl;
                people = true;
            }
        }
    
        if (people == false) 
            cout << "Нет таких работников!" << endl;
    
        cout << endl;
        cout << "Список работников в алфавитном порядке" << endl;
    
        sort(K.begin(), K.end(), Worker::insensitive_compare);
    
        for (auto current : K)
            cout << current.surname << endl;
    
        system("pause");
        return 0;
    }
    Ответ написан
    Комментировать
  • Как убрать консоль при выполнении кода C++?

    15432
    @15432
    Системный программист ^_^
    Изменить в студии тип проекта с Console на Win32
    Ответ написан
    8 комментариев
  • Системе не удается найти указанный путь?

    flapflapjack
    @flapflapjack
    на треть я прав
    Если папка в имени содержит пробелы, ее название нужно брать в кавычки.
    Ответ написан
  • Как изучить C++?

    Stalker_RED
    @Stalker_RED
    ffa11c5561b6ca472680216ac54dbccb.jpg

    Начните лучше с какого-нибудь дружелюбного языка, вроде паскаля или пайтона (только не с js, с него потом сложно переучиваться). И только после того как напишете десяток hello world, калькуляторов, астрологических календарей или тудушек - переключайтесь на плюсы. Плюсы вообще клевые, много узнаете о внутрянке, но начинасть с них тяжело.
    Ответ написан
    1 комментарий
  • Как бесплатно писать софт под винду в 2021?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    Как бесплатно писать софт под винду в 2021?
    Просто пишите, и денег за работу не берите.
    Ответ написан
    Комментировать
  • Segmentation Fault не доходя до main?

    @galaxy
    Варнинги правильные. Прочитайте, что написано и исправляйте.

    Segmentation Fault не доходя до main?

    Не думаю, что не доходя до main. Скорее просто прога падает, не успевая зафлашить буфер stdout (добавьте \n к строкам, после этого должно выводить сразу).

    struct win **window;
      printf("here");
      initwin(*window, 100, 100, default_display);

    Кто выделяет память под window?
    Ответ написан
    1 комментарий
  • Какие могут быть альтернативы Visual Studio?

    С конструктором/превьюером - нет.
    Если устроит чисто текстом - можно попробовать vs code.
    Если у вас очень слабый компьютер - берите VS Community без решарпера, ей в принципе около гигабайта ОЗУ должно хватить.
    Но лучше потратьте пару тысяч на оперативку
    Ответ написан
    2 комментария
  • Как изменить заголовок WinForm c#?

    public static void name(string name){
          this.Text = name;
        }

    У вас вот тут статический метод.
    В статических методах нельзя использовать this.
    Используйте обычный метод.
    Ответ написан
    7 комментариев
  • Как исправить "Без доступа к сети" в Windows 8.1?

    hint000
    @hint000
    у админа три руки
    Попробуйте в Windows вручную прописать DNS (ip-адрес пусть получает по DHCP, только DNS вручную): 8.8.8.8 или лучше 1.1.1.1.
    Ответ написан
    Комментировать
  • Как добавить в PATH gperf.exe?

    hint000
    @hint000
    у админа три руки
    1. в Path не добавляют файлы, только папки; добавляйте C:\Program Files (x86)\GnuWin32\bin
    2. добавляйте в переменную Path, а не в переменную gperf.
    Ответ написан
    2 комментария
  • Самая быстрая реализация алгоритма Дейкстры на javascript?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Попробуйте переписать с массивами фиксированной длины. Во всех реализациях по вашим ссылкам вершины нумеруются строками и куча массивов типа distance и visited на самом деле являются словарями, или как это в js называется. Это работает сильно медленнее тупого массива, пронумерованного от 0 до n.

    Вам понадобится один словарь для перенумерации вершин в числа. Потом преобразуйте гарф на массив массивов, вместо этого сложного объекта.

    И уже на нем гоняйте дейкстру. Должно по карйней мере в пару раз ускорится. А то и во все 10.
    Ответ написан
  • Не подкинете тему для курсовой работы с использованием PIC?

    @Avsmirn0ov
    Блок питания с цифровым управлением, самое напрашивающееся. Скажем, регулировка выхода дискретно 3.3, 5 и 12 вольт, и плавно от 2 до 20 с ограничением в 3 ампера. И выводом на дисплейчик того, что на выходе. Код не самый сложный, только по сути ШИМ и обработка команд, и немного аналоговых деталюх. Сложность может вызвать только трансформатор купить/намотать и защиту сделать на операционнике. Схем в интернете полно
    Ответ написан
    Комментировать