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

C# Выделение памяти


Рекомендуемые сообщения

Добрый день , подскажите , VirtualAllocEx как мне уже объяснили и как уже убедился выделяет память все тип топ ,игра Dying Light и в CE я уже нашел уже значения и там адрес 0x7FFF3F6D876F а cave я получаю к примеру  0x7FF13F6D876F и из-за этого я не могу сделать jmp, как выделить память дальше значения 0x7FF13F6D876F , он просто никак не хочет пойти в тот регион где мой адрес

 

Сорян за нубство , уже голова кругом 

 

Прошу примером как то показать  ,ибо по статьям уже голова кругом , дня  3 убил на это выделение и до сих пор не пойму , затуп полный, прошу без гнева отнестить к новенькому, заранее спасибо всем кто откликнулся 

Ссылка на комментарий
Поделиться на другие сайты

Погоди. Тебе нужно сделать прыжок на выделенную память. И неважно, где она находится. Главное - высчитать разницу между адресом, куда ты будет прописывать этот прыжок (оригинальный код) и тем адресом, который ты получил при выделении. А отрицательная будет разница или положительная - не имеет значения.

Ссылка на комментарий
Поделиться на другие сайты

19 минуту назад, Xipho сказал:

Погоди. Тебе нужно сделать прыжок на выделенную память. И неважно, где она находится. Главное - высчитать разницу между адресом, куда ты будет прописывать этот прыжок (оригинальный код) и тем адресом, который ты получил при выделении. А отрицательная будет разница или положительная - не имеет значения.

Смотри , cave выделяется к примеру  0x7FF13F6D876F (из примера выше) , а оригинальная  0x7FFF3F6D876F  , когда я делаю jmp c 0x7FFF3F6D876F   на jmp 7FF13F6D876F, то он создает jmp на адрес в его диапозоне , но если в ручную вбить jmp 0x7FFF3F6D876F   , то результата в CE выглядит вот так  jmp qword ptr ... , мол в 8 байт прыжок , и тут я в полной недоумениее , провел уже 3 ночи в чтение и решение и никак не пойму что не так ( 

 

Мол получается не обычный прыжок  в 5 байт а в 8 

 

 

Изменено пользователем GGKillLive
Ссылка на комментарий
Поделиться на другие сайты

Из-за этого не могу понять как сделать , либо юзать длинный прыжок мол , либо как то выделить больше мб я что то путаю или не так понимаю, вот поэтому и прошу помощи 

 

Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, GGKillLive сказал:

Из-за этого не могу понять как сделать , либо юзать длинный прыжок мол , либо как то выделить больше мб я что то путаю или не так понимаю, вот поэтому и прошу помощи 

 

Из твоих объяснений ничего не понятно.

Приведи написанный код (скорее всего где-то ошибка), ребята посмотрят - помогут. 

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, gmz сказал:

там бонус квест: "все в одну строку" :D

;)Ну разобрать можно. 

Xipho и NullAlex обещали починить ссылки, код и спойлер, которые поехали при переходе на новый движок - надеюсь руки у них дойдут.:wacko:

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Garik66 сказал:

Как я понял gmz, тогда уже подобная тема была на форуме недавно, почитай ещё здесь:

 

 

Да это как раз то что у меня , извиняюсь что не так внятно разъяснил проблему , увы пока в терминологии мал .

Я прочитал ту статью , и честно не понял , буду рад если кто подскажет как на C# будет выглядит данный вызов , потому что я вот уже затупил конкретно с этим . Мб бывало такое у кого то 

 

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, GGKillLive сказал:

Мб бывало такое у кого то

находишь место для инжекта:
FF15 02000000 EB08 0000000000000000
пишешь эти байты в локал буффер, вместо 0000000000000000 пишешь новый адрес от alloc, ставишь хук
в новом блоке свой "хак код" заканчиваешь на ret
FF15 < call qword
02000000 < после jmp
EB08 < перепрыг мусора (твоего адреса)
0000000000000000 < твой адрес
ps если место инжекта не идеально - ровняешь EB08 прыг, что бы он перепрыгнул мусор

 

Ссылка на комментарий
Поделиться на другие сайты

Приведи код где jmp адрес высчитывается

случайно не такой?

string Jmp_Call(long iCave, long jumpFrom, long iNext, bool jc)
        {// Возвращает байт при прыжке / Вызов cave из исходного местоположения.
            string ins = GetIns(BitConverter.GetBytes(iCave - jumpFrom - 5));
            for (var i = 5; i < iNext - jumpFrom; i++)
                ins += "90";
            return jc ? "E9" + ins : "E8" + ins;
        }

 

Ссылка на комментарий
Поделиться на другие сайты

Все я понял , огромное спасибо парни ,  просто помогли как могли .Такой запутор просто звиздец

Кстати мб у кого были проблемы с visual studio 15 , это шалава при смене framework начинает страдать херней с проектом , что то работает что то нет , меня к примеру с 4 на 4.5 и обратно , и какие то функции перестали работать как надо после первой же смены , но в vs 13 работает идеально всегда , на случай если у кого были праблы с vs . А так  огромное спасибо , форум шик , помогли , если могу как то отплатить хаха буду рад

 

Ссылка на комментарий
Поделиться на другие сайты

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

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

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