1. C++ / Говнокод #26428

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    template <typename function_type, typename vector_type>
    function_type read_memory(HANDLE hProcess, function_type base_address, std::vector< vector_type >&& offsets) {
        function_type tmp = base_address;
        for (function_type i : **reinterpret_cast< vector_type** >( &offsets )) {
            ReadProcessMemory(hProcess, reinterpret_cast< PBYTE* >( tmp + i ), &tmp, sizeof(function_type), nullptr);
        }
        return tmp;
    }
    
    int main() {
        std::vector< DWORD > offset = {
            0x10,
            0x14,
            0x158
        };
        auto buffer = read_memory< DWORD, DWORD >(hProcess, base_address, std::move(offset));
    }

    Полуговнокодер читает память чужого процесса...

    Запостил: bcaoo, 10 Февраля 2020

    Комментарии (39) RSS

    • > Полу
      ⅞ как минимум, и то при условии, что hProcess в спячку отправили предварительно
      Ответить
    • О_о. Нахуя кастовать вектор в массив DWORD'ов?
      Ответить
      • Нахуя вообще придумали эти DWORD-ы? Тупое виндоблядское говно!

        Чем их не устроили int8 int16 int32 и проч?
        Ответить
        • Их там не было.
          Ответить
          • Так пусть бы сделали. Почему я должен помнить что QWORD - 64, DWORD - 32, WORD - 16 бит? Нахуя это? Лучше б наделали u8, u16, u32, u64, i8, i16, i32, i64 каких-нибудь - было б намного лучше
            Ответить
            • Потому что во времена 16-битной венды все помнили что WORD - это 2 байта...
              Ответить
            • З.Ы. Юниксы в это время вообще юзали какие-то странные char, short и int. Так что BYTE и WORD с известной фиксированной длиной - это уже прогресс.
              Ответить
              • я помню когда в первый раз трогал сишку, то удивился отсутствию типа byte
                когда полез гуглить, первым же делом вывалилось конечно "не нужен вам байт у вас есть чар ты придумываешь ненужное из тебя не выйдет сишник"

                хуй знает как эти пчелы собирались с какими-нибудь сетевыми октетами работать, конечно
                Ответить
                • > не выйдет сишник

                  Пиздят. Это они нубов учат юзать char, а сами тайком тайпдефят. Вон в ядре есть u8, да и в половине библиотек какие-нибудь uint8 вместо чара юзают.

                  З.Ы. Кстати в кресты таки завезли byte. Для настоящих битоёбов, над ним даже арифметика не работает, только побитовые операции.
                  Ответить
                  • Настоящий мастер не выдаёт своих секретов, чтобы не плодить конкурентов.
                    Ответить
                    • Ой, да в случае с сишкой и крестами проще выдать все секреты - конкуренты сами съебутся в ужасе.
                      Ответить
              • Сишка - питушня для анскиллябр. Рассчитана на написание кода под машину, которой никогда реально не будет (не соответствует ни одной реальной архитектуре). Вместо стандартизации поведения - пачка UB. Если тебе надо реализовать что-то, что могло бы летать на одной из архитектур, приходится писать дополнительные костыли для обхода UB. В итоге на всех архитектурах в код вкомпилится твой обход UB. Могло бы летать на одной и чуть-чуть тормозить на остальных, но в итоге тормозит на всех сразу.
                На сишку нельзя полагаться. Либо код будет с проверками, которые в ближайшие годы не оттестируешь (а что, если int 128 бит), либо вообще без проверок, и тогда не скомпилируется/не заработает на машинах с int128 или charbit9.
                Полагаться вообще ни на что нельзя, нужен мешок тайпдефов.
                Максимум, что можно выжать из кода в плане универсальности -
                #if sizeof(int) != 8
                #error "TbI nugap"
                #endif
                Ответить
            • А вот DWORDLONG, DWORD32 и DWORD64 - это уже диагноз, конечно. Х.з. как они такое придумали.
              Ответить
            • Бля, у них даже HALF_PTR есть для небольших оффсетов...
              Ответить
        • показать все, что скрытоvanished
          Ответить

    Добавить комментарий