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

Garik66

Помогаторы
  • Постов

    5 750
  • Зарегистрирован

  • Победитель дней

    292

Весь контент Garik66

  1. В 1 посте он рассказывает для чего этот плагин. И в дальнейшем добавлялись какие-то опции и функции. Это ответ на твой вопрос: А руководство, если хочешь, напиши сам. Попользуйся плагином, сделай выводы и напиши. Заранее - Респект, если займёшься.
  2. Попробовал, но клавиша остаётся нажатой. (хотя параметры для функции передаются верно) Правда появился плюс в этом коде: При деактивации скрипта клавиша отжимается. Если использовать код ("Вот этот код") то и при деактивации скрипта клавиша оставалась нажатой. Т.е. полдела решено. Предположение: мне нужно вначале кода поставить проверку - нажата клавиша или нет, т.е. воспользоваться функцией call GetAsyncKeyState Попробую, потестирую.
  3. gmz, вопрос скорее всего к тебе. Но если кто-нибудь в этом понимает - не откажусь от помощи. Заранее всем откликнувшимся - большое СПАСИБО!!! По запросу пользователя, пытаюсь реализовать это в СЕ ассемблер. Использую функцию keybd_event. Пока добился только виртуального нажатия кнопки, но не отпускания её pushad push #36 // Home call keybd_event popad pushad push #36 // Home push 0 push 0 push 0 call keybd_event push #36 // Home push 0 push KEYEVENTF_KEYUP push 0 call keybd_event popad
  4. AntonVitalievich, скорее всего тебе более всего подойдёт - это.
  5. Делает много, самое главное это наиболее уникальная сигнатура и возможность сделать индивидуальный шаблон скриптов, открой плагин с помощью например Notepad++ - там всё понятно, особенно, если знаешь LUA. Здесь, т.е. в этой же теме, если не поленишься, почитай всю тему с самого начала. Авторы плагина - MasterGH и SnedS91 - можешь им задать вопросы, правда SnedS91 я давно не видел на форуме.
  6. Отлично!!! Хорошая работа!!! Мне нравится!!! Excellent!!! Good job!!! I like!!! [ENABLE]aobscanmodule(aob_TestMETHOS,Tutorial-i386.exe+23AC3,81xxxxxxxxxxxxxxxxxx75xx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxxxxxx00xx00xxxx89)alloc(newmem_TestMETHOS,2048,Tutorial-i386.exe+23AC3)label(originalcode_TestMETHOS)label(returnhere_TestMETHOS)registersymbol(aob_TestMETHOS)//======================================================newmem_TestMETHOS:originalcode_TestMETHOS:cmp [ebx+00000480],000003E8jmp returnhere_TestMETHOS//TestMETHOS_enable://db 0//======================================================aob_TestMETHOS:jmp newmem_TestMETHOSdb 90 90 90 90 90returnhere_TestMETHOS:[DISABLE]dealloc(newmem_TestMETHOS)aob_TestMETHOS:db 81 BB 80 04 00 00 E8 03 00 00unregistersymbol(aob_TestMETHOS) [ENABLE]aobscanmodule(aob_TestMETHOS_64,Tutorial-x86_64.exe+2AA99,81xxxxxxxxxxxxxxxxxx75xx48xxxxxxxxxxxxbaxxxxxxxx48xxxxxxxxxxxx48xxxxffxxxxxxxxxx48xxxxxxxxxxxxbaxxxxxxxx48xxxxxxxxxxxx48xxxxffxxxxxxxxxxxx48xxxxxxxxxxxx00xx00xx00xx00xx00xx00xxxx8dxxxxxx48xxxx48xxxx48)alloc(newmem_TestMETHOS_64,2048,Tutorial-x86_64.exe+2AA99)label(originalcode_TestMETHOS_64)label(returnhere_TestMETHOS_64)registersymbol(aob_TestMETHOS_64)//======================================================newmem_TestMETHOS_64:originalcode_TestMETHOS_64:cmp [rbx+00000790],000003E8jmp returnhere_TestMETHOS_64//TestMETHOS_64_enable://db 0//======================================================aob_TestMETHOS_64:jmp newmem_TestMETHOS_64db 90 90 90 90 90returnhere_TestMETHOS_64:[DISABLE]dealloc(newmem_TestMETHOS_64)aob_TestMETHOS_64:db 81 BB 90 07 00 00 E8 03 00 00unregistersymbol(aob_TestMETHOS_64)
  7. Не что подобное делал недавно. Т.е. инструкция одноразовая, работает только при загрузке save игры. Я прикрутил структуру этой инструкции к инструкции отвечающей за НР юнитов. Если такое подходит, то вот эта тема
  8. Попробуй: { 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 uniquealloc(newmem,$1000)label(code)label(return)newmem: cmp byte ptr [00A3F3E5],2 jne code // а дальше что? А дальше вот это: mov ebx,[eax+ecx] // замораживаем адрес на нужное значение - какое-то игровое // значение - ты сам его знаешь.code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret 0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]} { 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 uniquealloc(newmem,$1000)label(code)label(return)newmem: cmp byte ptr [00A3F3E5],2 jne code push edx lea edx,[eax+ecx] cmp edx,00A444E8 pop edx jne code mov ebx,[eax+ecx]code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]} { 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 uniquealloc(newmem,$1000)label(code)label(code1)label(return)newmem: cmp byte ptr [00A3F3E5],2 jne code push edx lea edx,[eax+ecx] cmp edx,00A444E8 pop edx jne code cmp ebx,8 jne @f mov [eax+ecx],8 jmp code1@@: cmp ebx,#72 jne code1 mov [eax+ecx],#72code1: mov ebx,[eax+ecx]code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]}
  9. Задание разбросано по всей теме. Сейчас делаем: 1. Имеются два адреса. 2. Нужно, чтобы значение в одном заморозилось, если в другом значение равно 2, при любом другом значении - не замораживаем.
  10. Добавил ещё скрипт, мне кажется он лучше, так как нет привязки к таблице, т.е. будет работать у всех.
  11. Я это понял, когда пользовался Plugin- ом, поэтому и написал нахождение наиболее уникальных байт.
  12. Не та инструкция, я уже тоже торможу, нужна именно инструкция на запись. (когда происходит запись в адрес). А табличку проверил? [ENABLE]{$LUA}addresslist = getAddressList()memoryrec1 = addresslist_getMemoryRecordByID(addresslist,71) -- ID Address1 равно 71 (сюда подставь своё ID)FreezingConditions = readInteger('[00A3F3E5]')if (FreezingConditions == 2) thenmemoryrecord_freeze(memoryrec1) -- заморозкаend{$ASM}[DISABLE]{$LUA}
  13. Razi, чёй-то ты сегодня притормаживаешь. Ответь: 1. Ты хочешь скрипт на LUA или на ассемблер. 2. Если на LUA, то дай мне ID адреса (как посмотреть ID я писал уже здесь., либо дай какое-нибудь уникальное название адресу (на английском) и дай мне. тогда напишу скрипт по названию. 3. Если на ассемблер, то сделай АА скрипт из инструкции на чтение на адрес, который нужно заморозить. Как ты его проверял, куда вставлял скрипт? Лучше качни табличку, выложенную выше и проверь.
  14. Ты про какой скрипт сейчас говоришь, он оба АА. Ладно сделал тебе табличку (табличка удалена - не работает), проверь. Так уже давал примеры (по ID, по названию). Короче закачай куда-нибудь свою табличку, чтобы я качнул - сделаю тебе то, что нужно.
  15. Ну тогда - "Замуровали демоны" - скрыли процесс для СЕ.
  16. Тогда попробуем на LUA, но как я писал тебе LUA я не знаю, поэтому за правильность написания скрипта не ручаюсь. [ENABLE]{$LUA}FreezingConditions = readInteger('[00A3F3E5]')if (FreezingConditions == 2) thenmemoryrecord_freeze('[00A444E8]') -- заморозкаend{$ASM}[DISABLE]{$LUA}
  17. Если ты сделал АА скрипт из инструкции работающей с адресом [00A444E8], и [eax+ecx] это и есть адрес [00A444E8], то скрипт будет другим - тебе нужно отключить запись в [eax+ecx]. [ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne соde // а дальше что? А дальше вот это:jmp @f // замораживаем адрес на нужное значение - какое-то игровое // значение - ты сам его знаешь.code: mov [eax+ecx],bl // Если в [00A3F3E5] 2, то перепрыгиваем запись.@@: and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem)
  18. А как называется .exe файл, запускающий игру. Такого процесса тоже нет?
  19. Не указал на какое значение его морозить, ладно поставлю #100. то ещё проще: [ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne @f // а дальше что? А дальше вот это:mov [00A444E8],#100 // замораживаем адрес на нужное значениеjmp code // и выполняем код игры.@@:cmp byte ptr [00A3F3E5],1 // допустим ты мне дал условие разморозки.jne code // просто выполняем код игры. Строчку можно не писать, написал // чтобы было понятнее. code: mov [eax+ecx],bl and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem) [ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne соde // а дальше что? А дальше вот это:mov [00A444E8],#100 // замораживаем адрес на нужное значениеcode: mov [eax+ecx],bl and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem)
  20. cmp byte ptr [00A3F3E5],2jne code // а дальше что? Ты же не на все вопросы ответил. На самый главный - Что должно замораживаться? ответь
  21. Razi, можно всё сделать в одном скрипте, можно в разных, можно на LUA, но на ассемблер будет гораздо проще. На ассемблер заморозка это просто операнд MOV. Вот здесь я собирал для пользователя 7 вариантов решения заморозки адреса. Можно сделать ещё больше, но проще сделать на ассемблер. А добавить условие - мы уже с тобой делали в предыдущих скриптах. Если у самого не получается, кинь мне инфу, о которой писал в ЛС, я напишу скрипт с пояснениями - разберёшься.
  22. Ты взял скорее всего инструкцию на запись. Для того, чтобы она сработала на боте - нужно нанести ему урон. Но если твоя инструкция работает только с твоим героем, то инструкция не подойдёт. Для получения структур всех игроков лучше подходит инструкция на чтение. Т.е. поставь снова бряк на НР героя, но который читает из адреса.
  23. Не обязательно, выбери инструкцию работающую с НР твоего героя, которая работает и с другими адресами (скорее всего там и будут НР вражин). ЗЫ: для примера можешь посмотреть ещё и эту тему. Хоть игра и не браузерная, но тоже подойдёт, так как метод универсальный.
×
×
  • Создать...

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

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