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

Забаненный
Статус
Оффлайн
Регистрация
24 Фев 2022
Сообщения
276
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Извините за тупой вопрос.
AllocConsole(); чет не пашет. Видимо чет не то сделал
 
Pa$$ter
Пользователь
Статус
Оффлайн
Регистрация
9 Июн 2020
Сообщения
241
Реакции[?]
83
Поинты[?]
12K
Извините за тупой вопрос.
AllocConsole(); чет не пашет. Видимо чет не то сделал
По идее
C++:
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);
}
 
Забаненный
Статус
Оффлайн
Регистрация
24 Фев 2022
Сообщения
276
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
По идее
C++:
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);
}
все оказалось гораздо проще, но все равно спасибо)

Код:
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;
}
 
Pa$$ter
Пользователь
Статус
Оффлайн
Регистрация
9 Июн 2020
Сообщения
241
Реакции[?]
83
Поинты[?]
12K
все оказалось гораздо проще, но все равно спасибо)

Код:
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::X$$V::Z::_Func_impl_no_alloc
Пользователь
Статус
Оффлайн
Регистрация
30 Мар 2019
Сообщения
389
Реакции[?]
103
Поинты[?]
1K
Мой код так-же фиксит std::cout и std::cin если ты захочешь их использовать, вот и вся разница)
Нихера. И тот и тот код позволит выводить любыми способами. Я не уверен знал ты или нет, но стл-овские иостримы так-то по итогу в stdin, stdout и stderr всё направляют.
 
Pa$$ter
Пользователь
Статус
Оффлайн
Регистрация
9 Июн 2020
Сообщения
241
Реакции[?]
83
Поинты[?]
12K
Нихера. И тот и тот код позволит выводить любыми способами. Я не уверен знал ты или нет, но стл-овские иостримы так-то по итогу в stdin, stdout и stderr всё направляют.
Это в теории. На практике у меня были траблы с MSVC v142, где после ручной аллокации консоли, путс и принтф работали прекрасно, но std::cout, std::cin обсирались жидким, мне лень было смотреть на причины в иде, скорее всего майкрософтовские оптимизации, но я это фиксанул данным лайфхаком ¯\_(ツ)_/¯. Если тебе так хочется, я могу попробовать найти тот проект и репродюснуть.
 
Сверху Снизу