Tzeentch Опубликовано 1 января, 2019 Поделиться Опубликовано 1 января, 2019 (изменено) Для интереса решил покопаться в коде отвечающем за скилл поинты гг. И столкнулся с тем что модуль отвечающий за эту инструкцию написан на Lua скриптах(со слов LIRW). Поэтому смена значения на прямую приводит к вылету, если менять инструкцию обычным методом. Инструкция же обращается к одному адресу. Показать контент Соответственно я привёл в Auto assembler две инструкции ниже. 1 Показать контент [ENABLE] aobscan(MaxSkill,F3 0F 7E 07 89 4B 78 66 0F D6 43 70 83 7B 78 03 0F 85 02) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: movq xmm0,[edi] mov [ebx+78],ecx jmp return MaxSkill: jmp newmem nop nop return: registersymbol(MaxSkill) [DISABLE] MaxSkill: db F3 0F 7E 07 89 4B 78 unregistersymbol(MaxSkill) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 6666383D ""+66663818: 8D BB C0 00 00 00 - lea edi,[ebx+000000C0] ""+6666381E: 89 7E 08 - mov [esi+08],edi ""+66663821: 8B 4B 78 - mov ecx,[ebx+78] ""+66663824: F3 0F 7E 43 70 - movq xmm0,[ebx+70] ""+66663829: 89 4B 18 - mov [ebx+18],ecx ""+6666382C: 66 0F D6 43 10 - movq [ebx+10],xmm0 ""+66663831: 8B 43 F0 - mov eax,[ebx-10] ""+66663834: 8B 48 1C - mov ecx,[eax+1C] ""+66663837: 8B 79 08 - mov edi,[ecx+08] ""+6666383A: 8B 4F 08 - mov ecx,[edi+08] // ---------- INJECTING HERE ---------- ""+6666383D: F3 0F 7E 07 - movq xmm0,[edi] ""+66663841: 89 4B 78 - mov [ebx+78],ecx // ---------- DONE INJECTING ---------- ""+66663844: 66 0F D6 43 70 - movq [ebx+70],xmm0 ""+66663849: 83 7B 78 03 - cmp dword ptr [ebx+78],03 ""+6666384D: 0F 85 02 07 00 00 - jne 66663F55 ""+66663853: D9 EE - fldz ""+66663855: DD 43 70 - fld qword ptr [ebx+70] ""+66663858: DF E9 - fucomip st(0),st(1) ""+6666385A: DD D8 - fstp st(0) ""+6666385C: 0F 8A 55 01 00 00 - jp 666639B7 ""+66663862: 0F 86 4F 01 00 00 - jbe 666639B7 ""+66663868: 8B 43 F0 - mov eax,[ebx-10] } 2 Показать контент [ENABLE] aobscan(SKILLPOINT,89 17 89 47 04 0F 83 60) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: mov [edi],edx mov [edi+04],eax jmp return SKILLPOINT: jmp newmem return: registersymbol(SKILLPOINT) [DISABLE] SKILLPOINT: db 89 17 89 47 04 unregistersymbol(SKILLPOINT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: BC8E1B04 BC8E1AE6: DC 63 20 - fsub qword ptr [ebx+20] BC8E1AE9: DD 5B 30 - fstp qword ptr [ebx+30] BC8E1AEC: 8B 43 F0 - mov eax,[ebx-10] BC8E1AEF: 8B 48 1C - mov ecx,[eax+1C] BC8E1AF2: 8B 79 08 - mov edi,[ecx+08] BC8E1AF5: 8B 43 38 - mov eax,[ebx+38] BC8E1AF8: 8B 53 30 - mov edx,[ebx+30] BC8E1AFB: 89 47 08 - mov [edi+08],eax BC8E1AFE: 83 F8 04 - cmp eax,04 BC8E1B01: 8B 43 34 - mov eax,[ebx+34] // ---------- INJECTING HERE ---------- BC8E1B04: 89 17 - mov [edi],edx BC8E1B06: 89 47 04 - mov [edi+04],eax // ---------- DONE INJECTING ---------- BC8E1B09: 0F 83 60 04 00 00 - jae BC8E1F6F BC8E1B0F: 8B 4B 08 - mov ecx,[ebx+08] BC8E1B12: F3 0F 7E 03 - movq xmm0,[ebx] BC8E1B16: 89 4B 48 - mov [ebx+48],ecx BC8E1B19: 66 0F D6 43 40 - movq [ebx+40],xmm0 BC8E1B1E: B9 80 CB 5A 14 - mov ecx,145ACB80 BC8E1B23: 8D 13 - lea edx,[ebx] BC8E1B25: 83 C3 30 - add ebx,30 BC8E1B28: C7 46 18 40 5C 83 14 - mov [esi+18],14835C40 BC8E1B2F: 53 - push ebx } Как я думаю стоит копать первый вариант. movq xmm0,[edi] Я посмотрел что инструкция "edi" напрямую связана со значением очков прокачки. Но как я сказал на прямую её менять нельзя. И тут мне вновь нужна помощь ваша помощь. Изменено 1 января, 2019 пользователем Tzeentch Ссылка на комментарий Поделиться на другие сайты Поделиться
Tzeentch Опубликовано 2 января, 2019 Автор Поделиться Опубликовано 2 января, 2019 В 01.01.2019 в 21:13, Tzeentch сказал: Инструкция же обращается к одному адресу. Показать контент Показать Вот прямая ссылка на скрин Показать контент https://drive.google.com/open?id=1IXTm2jOuHsdx2KKFM04YeXU1iZkqvn26 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 января, 2019 Поделиться Опубликовано 2 января, 2019 В 01.01.2019 в 21:13, Tzeentch сказал: Как я думаю стоит копать первый вариант. Показать Копать можно любой, только ты вначале проверь со сколькими адресами работают инструкции. Ссылка на комментарий Поделиться на другие сайты Поделиться
Tzeentch Опубликовано 2 января, 2019 Автор Поделиться Опубликовано 2 января, 2019 (изменено) В 02.01.2019 в 11:02, Garik66 сказал: Копать можно любой, только ты вначале проверь со сколькими адресами работают инструкции. Показать Да вроде все с одним адресом. По крайней мере при уменьшении очков прокачки. Изменено 2 января, 2019 пользователем Tzeentch Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 января, 2019 Поделиться Опубликовано 2 января, 2019 В 02.01.2019 в 11:04, Tzeentch сказал: вроде Показать Вроде - не, не подходит, нужно точно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость gonarh Опубликовано 6 января, 2019 Поделиться Опубликовано 6 января, 2019 (изменено) Извращенцы, распакуйте игру, в скрипт %game_folder%\gamedata\scripts\bind_actor.script в функцию actor_binder:on_item_drop добавьте в конец if pdaSkills then pdaSkills.add_points_amount(50) end Рестартаните игру и будет вам счастье Изменено 6 января, 2019 пользователем gonarh Ссылка на комментарий Поделиться на другие сайты Поделиться
MEDBEDb Опубликовано 8 января, 2019 Поделиться Опубликовано 8 января, 2019 В 06.01.2019 в 19:47, gonarh сказал: Извращенцы, распакуйте игру, в скрипт %game_folder%\gamedata\scripts\bind_actor.script в функцию actor_binder:on_item_drop добавьте в конец if pdaSkills then pdaSkills.add_points_amount(50) end Рестартаните игру и будет вам счастье Показать Нормально, мы вообще-то изначально пишем трейнеры и скрипты для игр. А изменение игровых файлов не интересно. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 8 января, 2019 Поделиться Опубликовано 8 января, 2019 В 02.01.2019 в 11:05, Garik66 сказал: Вроде - не, не подходит, нужно точно. Показать dbg срабатывает при bp на lua.dll .. а там уже не как с одним адресом работать не может.. Так что Игорь там не вроде Он и не смотрел видать... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения