На нашем форуме вы можете получить приватный чит для игры Euro Truck Simulator 2. Подробности по ссылке ниже:
Тема с читом на Euro Truck Simulator 2
Авторизация  
Korol2010

Ресурсы Warhammer 40000 Dawn Of War: Dark Crusade

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

Здравствуйте. Я прошу помощи по взлому. Никак не могу внедрить своё значение ресурсов в код игры, посредством инъекции кода. Пробовал писать скрипт ,применяя свои небольшие знания ассемблера, различными способами, ничего не вышло, что я только не делал... Я и внедрял свою переменную, и регистр менял в оригинальном коде, и внедрял свои значения в оригинальные регистры с помощью команды MOV, и т.д., ничего не получалось(((( Значение к примеру первого ресурса, влияния, при его изменении в скрипте перескакивало в значение энергии, а влияние обнулялась полностью и вообще более не работало (восстанавливал оригинальный код потом соответственно и игрался с инструкцией дальше). Вот вообщем сама оригинальная инструкция...


alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
originalcode:
fstp dword ptr [eax]
fld dword ptr [ecx+04]
exit:
jmp returnhere
"WXPMod.dll"+5FB0A:
jmp newmem
returnhere:

Ну вроде описал как мог доходчиво.

P.S. Указатели не искал, т.к. не мог их вообще найди, значения найденых адресов при изменении значения в игре просто пропадали.

Пожалуйста помогите))) Жду вашей помощи.)

Поделиться сообщением


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

Когда ты вышел на инструкцию, нужно проверить с какими адресами она работает. Для этого в меморивью нажимаем ПКМ на инструкции (см.картинку)

sqnE9.jpg Заходим в игру играемся немного и смотрим, что получилось.


[enable]
alloc(newmem,2048)
label(exit)

newmem:
pushf
fstp dword ptr [eax]
cmp // ищи различия между регистрами, как приавило самые простые cmp edi,ecx и cmp ecx,00 и т.д, и т.п свойственные только для твоего адреса . или же анализ структуры.
jne exit
mov [eax],********* // Значение: (float)100.00/ #100/ 0064 // какой тип у тебя?
exit:
popf
fld dword ptr [ecx+04]
ret

"WXPMod.dll"+5FB0A:
call newmem
[disable]
***

Выложи скрипт полностью.

Поделиться сообщением


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

У меня тип тоже (float). Скрипт оригинальной инструкции я выложил полный. На доступ я смотрел что есть, но толком ничего не понял из-за малых знаний ассемблера. Да и сравнивать тоже пробывал, игра не реагировала. НО так как ты написал, так не делал, опять же из-за малых знаний ассемблера, функции некоторые которые ты сейчас представил я не знаю. Я читал книгу обучения ассемблеру лишь самую начальную))) И там некоторых функций не было описано. А вообще из инструкций которые имеют доступ к этой моей инструкции я понял (если конечно правильно), что 1 адрес отвечает и за "влияние" и за "энергию". Спасибо за предоставленную подсказку, попробую покопаться, может что-то получится) Если что-то у меня получится выложу скрипт в этой теме.

Чёт не получилось ничего, игра на то что ты мне дал и на команду сравнения не реагирует вообще. Вроде делал всё правильно

Поделиться сообщением


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

В смысле полный?

Попробуй так:

1) выдели нужную инструкцию в меморивью, нажми Ctrl+A

2) вставляем секции [ENABLE] [DISABLE], нажми Ctrl+A+T

3) производим инекцию по выделенному адресу, жмем Ctrl+I и ОК или Enter

вуаля рабочий инжект готов можно шаманить...


Для упрощения процедуры качаем aamaker_2.3 http://forum.gamehac...dpost__p__15069 и кладем файлик .lua в папку ..\Cheat Engine 6.3\autorun\aamaker.lua

Теперь смотри в меморивью очень удобный плагин на менюшку :)

UQ7xM.jpg

Поделиться сообщением


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

Аааа ты про это. Ну это не проблема выложу. За луа спс пригодится:-)

Поделиться сообщением


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

Вот как просил


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
originalcode:
fstp dword ptr [eax]
fld dword ptr [ecx+04]
exit:
jmp returnhere
"WXPMod.dll"+5FB0A:
jmp newmem
returnhere:



[DISABLE]
"WXPMod.dll"+5FB0A:
fstp dword ptr [eax]
fld dword ptr [ecx+04]
//Alt: db D9 18 D9 41 04

Поделиться сообщением


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

Хочу обрадовать)) Я добился своего и сделал рабочий скрипт. Причём сделал даже лучше, теперь с помощью 1 скрипта, инструкция которого принадлежала "влиянию", устанавливаются значения на какие я захочу и "влияния" и "энергии")))))))))))) Вкладываю как обещал готовый и рабочий скрипт...Версия игры 1.4 как написано в свойствах экзешника.


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(exit)
newmem:
mov dword ptr [eax],(float)100000
mov dword ptr [eax+04],0
exit:
jmp returnhere
"WXPMod.dll"+5FB0A:
jmp newmem
returnhere:



[DISABLE]
"WXPMod.dll"+5FB0A:
fstp dword ptr [eax]
fld dword ptr [ecx+04]
dealloc(newmem)
//Alt: db D9 18 D9 41 04

Поделиться сообщением


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

Добавь фильтр!!! он там нужен, Когда выделишь функцию

fstp dword ptr [eax] 

ПКМ и найти адреса с которыми работает инструкция,

Чуть побегаешь, кстати тут удобно жмакать кнопку паузы на клавиатуре.

Посмтори к каким адресам обращается (справа внизу выстави float)

Обрати внимание на регистры ebp и ebx (проверка на ноль это

test ebx,ebx

потом делашь условный прижок на выход)

и тут удобнее делать инжект на строку

ret 0004

увидишь ниже

fstp dword ptr [eax+08]

, просто пишешь в адреса

mov [eax],(float)50000.00
mov [eax+4],(float)50000.00

до ret 0004


Пробуй сам. Если совсем никак, смотри тут:


aobscan(address0,d9 58 04 d9 41 08 d8 40 08 d9 58 08 c2 04 00 CC CC)
alloc(newMem, 2048)
label(exit)
registersymbol(address0)

newMem:
pushf
test ebp,ebp
jne exit
test ebx,ebx
je exit
mov [eax],(float)50000.00
mov [eax+4],(float)50000.00
//mov [eax+8],***** //так и не понял что за адрес, обычно равен "0"
exit:
popf
ret 0004

address0+c:
jmp newMem

[DISABLE]
address0+c:
ret 0004
int 3
int 3
dealloc(newMem)
unregistersymbol(address0)
[ENABLE]

Поделиться сообщением


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

ууу не чё се это для меня больно сложновато)))) Частично конечно понял что ты предлагаешь но далеко не до конца, к тому же я не знаю толком что делают функции:

aobscan - сканирование определённого массива структуры байтов памяти, если правильно понял;

registersymbol - без понятия что такое даже не встречал никогда;

pushf - в моём понимании загрузка каких-то флагов в регистры этой инструкции;

test - если не ошибаюсь какое-то подобие команды cmp;

jne - какой-то переход на определённый лейбол;

je - прыжок на лейбол;

popf - моё понимание, это выгрузка флагов из памяти регистров этой инструкции;

ret - из твоего объяснения понял что делает инъжект всего кода в какую-то строку байтов памяти;

int - это инкремент, но командой не пользовыался, так что толком не знаю для чего она;

unregistersymbol - судя по началу команды она завершает команду registersymbol.

К стате я уже взломал ещё 4 значения и написал скрипты, всего сейчас таблица состоит из 5 скриптов))) НО 2 скрипта немного не доработаны, пытался доработать но не вышло((

Я попробывал в игре твой скрипт, и по мойпу дак разница между моим и твоим только в сложности исполнения))), я конечно ещё много чего не знаю, так что может именно так писать скрипт правильно))) Но на мой взгляд и мой скрипт норм))

Вот скрипты которые удалось сделать за пару часиков (исключая ресурсы):

Численность армии не прибавляется (но уменьшается: уходит в минус при гибели юнитов)


