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

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

Есть вот такой код

mov ecx,[ecx+50]
fld dword ptr [esp+08]
movsx eax,ax
fadd dword ptr [ecx+eax*4]
lea eax,[ecx+eax*4]
fstp dword ptr [eax] <---------------здесь ловится адрес денег
ret 000C

Значение флоад

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem:

originalcode:
mov dword ptr [eax], {float}100 <--------------------------------добавляем 100
fstp dword ptr [eax]
ret 000C

exit:
jmp returnhere

"EMPIRES.EXE"+5E7E0:
jmp newmem
returnhere:



[DISABLE]
fstp dword ptr [eax]

на ret значение востанавливается.

Как можно ето обойти?

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

Неинформативная тема какая то. Ни пояснения, что за код, ни что обойти. Даю сутки на исправление ситуации, потом закрою тему и пред автору.

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

Нашёл в игре значение дерева.

Потом нашёл поинтер.

Нашёл функцию где он изменяет значение.

вот она

mov ecx,[ecx+50]

fld dword ptr [esp+08]

movsx eax,ax

fadd dword ptr [ecx+eax*4]

lea eax,[ecx+eax*4]

fstp dword ptr [eax] <---------------здесь ловится адрес дерева

ret 000C

Хочю сделать чтобы добавлялось дерево на 100 или 1000 больше

пробывал через

mov ecx,[ecx+50]

fld dword ptr [esp+08]

movsx eax,ax

fadd dword ptr [ecx+eax*4]

lea eax,[ecx+eax*4]

mov dword ptr [eax], {float}100 <--------------------------------добавляем 100

fstp dword ptr [eax] <---------------здесь ловится адрес дерева

ret 000C

всё работает как обычно.

Может быть проблема в ax регистре?

Кто может помочь.

Функция обрабатывает много параметров.

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

К первому посту


[ENABLE]
alloc(newmem,2048) //2kb should be enough
label(returnhere)
newmem:
fstp dword ptr [eax] // выбросить из верхушки FPU стека значение в адрес [eax]
mov dword ptr [eax], {float}100 // перезаписать
ret 000C
jmp returnhere
"EMPIRES.EXE"+5E7E0:
jmp newmem
returnhere:

[DISABLE]
"EMPIRES.EXE"+5E7E0:
fstp dword ptr [eax]
ret 000C

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

Что делает вот эта инструкция? :)


fadd dword ptr [ecx+eax*4]

Что за игра?

игра: Age of Empires

К первому посту


[ENABLE]
alloc(newmem,2048) //2kb should be enough
label(returnhere)
newmem:
fstp dword ptr [eax] // выбросить из верхушки FPU стека значение в адрес [eax]
mov dword ptr [eax], {float}100 // перезаписать
ret 000C
jmp returnhere
"EMPIRES.EXE"+5E7E0:
jmp newmem
returnhere:

[DISABLE]
"EMPIRES.EXE"+5E7E0:
fstp dword ptr [eax]
ret 000C

Попробовал, идет только вот значение сбрасывает на 0.

Что делать flot -100?

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

По данной информации ни чем помочь не могу.

Могу посоветовать перепроверить скрипты при пошаговой отладке или сделать инъекцию кода в другое место.

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

сбрасывает на ноль потому, что должно быть не в фигурных, а в круглых скобках указание типа - (float) 100, а у тебя - {float} 100 написано.

Спасибо помогло. :-D

Доетого делал так

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(exit)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
//fadd dword ptr [ecx+eax*4]
значение 2
fadd dword ptr [ecx+eax*4] //добавляет в 2 раза больше значение = +4
fadd dword ptr [ecx+eax*4] //добавляет в 2 раза больше значение = +8
lea eax,[ecx+eax*4]

exit:
jmp returnhere

"EMPIRES.EXE"+5E7DA:
jmp newmem
nop
returnhere:



[DISABLE]
"EMPIRES.EXE"+5E7DA:
fadd dword ptr [ecx+eax*4]
lea eax,[ecx+eax*4]

А вот и полный код с проверкой на поинтер на дерево и мясо, проверка проходит в одной функции.

Игра на немецком языке поетому поинтер может быть другим.

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(holz)
label(fleisch)
label(exit)

newmem:
push ebp
lea ebp, dword ptr [eax]
cmp ebp, 0A4C614C
pop ebp
je holz

push ebp
lea ebp, dword ptr [eax]
cmp ebp, 0A4C6148
pop ebp
je fleisch

jmp returnhere

holz:
fstp dword ptr [eax]
mov dword ptr [eax], (float)5000 // перезаписать
ret 000C
jmp exit

fleisch:
fstp dword ptr [eax]
mov dword ptr [eax], (float)5000 // перезаписать
ret 000C
jmp exit

exit:
jmp returnhere

"EMPIRES.EXE"+5E7E0:
jmp newmem

returnhere:
fstp dword ptr [eax]
ret 000C


[DISABLE]
"EMPIRES.EXE"+5E7E0:
fstp dword ptr [eax]
ret 000C

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

Xipho а ты внимательный нашел сразу ошибки { }. а я не заметил :)

Кстати у Andrey_я код тоже с { } на верное поспешил :)

dddeamon надо за собой убрать мусор (Уничтожить созданную в памяте игры а то будут вылеты ) командой dealloc(newmem)

[DISABLE]

"EMPIRES.EXE"+5E7E0:

fstp dword ptr [eax]

ret 000C

dealloc(newmem)

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

Кстати у Andrey_я код тоже с { } на верное поспешил :)

dddeamon надо за собой убрать мусор (Уничтожить созданную в памяте игры а то будут вылеты ) командой dealloc(newmem)

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

Про dealloc я пропустил признаю.

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

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

Про dealloc я пропустил признаю.

Да успешно скомпилировался. попробуй.

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

не квадратные, а фигурные скобки ) Видимо, СЕ считает их комментарием, поэтому пропускает содержимое и компилит нормально. Впрочем, я сам не пробовал, поэтому точно не могу сказать.

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

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

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

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