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

Вопрос по активир. скриптам


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

Не понимаю,что я делаю не правильно ,игра вылетает или просто переменная так и остается 1 ,а не 0

Первый раз такой скрипт пишу.Должен добавить 1000 Е-99 в игре Singularity.


[ENABLE]
//code
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(_cmp)
label(_E99)
registersymbol(_cmp)


newmem: //this
cmp byte ptr [_cmp],0
je originalcode
cmp byte ptr [_cmp],1
je _E99
_E99:
add dword ptr [ecx+370],3e8
jmp originalcode
originalcode:
mov eax,[ecx+eax*4+00000364]
mov byte ptr [_cmp],0
jmp returnhere

"Singularity.exe"+BAEACD:
jmp newmem
nop
nop
returnhere:

_cmp:
dd 0


[DISABLE]
//code
"Singularity.exe"+BAEACD:
mov eax,[ecx+eax*4+00000364]
dealloc(newmem)
unregistersymbol(_cmp)

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

@Izmalkoff

[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
mov [ecx+eax*4+00000364],#1000
originalcode:
mov eax,[ecx+eax*4+00000364]
jmp returnhere

"Singularity.exe"+BAEACD:
jmp newmem
nop
nop
returnhere:


[DISABLE]
"Singularity.exe"+BAEACD:
mov eax,[ecx+eax*4+00000364]
dealloc(newmem)

твой скрипт заморозит 1000 Е99,а я активирующий скрипт хочу.Мне нужно когда переменную менять на 1 то в игре добавит 1000 Е99 .Этот скрипт не тот что я хочу.

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

Можно на примере трейнера Kane and Lynch Deadman людям объяснить. Там гранаты прибавляются по нажатию хоткея. Я думаю потому, что cheathappens'ы тогда не знали как обойти проверку XLive :lol:

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

Uchiha Sasuke

Как минимум одна ошибка:

_cmp:

dd 0

Заменить на

_cmp:

db 0

-------

В главной таблице добавить адрес "_cmp" типа 1 байт. А всё потому что у тебя инструкции cmp byte ... Aliast однажды напоролся на тоже самое )

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

Я посмотрел скрипт SER[G]ANT а,вроде так и делаю,но либо вылетает либо не добавляет


//Enable script and add address "_cmp" (type 1 byte) to CE table
//Change value of this address to
//"1" - you get +10 Weapon Tech
//"2" - you get +1.000 E99 Tech
//"3" - you get +1 Health Pack
//"4" - you get +1 E99 Vial
[ENABLE]
aobscan(_faddress,8bxxxxxxxxxxxxxxc2xxxx33xxxxc2xxxxxxxxxx8bxxxx8bxxxxxx8bxx80)
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)
label(_cmp)
registersymbol(_cmp)
label(_weapontech)
label(_e99)
label(_healthpack)
label(_e99vial)



_newmem:
cmp byte ptr [_cmp],0
je _originalcode
cmp byte ptr [_cmp],1
je _weapontech
cmp byte ptr [_cmp],2
je _e99
cmp byte ptr [_cmp],3
je _healthpack
cmp byte ptr [_cmp],4
je _e99vial

_weapontech:
add dword ptr [ecx+36c],0a
jmp _originalcode

_e99:
add dword ptr [ecx+370],3E8
jmp _originalcode

_healthpack:
add dword ptr [ecx+364],1
jmp _originalcode

_e99vial:
add dword ptr [ecx+368],1
jmp _originalcode

_originalcode:
mov eax,[ecx+eax*4+00000364]
mov byte ptr [_cmp],0
jmp _returnhere

_cmp:
dd 0

_faddress: // 00FAE75D = GImage::GImage+20CEDD
jmp _newmem
nop
nop
_returnhere:

[DISABLE]
aobscan(_faddress,9090xxc2xxxx33xxxxc2xxxxxxxxxx8bxxxx8bxxxxxx8bxx80)

_faddress-5:
mov eax,[ecx+eax*4+00000364]

dealloc(_newmem)

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

В таком случае я проверяю тело чит-кода Olly-дебагером. Сделай сразу пошаговую трассировку. И ты найдёшь ответ. Иначе мы будем гадать :) Кстати CE может не правильно ассемблировать :excl:

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

[ENABLE]
alloc(_newmem,2048)
aobscan(_address,8Bxxxxxxxxxxxx8Bxxxxxxxxxxxx2Bxx33xx85xx0Fxxxx8Dxxxxxxxxxxxx83)
label(_grens)
registersymbol(_grens)
label(_returnhere)
label(_cmp)
label(_origanalcode)
registersymbol(_cmp)

_newmem:
cmp byte ptr [_cmp],0
je _origanalcode
cmp byte ptr [_cmp],1
je _grens

_grens:
add dword ptr [ecx+364],5
jmp _origanalcode

_origanalcode:
mov eax,[edi+esi*4+00000628]
jmp _returnhere