[ENABLE]
alloc(newMem, 2048)
label(returnHere)
newMem:
add [eax],0
add ecx,0
jmp returnHere
WXPMod.dll+7B1D8:
jmp newMem
returnHere:
[DISABLE]
WXPMod.dll+7B1D8:
add [eax],edx
mov ecx,[ecx+04]
dealloc(newMem)

Кол-во техники не прибавляется (+та же проблема что и у армии)


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(exit)
newmem:
add [eax+04],0
ret 0004
exit:
jmp returnhere
"WXPMod.dll"+7B1DD:
jmp newmem
nop
returnhere:



[DISABLE]
dealloc(newmem)
"WXPMod.dll"+7B1DD:
add [eax+04],ecx
ret 0004
//Alt: db 01 48 04 C2 04 00

Мгновенное исследование и подготовка (в зданиях)


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(exit)
newmem:
mov [edi+0C],0
mov [edi+10],eax
exit:
jmp returnhere
"WXPMod.dll"+978B7:
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"WXPMod.dll"+978B7:
mov [edi+0C],edx
mov [edi+10],eax
//Alt: db 89 57 0C 89 47 10

Мгновенное исследование и подготовка (у юнитов)


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(exit)
newmem:
mov [eax+08],0
mov [eax+0C],edx
exit:
jmp returnhere
"WXPMod.dll"+C811B:
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"WXPMod.dll"+C811B:
mov [eax+08],ecx
mov [eax+0C],edx
//Alt: db 89 48 08 89 50 0C

Ну вот как-то так))) Профессионалам просьба комментировать, поправлять меня и не ругаться я ещё только начинаю знакомится с геймхакингом))))))))

Поделиться сообщением


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

add [eax+04],ecx

замени на

mov [eax+04],00

или просто удали - тоже вариант :)

Можешь попробовать найти инструкцию, которая не пишет, а читает и почаще. Тогда возможно значение сразу будет обнулятся, и кстати фильтр, фильтра нет.

Все твои бонусы получает и враг) как мне кажется.. а может и нет)


Бесконечные юниты

Не убирает ограничение по количетву юнитов на класс


aobscan(address, 8B 28 8D 4C 24 28)
alloc(newMem, 2048)
registersymbol(address)

newMem:
mov [eax],00
mov [eax+04],00
mov ebp,[eax]
lea ecx,[esp+28]
ret

address:
call newMem
nop

[DISABLE]
address:
mov ebp,[eax]
lea ecx,[esp+28]
dealloc(newMem)
unregistersymbol(address)
[ENABLE]

Просматривай не только пишушие, но и читающие функции; ищи по возможности ту, которая работает с наименьшим количеством адресов, с твоим в идеале...

Поделиться сообщением


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

ок, на mov уже к ста заменил))) просто не выложил, хотел исправить, чтоб в минус значение при гибели войск не уходило (не вышло как описывал выше)

Добавь фильтр!!! он там нужен, Когда выделишь функцию

fstp dword ptr [eax] 

ПКМ и найти адреса с которыми работает инструкция,

Чуть побегаешь, кстати тут удобно жмакать кнопку паузы на клавиатуре.

Посмтори к каким адресам обращается (справа внизу выстави float)

Обрати внимание на регистры ebp и ebx (проверка на ноль это

test ebx,ebx

потом делашь условный прижок на выход)

и тут удобнее делать инжект на строку

ret 0004

увидишь ниже

fstp dword ptr [eax+08]

, просто пишешь в адреса

mov [eax],(float)50000.00
mov [eax+4],(float)50000.00

до ret 0004


Пробуй сам. Если совсем никак, смотри тут:


aobscan(address0,d9 58 04 d9 41 08 d8 40 08 d9 58 08 c2 04 00 CC CC)
alloc(newMem, 2048)
label(exit)
registersymbol(address0)

newMem:
pushf
test ebp,ebp
jne exit
test ebx,ebx
je exit
mov [eax],(float)50000.00
mov [eax+4],(float)50000.00
//mov [eax+8],***** //так и не понял что за адрес, обычно равен "0"
exit:
popf
ret 0004

