Перейти к содержанию

fastmailsend

Пользователи
  • Постов

    24
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные fastmailsend


  1. Вопрос уже по другой теме, но есть такая функция: Read<UInt64>(addr);

     
    
     
    
     

    Как программно вписать вместо UInt64, например UInt32. Хочу чтобы программа сама определяла разредность процесса(использую IsWow64Process) и в зависимости от этого изменять тип читаемых данных(UInt32/UInt64)
    Надеюсь понятно сказал

    Или же как хранить тип переменной в переменной.

  2. 1 час назад, partoftheworlD сказал:

     

    Все правильно работает, ты просто тип используешь 4 байта, а надо 8. Думаю стоило бы для начала разобраться с типами переменных.

    
     
     разве он не должен в зависимости от системы сам размер ставить?
    Marshal.SizeOf<cData>();

     

  3. Решил прочитать память игрушки, но вот что-то, как обычно пошло не так :/

     

    Вот мой список действий/шагов:
    1. Я получаю baseAddress нужного мне модуля игры
    2. Складываю его с baseAddress уже нужного мне параметра
    3. Читаю полученное для последующего пробега по поинтерам

    1012232d1550267867

    Но по полученному мною адресе храниться 94E07400. Если вбить в поиск CE 7FF7249A3038 (результат 2 шага), то я так-же получу 94E07400. Но если уже составлять указатель в CE, то он выдаст совершенно другой результат сложения/чтения 22E94E07400.
    Вопрос: откуда появилось 22E?

  4. Последний вопросец:

        template <class cData>
        cData Read(DWORD dwAddress)
        {
            cData cRead; //Generic Variable To Store Data
            ReadProcessMemory(hProcess, (LPVOID)dwAddress, &cRead, sizeof(cData), NULL); //Win API - Reads Data At Specified Location 
            return cRead; //Returns Value At Specified dwAddress
        }

    Как можно передать в cData как массив символов?

    mem.Read<char[32]>(baseAddress + 0x105FA0);

    ругается

  5. Спасибо всем!

    14 часов назад, partoftheworlD сказал:
    15 часов назад, fastmailsend сказал:

    Получается надо брать массив с размером 

    Нет, я не видел ещё задач где бы не хватало массива размером 1024 байта, обычно 64 байта хватает для всего.

    Думал вдруг существует определенные метод позволяющий хоть гиг загрузить :D

    Разобрался. Отдельное спасибо за

    14 часов назад, partoftheworlD сказал:

    C шный стиль перебирает все виды преобразований и выбирает оптимальный, а использование reinterpret_cast, что-то типа строгого преобразования в определенный тип, а значит быстрее и мы ведь пишем на C++, так почему бы не воспользоваться его прелестями. А если ты про, типы, то LPCVOID это указатель на константу любого типа, но зачем нам любой тип, если мы точно знаем, что нам нужен указатель на байты. Опять же работает, чуть-чуть быстрее. Да и LPCVOID, может себя неадекватно вести, у меня такое было на практике, а PBYTE никогда не подводил ещё.

    Почему-то на ютубе/cocoscope все пользуются Сишным стилем, а никто толком и не объясняет)

  6. 1 час назад, partoftheworlD сказал:

    Советую начать с https://msdn.microsoft.com/ru-ru/library/3bstk3k5.aspx

     

    
    char buf[24];
    ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(baseAddress + 0x105FA0), &buf, sizeof(buf), 0);
    count << buf << endl;

     

    Спасибо! :D Код работает!!! )

    Извини, что я туповат, но если строка больше > 24 символов, он же ее не всю считает. Получается надо брать массив с размером

       

    2147483647 (максимальное число вместимое int), а весь остаток он забьет нулями, ведь так?

     

     

    Только что, fastmailsend сказал:

    reinterpret_cast<PBYTE*>

    а зачем еще это?

    Ну, всмысле, чем это лучше моего способа?

  7. Я понимаю, что 4 параметром нужно передавать размер, но как-то же Cheat Engine сама определяет размер строки.

     

    	char buffer[12] = { 0 };
    	ReadProcessMemory(ads, (LPCVOID)0x275A3B5, &buffer, 12, 0);

    Функция не может выполнится, вызвав

    DWORD err = GetLastError();

    возвращает 6

    Процесс открыт с PROCESS_ALL_ACCESS

  8. Имеется такой код:

        template <class cData>
        cData Read(DWORD dwAddress)
        {
            cData cRead; //Generic Variable To Store Data
            ReadProcessMemory(hProcess, (LPVOID)dwAddress, &cRead, sizeof(cData), NULL); //Win API - Reads Data At Specified Location 
            return cRead; //Returns Value At Specified dwAddress
        }

    Как с помощью него можно считать строку, например имя в игре?

    если есть другой код, с радостью приму

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.