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

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

В общем такая проблема возникла - написал скрипт для бессмертия, в котором фильтр на гг делаю.


[ENABLE]
alloc(newmem,2048)
label(GodMod)
label(ExitGM)
label(BackGM)
label(iPlayerID)
label(iGM)
registersymbol(iPlayerID)
registersymbol(iGM)

witcher.exe+37B1B0:
jmp GodMod
ExitGM:

newmem:
GodMod:
push ecx
mov ecx,[witcher.EXE+850EAC]
mov ecx,[ecx+B8]
mov [iPlayerID],ecx
pop ecx

cmp dword ptr [iGM],1
jne BackGM
cmp esi,[iPlayerID]
jne BackGM
mov [esi+48],4640E400
jmp ExitGM
BackGM:
movss [esi+48],xmm0
jmp ExitGM

iPlayerID:
dd 0

iGM:
dd 0

[DISABLE]
witcher.exe+37B1B0:
movss [esi+48],xmm0

Какое-то время нормально игра идёт, а потом крашит.

Вопрос: виден ли с первого взгляда какой-то ляп в коде? Я уже несколько часов его исправляю, глаз намылился. Если всё нормально, то из-за чего ещё крашить может?

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

Без наличия игры сложно помочь.

Попробуйте вот так

[ENABLE]
alloc(newmem,2048)
label(ExitGM)
label(BackGM)
label(iPlayerID)
label(iGM)
label(hValue)
registersymbol(iGM)

witcher.exe+37B1B0:
jmp newmem
ExitGM:

newmem:
cmp [iGM],1
jne short BackGM
push ecx
mov ecx,[witcher.EXE+850EAC]
mov ecx,[ecx+0B8]
mov [iPlayerID],ecx
pop ecx
cmp esi,[iPlayerID]
jne short BackGM
movss xmm0,[hValue]
BackGM:
movss [esi+48],xmm0
jmp ExitGM

iGM:
dd 0

hValue:
dd 4640E400

iPlayerID:
dd 0

[DISABLE]
witcher.exe+37B1B0:
movss [esi+48],xmm0

dealloc(newmem,2048)
unregistersymbol(iGM)

но не факт.

P.S.

А зачем "registersymbol(iPlayerID)", если "iPlayerID" не является флагом ?)

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

Я бы так написал

[ENABLE]
alloc(newmem,2048)
label(_GodMode)
label(_ExitGM)
label(_BackGM)
label(_pPlayerID)

registersymbol(_pPlayerID)


witcher.exe+37B1B0:
jmp _GodMode
_ExitGM:

newmem:

_GodMode:
// save pointer
push ecx
mov ecx,[witcher.EXE+850EAC]
mov ecx,[ecx+B8]
mov [_pPlayerID],ecx

pushf
cmp esi,ecx
jne _BackGM
movss xmm0,4640E400

_BackGM:
popf
pop ecx
movss [esi+48],xmm0
jmp _ExitGM


_pPlayerID:
dd 0

[DISABLE]
witcher.exe+37B1B0:
movss [esi+48],xmm0

Ошибки проверяются в отладке. Pushf, popf возможно не нужны.

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

ANT' date='16 Октябрь 2010 - 12:50' timestamp='1287208242' post='1464']

2 MasterGH

Автоассемблер CE не понимает "movss xmm0,4640E400", поэтому я написал так, как написал.

Существует такой вариант

movd eax,4640E400 

movd xmm0,eax

Может быть так прокатит

movd xmm0,4640E400

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

SER[G]ANT

Всё равно крах игры, так же как и с моим.

MasterGH

Твой скрипт почему-то просто не компилится, все твои варианты перепробовал.

Я так думаю, что указатель на гг не берётся, либо с ошибками


push ecx
mov ecx,[witcher.EXE+850EAC]
mov ecx,[ecx+B8]
mov [iPlayerID],ecx
pop ecx

Вот тут что-то не то, хотя могу и ошибаться...

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

MasterGH

Твой скрипт почему-то просто не компилится, все твои варианты перепробовал.

SER[G]ANT уже объяснил почему.

Как у тебя получилось все мои варианты перепробовать: один явно не компилируется, два других не доделаны. Сомневаюсь, что ты правильно последних два сделал.

Снова обращаю внимание на то, что все ошибки со скриптами узнаются в отладке при трассировке. Можно делать её в дизассемблере CE поставив бряк перед в ходом на инъекцию.

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

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

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

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

Ага, такой вариант тоже может быть. Что-то я про него совсем забыл.

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

Во многих играх, которые используют службу Windows Live, есть регистрация достижений даже в одиночных играх. Поэтому в движок Windows Live встроен античит. Да и много в каких других одиночных играх может быть встроена проверка целостности кода игры, так как мало кому из разработчиков хочется, чтобы игру взламывали.

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

Как обычно, Сережа скачает игру и выручит :grin:


{Игра: Ведьмак - Дополненное издание v1.5.0.1304
Чит-код: Бессмертие
Дата: 24.10.2010
Автор скрипта: SER[G]ANT
Версия CE: Cheat Engine 5.6.1 RUS (v 1.0) }


[ENABLE]
aobscan(_faddress,89xxxxxxxxxx8bxxxxxxxxxx89xxxxxxxxxx8bxxxxxxxxxx8bxxxxxxxxxx89)
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)
label(_player)

_newmem:
push eax
mov eax,[witcher.EXE+00DC09E4]
mov eax,[eax+29C]
mov eax,[eax+4]
mov eax,[eax+350]
mov [_player],eax
pop eax
cmp ecx,[_player]
jne short _originalcode
mov [ecx+00000048],edx
_originalcode:
mov [ecx+000002f4],edx
jmp _returnhere

_player:
dd 0

_faddress: // 008AB380 = initializeEngine1+15AD50
jmp _newmem
nop
_returnhere:

[DISABLE]
aobscan(_faddress,908bxxxxxxxxxx89xxxxxxxxxx8bxxxxxxxxxx8bxxxxxxxxxx89)

_faddress-5:
mov [ecx+000002f4],edx

dealloc(_newmem)
//Alt: db 89 91 F4 02 00 00

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

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

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

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