address0+c:
jmp newMem

[DISABLE]
address0+c:
ret 0004
int 3
int 3
dealloc(newMem)
unregistersymbol(address0)
[ENABLE]

К стате начал пробывать сделать как ты здесь описал, и обнаружил что у меня нет такой опции как "найти адреса с которыми работает инструкция". У меня есть только опция "посмотреть какие адреса получают доступ к этой инструкции"

Поделиться сообщением


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

Это одно и тоже.


Если вдруг решишь искать здоровье юнитов... то пожалею твой разум и подскажу, что это значение (float)1,00 когда юнит полностью здоров.

к примеру.

Здоровье юнита 2500 - 100% - 1.00

Здоровье юнита 2420 ≈ 97% - 0.9679253101

Думаю дальше разберешься.

Кстати по поводу фильтра, ID игрока как раз тут и можно отыскать в сравнении с адресами противника.

Поделиться сообщением


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

ок большое спс, эта инфа пригодится))) Попробую потом взломаю)

Поделиться сообщением


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

Завтра выложу таблицу со скриптом на Worms Revolution? и имеющимися полностью рабочими скриптами на Warhammer))) К стате ресы нашёл сам, различие сделал и фильтр, теперь всё норм. Соответственно на нужный раздел форума, в этой статье не буду выкладывать.

Поделиться сообщением


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

К сожалению, как оказалось, я не могу выкладывать таблицы в соответствующем разделе форума((( Тогда выкладываю в этой теме....

Warhammer 40k Dawn Of War: Dark Crusade(версия из инфы EXE 1.4, из инфы самой игры 1.11):

Скрипт на бесконечные ресурсы (значение обоих ресов установленно как 50000, вы можете по желанию поставить своё значение):


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(hack) //назовите как хотите, у меня названа метка так
newmem:
cmp [eax+30],(float)7
je hack
fstp dword ptr [eax]
fld dword ptr [ecx+04]
jmp returnhere
hack:
mov dword ptr [eax],(float)50000
mov dword ptr [eax+04],0
jmp returnhere
"WXPMod.dll"+5FB0A:
jmp newmem
returnhere:

[DISABLE]
dealloc(newmem)
"WXPMod.dll"+5FB0A:
fstp dword ptr [eax]
fld dword ptr [ecx+04]

Скрипт на бесконечную численность вашей армии и техники (автор скрипта Tiger):


[ENABLE]
aobscan(address, 8B 28 8D 4C 24 28)
alloc(newMem, 2048)
registersymbol(address)
newMem:
mov [eax],00
mov [eax+04],00
mov ebp,[eax]
lea ecx,[esp+28]
ret
address:
call newMem
nop
[DISABLE]
address:
mov ebp,[eax]
lea ecx,[esp+28]
dealloc(newMem)
unregistersymbol(address)

Скрипт на мгновенное исследование и подготовку войск в ваших зданиях:


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(exit)
newmem:
mov [edi+0C],0
mov [edi+10],0
exit:
jmp returnhere
"WXPMod.dll"+978B7:
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"WXPMod.dll"+978B7:
mov [edi+0C],edx
mov [edi+10],eax

Скрипт на мгновенное исследование и подготовку у ваших отрядов:


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(exit)
newmem:
mov [eax+08],0
mov [eax+0C],0
exit:
jmp returnhere
"WXPMod.dll"+C811B:
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmem)
"WXPMod.dll"+C811B:
mov [eax+08],ecx
mov [eax+0C],edx

Игра Worms Revolution(версия #0140):

Скрипт на бессмертие ваших червей:


[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(hack)
newmem:
cmp [ecx+44],0
je hack
mov [ecx+34],eax
ret 0004
jmp returnhere
hack:
mov [ecx+34],#1000
ret 0004
jmp returnhere
"WormsRevolution.exe"+4E4984:
jmp newmem
nop
returnhere:

[DISABLE]
dealloc(newmen)
"WormsRevolution.exe"+4E4984:
mov [ecx+34],eax
ret 0004

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В данном топике никто не постил уже 4 месяца. Пости здесь только если твой вопрос точно совпадает с темой данного топика.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация