Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Как при инжекте чита открыть консоль?

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
24 Фев 2022
Сообщения
277
Реакции
20
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Извините за тупой вопрос.
AllocConsole(); чет не пашет. Видимо чет не то сделал
 
Извините за тупой вопрос.
AllocConsole(); чет не пашет. Видимо чет не то сделал
По идее
C++:
Expand Collapse Copy
class outbuf : public std::streambuf {
public:
    outbuf() {
        setp(0, 0);
    }

    virtual int_type overflow(int_type c = traits_type::eof()) {
        return fputc(c, stdout) == EOF ? traits_type::eof() : c;
    }
};

class woutbuf : public std::wstreambuf {
public:
    woutbuf() {
        setp(0, 0);
    }

    virtual int_type overflow(int_type c = traits_type::eof()) {
        return fputwc(c, stdout) == EOF ? traits_type::eof() : c;
    }
};

void CreateConsole() {
    AllocConsole();
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED);

    //Фиксим std вывод.
    FILE* fpstdin = stdin, * fpstdout = stdout, * fpstderr = stderr;

    freopen_s(&fpstdin, "CONIN$", "r", stdin);  
    freopen_s(&fpstdout, "CONOUT$", "w", stdout);
    freopen_s(&fpstderr, "CONOUT$", "w", stderr);

    //Фиксим std::cout, std::wcout.
    outbuf ob; woutbuf wob;
    std::cout.rdbuf(&ob);
    std::wcout.rdbuf(&wob);

    //Если вдруг окно скрыто, показываем его.
    ShowWindow(GetConsoleWindow(), SW_SHOW);
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
По идее
C++:
Expand Collapse Copy
class outbuf : public std::streambuf {
public:
    outbuf() {
        setp(0, 0);
    }

    virtual int_type overflow(int_type c = traits_type::eof()) {
        return fputc(c, stdout) == EOF ? traits_type::eof() : c;
    }
};

class woutbuf : public std::wstreambuf {
public:
    woutbuf() {
        setp(0, 0);
    }

    virtual int_type overflow(int_type c = traits_type::eof()) {
        return fputwc(c, stdout) == EOF ? traits_type::eof() : c;
    }
};

void CreateConsole() {
    AllocConsole();
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED);

    //Фиксим std вывод.
    FILE* fpstdin = stdin, * fpstdout = stdout, * fpstderr = stderr;

    freopen_s(&fpstdin, "CONIN$", "r", stdin); 
    freopen_s(&fpstdout, "CONOUT$", "w", stdout);
    freopen_s(&fpstderr, "CONOUT$", "w", stderr);

    //Фиксим std::cout, std::wcout.
    outbuf ob; woutbuf wob;
    std::cout.rdbuf(&ob);
    std::wcout.rdbuf(&wob);

    //Если вдруг окно скрыто, показываем его.
    ShowWindow(GetConsoleWindow(), SW_SHOW);
}
все оказалось гораздо проще, но все равно спасибо)

Код:
Expand Collapse Copy
DWORD WINAPI OnDllAttach(LPVOID base)
{
    AllocConsole();
    // перенаправление вывода
    freopen_s((FILE**)stdin, "CONIN$", "r", stdin);
    freopen_s((FILE**)stdout, "CONOUT$", "w", stdout);
    freopen_s((FILE**)stderr, "CONERR$", "w", stderr);
    printf("Inject");
    return TRUE;
}
 
все оказалось гораздо проще, но все равно спасибо)

Код:
Expand Collapse Copy
DWORD WINAPI OnDllAttach(LPVOID base)
{
    AllocConsole();
    // перенаправление вывода
    freopen_s((FILE**)stdin, "CONIN$", "r", stdin);
    freopen_s((FILE**)stdout, "CONOUT$", "w", stdout);
    freopen_s((FILE**)stderr, "CONERR$", "w", stderr);
    printf("Inject");
    return TRUE;
}
Мой код так-же фиксит std::cout и std::cin если ты захочешь их использовать, вот и вся разница)
 
Мой код так-же фиксит std::cout и std::cin если ты захочешь их использовать, вот и вся разница)
Нихера. И тот и тот код позволит выводить любыми способами. Я не уверен знал ты или нет, но стл-овские иостримы так-то по итогу в stdin, stdout и stderr всё направляют.
 
Нихера. И тот и тот код позволит выводить любыми способами. Я не уверен знал ты или нет, но стл-овские иостримы так-то по итогу в stdin, stdout и stderr всё направляют.
Это в теории. На практике у меня были траблы с MSVC v142, где после ручной аллокации консоли, путс и принтф работали прекрасно, но std::cout, std::cin обсирались жидким, мне лень было смотреть на причины в иде, скорее всего майкрософтовские оптимизации, но я это фиксанул данным лайфхаком ¯\_(ツ)_/¯. Если тебе так хочется, я могу попробовать найти тот проект и репродюснуть.
 
Назад
Сверху Снизу