Сейчас на форуме: (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Вопрос про CodeCave |
Посл.ответ | Сообщение |
|
Создано: 07 августа 2010 20:22 · Личное сообщение · #1 Здравствуйте, уважаемые Крэкеры. Недавно на chemax.ru прочитал что использовать CodeCave опасно, и для нормального трейнера нужно использовать выделение памяти. Расскажите пожалуйста про этот способ. Смотрел функцию VirtualAllocEx. Как через нее выделить память, так чтоб игра не откинула копытца ?(что писать в начальный адрес, и что делать с памятью после вызова этой функции ?) ![]() |
|
Создано: 07 августа 2010 21:52 · Личное сообщение · #2 |
|
Создано: 07 августа 2010 22:08 · Поправил: Snef · Личное сообщение · #3 мм спасибо, но можно как совсем совсем новичку ? ![]() В msdn написано что начальный адрес - это тот адрес, начиная с которого вы хотите выделить память. Как понять "получаемый от функции" ? Что-то медленно стало доходить, если вместо этого адреса поставить NULL, то функция сама выделит регион памяти под мой код, и возвратит начальный адрес этого региона ? ![]() ![]() |
|
Создано: 08 августа 2010 08:33 · Личное сообщение · #4 |
|
Создано: 08 августа 2010 10:37 · Личное сообщение · #5 |
|
Создано: 09 августа 2010 13:07 · Личное сообщение · #6 |
|
Создано: 09 августа 2010 13:27 · Личное сообщение · #7 |
|
Создано: 09 августа 2010 13:42 · Поправил: Snef · Личное сообщение · #8 Жалко ![]() А вот отсюда esi можно узнать ? Начало функции: Code:
esi берется из ecx ? т.e придется искать ecx и так далее по цепочке ? Перефразирую немного вопрос, можно ли сделать что-нибудь эффективнее чем: Code:
и потом просто читать значение в 0x20001000 ? Просто ингда бывает нужно узнать несколько подобных значений, и писать(а потом еще и переносить в C++) много кода неудобно. ![]() |
|
Создано: 09 августа 2010 14:50 · Личное сообщение · #9 |
|
Создано: 09 августа 2010 15:28 · Личное сообщение · #10 |
|
Создано: 09 августа 2010 15:33 · Поправил: SER[G]ANT · Личное сообщение · #11 Archer Про лоадер в этой теме ни слова. Если прочесть первый пост, то в голову приходит, что значение регистра вам нужно для сравнения свой/чужой, то проще будет пройтись по структуре (значение регистра) и там найти указатель на то, что нужно. затем написать что-то типа cmp [esi+смещение],1 jne short _оригинальный_код_ наш код, для того что нам нужно сделать @_оригинальный_код_: add ecx,[esi+edi*4+10] jmp _обратно_ мб хрень написал, я сейчас не в адеквате ![]() [offtop]вчера особо не было ничего, вот сегодня с 6 вечера.... ![]() ![]() |
|
Создано: 09 августа 2010 15:44 · Поправил: Snef · Личное сообщение · #12 Спасибо всем за помощь ![]() SER[G]ANT ![]() Все, придумал как можно это облегчить. Написал функцию: Code:
Записывает через codecave регистр в адрес памяти и возвращает его значение, надеюсь что подойдет для разных игр. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Вопрос про CodeCave |
Эта тема закрыта. Ответы больше не принимаются. |