_cmp:
db 0

_address: // "server.dll"+DC553 = 0x220DC553
jmp _newmem
nop
nop
_returnhere:


[DISABLE]
_grens:
mov eax,[edi+esi*4+00000628]
dealloc(_newmem)
unregistersymbol(_grens)

Мой тоже вылетает :ninja:

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

cmp byte ptr [_cmp],1
je _E99
_E99:

Этот кусок в принципе вообще не нужен, ибо прыжок делается на инструкцию сразу после инструкции прыжка. Можно просто продолжать выполнение после первого прыжка.

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

cmp byte ptr [_cmp],0
je originalcode

можно убрать из скрипта.

В этот скрипт я его вставил только из-за того, что на одной инструкции у меня было 4 чита, которые срабатывали только при нажатии клавиш, а сама инструкция вызывалась постоянно. Т.е. если бы небыло

cmp byte ptr [_cmp],0
je originalcode

то, при выполнении оригинального кода (когда ни один чит не активен), происходили бы ненужные сравнивания (равен ли cmp 1,2,3 или 4).

У тебя же используется только 1 чит, т.е либо cmp равно 0 и тогда выполняется оригинальный код, либо он равен 1 и срабатывает чит.

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

[ENABLE]
//code
alloc(newmem,2048) //2kb should be enough
label(returnhere)
label(originalcode)
label(_cmp)
registersymbol(_cmp)


newmem: //this
cmp [_cmp],1
jne short originalcode
add dword ptr [ecx+370],3e8
originalcode:
mov eax,[ecx+eax*4+00000364]
mov [_cmp],0
jmp returnhere

"Singularity.exe"+BAEACD:
jmp newmem
nop
nop
returnhere:

_cmp:
dd 0


[DISABLE]
//code
"Singularity.exe"+BAEACD:
mov eax,[ecx+eax*4+00000364]
dealloc(newmem)
unregistersymbol(_cmp)

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

Так я понял о чем ты,но все же опять что-то ни то.Вылетает игра как только переменную ставлю 1.Izmalkoff ты тоже попробуй этот скрипт и отпишись.

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

Раз вылет происходит именно тогда, когда, по сути, активируется скрипт, следовательно, какой-то из регистров процессора в данный момент не содержит ссылки на структуру игрока и иже с ним. Поэтому запись получается по "левому" адресу, что, по идее, и вызывает вылет.

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

Xipho а этот скрипт SER[G]ANT a работает у меня,хотя все сходится.


//Enable script and add address "_cmp" (type 1 byte) to CE table
//Change value of this address to
//"1" - you get +10 Weapon Tech
//"2" - you get +1.000 E99 Tech
//"3" - you get +1 Health Pack
//"4" - you get +1 E99 Vial
[ENABLE]
aobscan(_faddress,8bxxxxxxxxxxxxxxc2xxxx33xxxxc2xxxxxxxxxx8bxxxx8bxxxxxx8bxx80)
alloc(_newmem,2048)
label(_returnhere)
label(_originalcode)
label(_cmp)
registersymbol(_cmp)
label(_weapontech)
label(_e99)
label(_healthpack)
label(_e99vial)



_newmem:
cmp byte ptr [_cmp],0
je _originalcode
cmp byte ptr [_cmp],1
je _weapontech
cmp byte ptr [_cmp],2
je _e99
cmp byte ptr [_cmp],3
je _healthpack
cmp byte ptr [_cmp],4
je _e99vial

_weapontech:
add dword ptr [ecx+36c],0a
jmp _originalcode

_e99:
add dword ptr [ecx+370],3E8
jmp _originalcode

_healthpack:
add dword ptr [ecx+364],1
jmp _originalcode

_e99vial:
add dword ptr [ecx+368],1
jmp _originalcode

_originalcode:
mov eax,[ecx+eax*4+00000364]
mov byte ptr [_cmp],0
jmp _returnhere

_cmp:
dd 0

_faddress: // 00FAE75D = GImage::GImage+20CEDD
jmp _newmem
nop
nop
_returnhere:

[DISABLE]
aobscan(_faddress,9090xxc2xxxx33xxxxc2xxxxxxxxxx8bxxxx8bxxxxxx8bxx80)

_faddress-5:
mov eax,[ecx+eax*4+00000364]

dealloc(_newmem)

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

Вполне возможно, что скриптом ты внедряешься в нужную игровую рутину, поэтому у тебя и работает. Впрочем, чтобы сказать точнее, нужно самому сидеть и ломать игру. К сожалению, у меня небольшая неприятность - сдох монитор, поэтому приходится в качестве монитора использовать свою плазму, но у нее, понятное дело, время отклика подольше значительно и это очень неудобно при сворачивании/разворачивании игры. Впрочем, я думаю, на днях приобрету новый моник и все будет путем. Тогда, возможно, проверю этот скрипт и, возможно, дополню его.

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

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

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

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