Garik66 Опубликовано 16 февраля, 2016 Поделиться Опубликовано 16 февраля, 2016 5 минут назад, Razi сказал: Буду пробовать пока твой последний написанный скрипт. Скажу позже как работает. Скорее всего не сработает, ты на строчку обратил внимание внизу скрипта: 17 час назад, Garik66 сказал: И ещё кое-чего не хватает в скрипте. Нужно дать понять компьютеру, что при [00A3F3E5] = 2, значение value больше не нужно читать, а только записывать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 16 февраля, 2016 Поделиться Опубликовано 16 февраля, 2016 (изменено) Вот нашёл скрипт на ассемблер для 4 конкретных значений и переделал его на более универсальный, добавив метку value и flag. Проверь работу скрипта. Скрытый текст { Game : ePSXe ENG.exe Version: Date : 2016-02-01 Author : User This script does blah blah blah } [ENABLE] aobscan(INJECT,89 1C 08 81 E2 FC FF 1F 00) // should be unique alloc(newmem,$1000) label(code) label(code1) label(return) label(value) label(flag) registersymbol(INJECT) newmem: cmp byte ptr [00A3F3E5],2 jne @f push edx lea edx,[eax+ecx] cmp edx,00A444E8 pop edx jne code cmp [flag],1 jne code1 mov [flag],0 mov [value],ebx jmp code1 @@: mov [flag],1 jmp code code1: mov ebx,[value] code: mov [eax+ecx],ebx and edx,001FFFFC jmp return flag: dd 1 value: dd 0 INJECT: jmp newmem nop nop nop nop return: [DISABLE] INJECT: db 89 1C 08 81 E2 FC FF 1F 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 03050434 0305040B: 81 FA 00 00 80 1F - cmp edx,1F800000 03050411: 74 62 - je 03050475 03050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84] 03050419: F7 C1 00 00 01 00 - test ecx,10000 0305041F: 75 53 - jne 03050474 03050421: 8B C8 - mov ecx,eax 03050423: 89 C2 - mov edx,eax 03050425: C1 E9 10 - shr ecx,10 03050428: 25 FF FF 00 00 - and eax,0000FFFF 0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40] // ---------- INJECTING HERE ---------- 03050434: 89 1C 08 - mov [eax+ecx],ebx 03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC // ---------- DONE INJECTING ---------- 0305043D: BB 20 00 26 03 - mov ebx,03260020 03050442: 03 DA - add ebx,edx 03050444: 8B 03 - mov eax,[ebx] 03050446: 3D 40 00 05 03 - cmp eax,03050040 0305044B: 75 01 - jne 0305044E 0305044D: C3 - ret 0305044E: B8 40 00 05 03 - mov eax,03050040 03050453: 8B 0C 10 - mov ecx,[eax+edx] 03050456: B8 20 00 4F 03 - mov eax,034F0020 0305045B: 8B 04 10 - mov eax,[eax+edx] } Вот его и нужно переделать на LUA (я синтаксиса LUA не знаю, приходится постоянно лазить в справочник и в примеры). В этом скрипте заморозятся не только 4 значению (вдруг ты не все их заметил), а и больше и меньше, т.е. все значения, которые проскакивают через адрес 00A444E8, при значении в первом адресе 00A3F3E5 2. Изменено 16 февраля, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 16 февраля, 2016 Автор Поделиться Опубликовано 16 февраля, 2016 1 час назад, Garik66 сказал: на строчку обратил внимание внизу скрипта Видел, конечно. Попробовал пару вариантов, но не получилось. Делал вот так. Скрытый текст [ENABLE] {$LUA} timer = createTimer(true) timer:setInterval(100) timer.OnTimer = function() FreezingConditions = readBytes('00A3F3E5',1) if (FreezingConditions == 2) then value = readInteger('00A444E8') else if (FreezingConditions == 2) then value = writeInteger('00A444E8') writeInteger('00A444E8',value) end end end {$ASM} [DISABLE] {$LUA} timer:setEnabled(false) 1 час назад, Garik66 сказал: приходится постоянно лазить в справочник Справочник это main.lua ? АА скрипт сейчас проверю. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 16 февраля, 2016 Поделиться Опубликовано 16 февраля, 2016 3 минуты назад, Razi сказал: Справочник это main.lua ? Да - я его так называю. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 16 февраля, 2016 Автор Поделиться Опубликовано 16 февраля, 2016 АА скрипт проверил. Замораживает слишком рано, то есть когда в первом адресе становится 2, то во втором адресе еще не успевает стать 72 и замораживает неверное значение. Также и в том твоем скрипте на четыре значения сначало было. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 16 февраля, 2016 Поделиться Опубликовано 16 февраля, 2016 2 минуты назад, Razi сказал: Замораживает слишком рано Ну тогда остаётся либо добавлять паузу (но это удлинит скрипт - оно того не стоит), либо возвращаться к старому варианту скрипта (к конкретным значениям, т.е. к 72, 8 и т.д). 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 16 февраля, 2016 Автор Поделиться Опубликовано 16 февраля, 2016 (изменено) 16 минуту назад, Garik66 сказал: остаётся либо добавлять паузу Посмотрел, и по идее пауза даже не поможет потому что, даже когда значение 72, то при изменении значения на другое число, меняется только на ноль. Изменено 16 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 февраля, 2016 Поделиться Опубликовано 17 февраля, 2016 В 14.02.2016в03:51, Razi сказал: 3) Как в нижеприведенный скрипт еще добавить , что если другой адрес 00A444E8 равен значению 88, то изменять значение в этом адресе на 72. И если этот же адрес 00A444E8 равен значению 24, то изменять значение в этом адресе на 8 ? (адреса по 1 байту, кроме 00A9D874 - 4 байта) Razi выложу сюда скрипт, который ты проверил, может кто-нибудь из новичков читает - чтобы был ответ. Скрытый текст [ENABLE] {$LUA} PlaySound(findTableFile([[Activate]])) timer = createTimer(true) timer:setInterval(100) timer.OnTimer = function() value = readInteger('00A9D874') value1 = readInteger(' 00A444E8 ') if (value == 600000) then writeInteger('00A9D874',10000) end if (value1 == 88) then writeInteger('00A444E8',72) end if (value1 == 24) then writeInteger('00A444E8',8) end end [DISABLE] {$LUA} PlaySound(findTableFile([[Deactivate]])) timer:setEnabled(false) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения