partoftheworlD Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 (изменено) 18 минуту назад, Garik66 сказал: Эта заплатка лишает плагин ещё одной опции "Original code in bytes", а это не есть хорошо ибо эта опция тоже фишка Плагина. Ничего не должна она лишать, ставишь галку должны появляться инструкции, если снимаешь то по стандарту будут генерироваться байты слева направо быстрая генерация, через AA Maker без галки, через АА Maker с галкой Я ж специально сделал её так, чтобы не затрагивать другой функционал. Изменено 29 апреля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 Странно, может я чёй-то не то делал, но у меня всегда в байтах всё стало, пришлось вернуть. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 10 час назад, Garik66 сказал: Странно, может я чёй-то не то делал, но у меня всегда в байтах всё стало, пришлось вернуть. Последняя версия плагина здесь Перекачай, возможно я не тот файл загрузил. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 25 минуты назад, partoftheworlD сказал: слева направо быстрая генерация, через AA Maker без галки, через АА Maker с галкой Т.е. ты сделал обратно без галки - байты с галкой - оригинальны код. Сейчас проверю, если так, то надпись то можно легко поменять на обратную Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 3 минуты назад, Garik66 сказал: Т.е. ты сделал обратно без галки - байты с галкой - оригинальны код. Сейчас проверю, если так, то надпись то можно легко поменять на обратную Именно, просто обычное состояние этого чекбокса даже в быстрых скриптах определяло как генерировать инструкции для восстановления, и по стандарту везде генерировались инструкции. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 15 минуту назад, partoftheworlD сказал: Перекачай, возможно я не тот файл загрузил. Всё понятно: ты вчера давал заменив originalCode на originalBytes, а теперь ты заменил true на false. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 (изменено) 4 минуты назад, Garik66 сказал: Всё понятно: ты вчера давал заменив originalCode на originalBytes, а теперь ты заменил true на false. Ага, просто потом посмотрел, что это нарушает работу плагина и переделал, возможно забыл обновить. Проверил, что без плагина CE не понимает корректно инструкции при восстановлении на примере нулевого смещения, так что это баг CE, а не плагина. Изменено 29 апреля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 ОК. Сейчас проверю и если всё ровно, просто поменяю подпись на обратную, ну что-то типа: "Original code in opcods" Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 11 минуту назад, partoftheworlD сказал: Ага, просто потом посмотрел, что это нарушает работу плагина и переделал, возможно забыл обновить. ОК работает: Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 Теперь нужно решать ошибку "Error:Недопустимый объект класса" на инструкции: 15 час назад, Foxhound сказал: В версии 3.2 по адресу Tutorial-i386.exe+1D0551 расположена инструкция add ah,[edx+00]. 15 час назад, Foxhound сказал: Сам СЕ 6.5 на ней работает корректно, в Плагине работает только корректно "Injection" при оригинальном code в байтах (как и в СЕ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 Что ещё сделано: Обнаружил ошибку и уже поправил с ещё одной Фишкой Плагина. Когда инструкция типа mov [edx+24],eax. и обратных Если нет ошибок , плагин должен менять, при создании скрипта eax на цифру. которую мы ставим в Value (Это для скриптов Injection, AOBScan и AOBScanModule). Скрытый текст { Game : Tutorial-i386.exe Version: 1.0 Date : 04-29-17 Author : [open aamaker.lua and pastle Author] This script does blah blah blah Make by aamaker Lua plagin Version 2.4.0.G66 :) [EN] Technical support : http://forum.cheatengine.org/viewtopic.php?p=5645967 [RU] Техническая поддержка: https://forum.gamehacklab.ru/index.php?/topic/1415-plugin-aa-maker-создание-аа-скриптов } [ENABLE] aobscanmodule(INJECT2,Tutorial-i386.exe+23AD7,8B 8B 68 04 00 00 8B 09 FF 91 20 02 00 00 8B 83 78 04 00 00 B2 00 8B 8B 78 04 00 00 8B 09 FF 91 D8 00 00 00 5B C3 00 00 00 53) alloc(newmem,$1000,Tutorial-i386.exe+23AD7) label(code) label(return) registersymbol(INJECT2) newmem: code: mov [ebx+00000468],#100 mov ecx,[ebx+00000468] jmp return INJECT2: jmp newmem nop return: [DISABLE] INJECT2: db 8B 8B 68 04 00 00 unregistersymbol(INJECT2) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: Tutorial-i386.exe+23AD7 Tutorial-i386.exe+23AB9: C3 - ret Tutorial-i386.exe+23ABA: 00 00 - add [eax],al Tutorial-i386.exe+23ABC: 00 00 - add [eax],al Tutorial-i386.exe+23ABE: 00 00 - add [eax],al Tutorial-i386.exe+23AC0: 53 - push ebx Tutorial-i386.exe+23AC1: 89 C3 - mov ebx,eax INJECT: 81 BB 80040000 E8030000 - cmp [ebx+00000480],000003E8 Tutorial-i386.exe+23ACD: 75 2C - jne 00423AFB Tutorial-i386.exe+23ACF: 8B 83 68040000 - mov eax,[ebx+00000468] Tutorial-i386.exe+23AD5: B2 01 - mov dl,01 // ---------- INJECTING HERE ---------- Tutorial-i386.exe+23AD7: 8B 8B 68040000 - mov ecx,[ebx+00000468] // ---------- DONE INJECTING ---------- Tutorial-i386.exe+23ADD: 8B 09 - mov ecx,[ecx] Tutorial-i386.exe+23ADF: FF 91 20020000 - call dword ptr [ecx+00000220] Tutorial-i386.exe+23AE5: 8B 83 78040000 - mov eax,[ebx+00000478] Tutorial-i386.exe+23AEB: B2 00 - mov dl,00 Tutorial-i386.exe+23AED: 8B 8B 78040000 - mov ecx,[ebx+00000478] Tutorial-i386.exe+23AF3: 8B 09 - mov ecx,[ecx] Tutorial-i386.exe+23AF5: FF 91 D8000000 - call dword ptr [ecx+000000D8] Tutorial-i386.exe+23AFB: 5B - pop ebx Tutorial-i386.exe+23AFC: C3 - ret Tutorial-i386.exe+23AFD: 00 00 - add [eax],al } Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 Всё, нужно перекурить с часок, а то голова уже дымиться. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 Пока так и не решил эту проблему. Но на сегодня уже хватит - устал у меня уже перед глазами этот LUA код. Но решено довольно много так, что выложу временно сюда текущую версию ллагина Последняя версия плагина здесь Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 апреля, 2017 Автор Поделиться Опубликовано 29 апреля, 2017 Для слияния изменений может быть необходимо сравнивать два файла. Я делаю это через плагин Compare в Notepad++. Пример Скрытый текст Сразу видим отличия и вносим их. Если нужна моя поддержка по поводу плагина. Мне будет проще, если очень подробно будут описаны проблемные места 1. Текст АА кода с ошибками (текстом, не скриншотом) 2. Текст АА кода "как должно быть" (текстом, не скриншотом) 3. Подопытные кролики Tutorial-i386.exe и Tutorial-x86_64.exe 4. Версия CE не ниже 6.6 И самое главное, если есть файл кода с изменениями например Последняя версия плагина здесь , то и его прикрепить к сообщению. Ведение лога как у CE в комментах к АА. Запощу, а то забуду Скрытый текст function GetLine(address) local _,opcode, bytes, address = splitDisassembledString(disassemble(address)) local bytes = bytes..string.rep (' ', 33 - string.len(bytes)) return string.format('%s: %s- %s', getNameFromAddress(address), bytes, opcode) end function GetTextLog(address) local textLog = '{\r\n' textLog = textLog..'// ORIGINAL CODE - INJECTION POINT: '..getNameFromAddress(address)..'\r\n\r\n' local tempAddress = address for i=1,10 do tempAddress = getPreviousOpcode(tempAddress) textLog = textLog..GetLine(tempAddress)..'\r\n' end textLog = textLog..'// ---------- INJECTING HERE -----------\r\n' textLog = textLog..GetLine(address)..'\r\n' textLog = textLog..'// ---------- DONE INJECTING ----------\r\n' tempAddress = address for i=1,10 do tempAddress = tempAddress + getInstructionSize(tempAddress) textLog = textLog..GetLine(tempAddress)..'\r\n' end return textLog..'}' end function AddAARecord(script, sciptName) local addresslist = getAddressList() newTableEntry = addresslist.createMemoryRecord(addresslist) newTableEntry.setDescription(sciptName) newTableEntry.setType(vtAutoAssembler) newTableEntry.setScript(newTableEntry, script) return newTableEntry end local mainAddress = getAddress('"test.exe"+5461D') local script = GetTextLog(mainAddress) AddAARecord(script, 'Test') Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 20 минуты назад, MasterGH сказал: плагин Compare в Notepad++ Не пользовался (Нужно будет обязательно попробовать). Бегаю глазами от одной вкладки к другой - по старинке - выровнив по одинаковым строкам . 23 минуты назад, MasterGH сказал: Если нужна моя поддержка по поводу плагина. Конечна нужна будет. Заранее сенк. 23 минуты назад, MasterGH сказал: Ведение лога как у CE Сейчас проверю и, если ровно - добавлю в плагин. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 Пока не получается. 1. Error:...les (x86)\Cheat Engine 6.5\autorun\aamaker _V240_G66.lua:791: attempt to call a nil value (global 'GetLog') это вроде решил --Это: script = string.gsub(script,'{$PrintLog}', GetLog(getNameFromAddress(address), getNameFromAddress(length + address))) --Заменил на это: script = string.gsub(script,'{$PrintLog}', GetTextLog(getNameFromAddress(address), getNameFromAddress(length + address))) 2. Error:...les (x86)\Cheat Engine 6.5\autorun\aamaker _V240_G66.lua:818: attempt to perform arithmetic on a string value (local 'tempAddress') Эту пока не понимаю: tempAddress = tempAddress + getInstructionSize(tempAddress) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 3 часа назад, MasterGH сказал: Ведение лога как у CE Уф сделал, у тебе ошибка здесь: textLog = textLog..'// ---------- DONE INJECTING ----------\r\n' --- tempAddress = address //Это лишнее for i=1,10 do Полученный скрипт: Скрытый текст { Game : Tutorial-i386.exe Version: 1.0 Date : 04-29-17 Author : [open aamaker.lua and pastle Author] This script does blah blah blah Make by aamaker Lua plagin Version 2.4.0.G66 :) [EN] Technical support : http://forum.cheatengine.org/viewtopic.php?p=5645967 [RU] Техническая поддержка: https://forum.gamehacklab.ru/index.php?/topic/1415-plugin-aa-maker-создание-аа-скриптов } [ENABLE] aobscanmodule(INJECT0,Tutorial-i386.exe+14DD20,C6 05 F0 E4 54 00 00) registersymbol(INJECT0) INJECT0: db 90 90 90 90 90 90 90 [DISABLE] INJECT0: db C6 05 F0 E4 54 00 00 unregistersymbol(INJECT0) { // ORIGINAL CODE - INJECTION POINT: Tutorial-i386.exe+14DD20 Tutorial-i386.exe+14DD1D: C2 0C00 - ret 000C Tutorial-i386.exe+14DD1C: C9 - leave Tutorial-i386.exe+14DD17: E8 8425ECFF - call 004102A0 Tutorial-i386.exe+14DD15: 74 05 - je 0054DD1C Tutorial-i386.exe+14DD13: 85 C0 - test eax,eax Tutorial-i386.exe+14DD0E: E8 4D35EBFF - call 00401260 Tutorial-i386.exe+14DD08: FF 35 00F05400 - push [0054F000] Tutorial-i386.exe+14DD06: EB 14 - jmp 0054DD1C Tutorial-i386.exe+14DD01: E8 BA24ECFF - call 004101C0 Tutorial-i386.exe+14DCFC: B8 00000001 - mov eax,01000000 // ---------- INJECTING HERE ----------- Tutorial-i386.exe+14DD20: C6 05 F0E45400 00 - mov byte ptr [0054E4F0],00 // ---------- DONE INJECTING ---------- Tutorial-i386.exe+14DD01: E8 BA24ECFF - call 004101C0 Tutorial-i386.exe+14DD06: EB 14 - jmp 0054DD1C Tutorial-i386.exe+14DD08: FF 35 00F05400 - push [0054F000] Tutorial-i386.exe+14DD0E: E8 4D35EBFF - call 00401260 Tutorial-i386.exe+14DD13: 85 C0 - test eax,eax Tutorial-i386.exe+14DD15: 74 05 - je 0054DD1C Tutorial-i386.exe+14DD17: E8 8425ECFF - call 004102A0 Tutorial-i386.exe+14DD1C: C9 - leave Tutorial-i386.exe+14DD1D: C2 0C00 - ret 000C Tutorial-i386.exe+14DD20: C6 05 F0E45400 00 - mov byte ptr [0054E4F0],00 } Красота. Спасибо MasterGH Последняя версия плагина здесь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 6 часов назад, Garik66 сказал: Пока так и не решил эту проблему. Кажется я понял MasterGH Читал на форуме СЕ (но теперь не могу найти этот топик) об ошибке "Error:Недопустимый объект класса" и там Дарк Байт писал, что лучше не использовать ComboBox. Я код, который ты поменял в версии 2.4.2., связанный с этой ошибкой, полностью подставлял и у меня не работало, но я не менял вот эту строчку: Скрытый текст // ЭТУ СТРОЧКУ: local items = combobox_getItems(cmbCheatType) strings_add(items, 'Simple') strings_add(items, 'Injection') strings_add(items, 'Nops') strings_add(items, 'AOBScan') strings_add(items, 'AOBScanModule') strings_add(items, 'AOBScanModuleStealth') strings_add(items, 'Disable CALL') setProperty(cmbCheatType, 'ReadOnly', true) combobox_setItemIndex(cmbCheatType,0) // НА ЭТУ С ДОБАВКОЙ 'AOBScan': local items = cmbCheatType.getItems() items.add('Simple') items.add('Injection') items.add('Nops') items.add('AOBScanModule') items.add('AOBScanModuleStealth') items.add('Disable CALL') setProperty(cmbCheatType, 'ReadOnly', true) cmbCheatType.setItemIndex(0) Сейчас проверю свою догадку и, если сработает, то я - МОЛОДЦА!!! ЗЫ: Не молодца. Не получилось. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 2 часа назад, MasterGH сказал: Ведение лога как у CE в комментах к АА. Запощу, а то забуду Мастер, только что обнаружил логи не верные получаются: Вот скрипт СЕ; Скрытый текст { Game : Tutorial-i386.exe Version: Date : 2017-04-30 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: cmp [ebx+00000480],000003E8 jmp return INJECT: jmp code nop nop nop nop nop return: registersymbol(INJECT) [DISABLE] INJECT: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+23AC3 "Tutorial-i386.exe"+23AB1: E8 0A 9D FE FF - call Tutorial-i386.exe+D7C0 "Tutorial-i386.exe"+23AB6: 5E - pop esi "Tutorial-i386.exe"+23AB7: 5B - pop ebx "Tutorial-i386.exe"+23AB8: C9 - leave "Tutorial-i386.exe"+23AB9: C3 - ret "Tutorial-i386.exe"+23ABA: 00 00 - add [eax],al "Tutorial-i386.exe"+23ABC: 00 00 - add [eax],al "Tutorial-i386.exe"+23ABE: 00 00 - add [eax],al "Tutorial-i386.exe"+23AC0: 53 - push ebx "Tutorial-i386.exe"+23AC1: 89 C3 - mov ebx,eax // ---------- INJECTING HERE ---------- "Tutorial-i386.exe"+23AC3: 81 BB 80 04 00 00 E8 03 00 00 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- "Tutorial-i386.exe"+23ACD: 75 2C - jne Tutorial-i386.exe+23AFB "Tutorial-i386.exe"+23ACF: 8B 83 68 04 00 00 - mov eax,[ebx+00000468] "Tutorial-i386.exe"+23AD5: B2 01 - mov dl,01 "Tutorial-i386.exe"+23AD7: 8B 8B 68 04 00 00 - mov ecx,[ebx+00000468] "Tutorial-i386.exe"+23ADD: 8B 09 - mov ecx,[ecx] "Tutorial-i386.exe"+23ADF: FF 91 20 02 00 00 - call dword ptr [ecx+00000220] "Tutorial-i386.exe"+23AE5: 8B 83 78 04 00 00 - mov eax,[ebx+00000478] "Tutorial-i386.exe"+23AEB: B2 00 - mov dl,00 "Tutorial-i386.exe"+23AED: 8B 8B 78 04 00 00 - mov ecx,[ebx+00000478] "Tutorial-i386.exe"+23AF3: 8B 09 - mov ecx,[ecx] } А вот скрипт Плагина: Скрытый текст { Game : Tutorial-i386.exe Version: 1.0 Date : 04-30-17 Author : [open aamaker.lua and pastle Author] This script does blah blah blah Make by aamaker Lua plagin Version 2.4.0.G66 :) [EN] Technical support : http://forum.cheatengine.org/viewtopic.php?p=5645967 [RU] Техническая поддержка: https://forum.gamehacklab.ru/index.php?/topic/1415-plugin-aa-maker-создание-аа-скриптов } [ENABLE] aobscanmodule(INJECT0,Tutorial-i386.exe+23AC3,81 BB 80 04 00 00 E8 03 00 00) alloc(newmem,$1000,Tutorial-i386.exe+23AC3) label(code) label(return) registersymbol(INJECT0) newmem: code: cmp [ebx+00000480],000003E8 jmp return INJECT0: jmp newmem db 90 90 90 90 90 return: [DISABLE] INJECT0: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(INJECT0) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: Tutorial-i386.exe+23AC3 Tutorial-i386.exe+23AC1: 89 C3 - mov ebx,eax Tutorial-i386.exe+23AC0: 53 - push ebx Tutorial-i386.exe+23ABE: 00 00 - add [eax],al Tutorial-i386.exe+23ABC: 00 00 - add [eax],al Tutorial-i386.exe+23ABA: 00 00 - add [eax],al Tutorial-i386.exe+23AB9: C3 - ret Tutorial-i386.exe+23AB8: C9 - leave Tutorial-i386.exe+23AB7: 5B - pop ebx Tutorial-i386.exe+23AB6: 5E - pop esi Tutorial-i386.exe+23AB1: E8 0A9DFEFF - call 0040D7C0 // ---------- INJECTING HERE ----------- Tutorial-i386.exe+23AC3: 81 BB 80040000 E8030000 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- Tutorial-i386.exe+23AB6: 5E - pop esi Tutorial-i386.exe+23AB7: 5B - pop ebx Tutorial-i386.exe+23AB8: C9 - leave Tutorial-i386.exe+23AB9: C3 - ret Tutorial-i386.exe+23ABA: 00 00 - add [eax],al Tutorial-i386.exe+23ABC: 00 00 - add [eax],al Tutorial-i386.exe+23ABE: 00 00 - add [eax],al Tutorial-i386.exe+23AC0: 53 - push ebx Tutorial-i386.exe+23AC1: 89 C3 - mov ebx,eax Tutorial-i386.exe+23AC3: 81 BB 80040000 E8030000 - cmp [ebx+00000480],000003E8 } Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 апреля, 2017 Автор Поделиться Опубликовано 29 апреля, 2017 Измененный код логов АА Скрытый текст function GetLine(address) local _,opcode, bytes, address = splitDisassembledString(disassemble(address)) local bytes = bytes..string.rep (' ', 33 - string.len(bytes)) return string.format('%s: %s- %s', getNameFromAddress(address), bytes, opcode) end function GetTextLog(address) local textLog = '{\r\n' textLog = textLog..'// ORIGINAL CODE - INJECTION POINT: '..getNameFromAddress(address)..'\r\n\r\n' local tempAddress = address local tempString = '' for i=1,10 do tempAddress = getPreviousOpcode(tempAddress) tempString = GetLine(tempAddress)..'\r\n'..tempString end textLog = textLog..tempString..'// ---------- INJECTING HERE -----------\r\n' textLog = textLog..GetLine(address)..'\r\n' textLog = textLog..'// ---------- DONE INJECTING ----------\r\n' tempAddress = address for i=1,10 do tempAddress = tempAddress + getInstructionSize(tempAddress) textLog = textLog..GetLine(tempAddress)..'\r\n' end return textLog..'}' end function AddAARecord(script, sciptName) local addresslist = getAddressList() newTableEntry = addresslist.createMemoryRecord(addresslist) newTableEntry.setDescription(sciptName) newTableEntry.setType(vtAutoAssembler) newTableEntry.setScript(newTableEntry, script) return newTableEntry end local mainAddress = getAddress('074185BC') local script = GetTextLog(mainAddress) AddAARecord(script, 'Test') Сравнение строк АА скриптов CE (оригинальный шаблон CE) и кода выше Скрытый текст При сравнении вижу отличия в названии символов адресов слева и внутри инструкций. Последовательность инструкций верная Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 3 минуты назад, MasterGH сказал: textLog = textLog..'// ---------- DONE INJECTING ----------\r\n' tempAddress = address // Мне кажется у тебя опять здесь ошибка. Эту строчку в предыдущий раз мне пришлось удалить. for i=1,10 do Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 апреля, 2017 Автор Поделиться Опубликовано 29 апреля, 2017 Там нет ошибки Скриншот сверху показывает сравнение. Последовательность инструкций верная Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 апреля, 2017 Автор Поделиться Опубликовано 29 апреля, 2017 Вот как заменить формат такой xrGame.CDialogHolder::CDialogHolder+1E1C71: F7 05 3C5C7D07 00040000 - test [077D5C3C],0400 На такой "xrGame.dll"+2785A1: F7 05 3C 5C 7D 07 00 04 00 00 - test [xrGame.dll+635C3C],0400 Пока не знаю. Надо подумать как это написать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 1 минуту назад, MasterGH сказал: Там нет ошибки Есть и уже писал выше: Error:...les (x86)\Cheat Engine 6.5\autorun\aamaker _V240_G66.lua:819: attempt to perform arithmetic on a string value (local 'tempAddress') После удаления той строки Логи в плагине Скрытый текст { Game : Tutorial-i386.exe Version: 1.0 Date : 04-30-17 Author : [open aamaker.lua and pastle Author] This script does blah blah blah Make by aamaker Lua plagin Version 2.4.0.G66 :) [EN] Technical support : http://forum.cheatengine.org/viewtopic.php?p=5645967 [RU] Техническая поддержка: https://forum.gamehacklab.ru/index.php?/topic/1415-plugin-aa-maker-создание-аа-скриптов } [ENABLE] aobscanmodule(INJECT0,Tutorial-i386.exe+14DD20,C6 05 F0 E4 54 00 00) alloc(newmem,$1000,Tutorial-i386.exe+14DD20) label(code) label(return) registersymbol(INJECT0) newmem: code: mov byte ptr [0054E4F0],#100 jmp return INJECT0: jmp newmem nop nop return: [DISABLE] INJECT0: db C6 05 F0 E4 54 00 00 unregistersymbol(INJECT0) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: Tutorial-i386.exe+14DD20 Tutorial-i386.exe+14DCFC: B8 00000001 - mov eax,01000000 Tutorial-i386.exe+14DD01: E8 BA24ECFF - call 004101C0 Tutorial-i386.exe+14DD06: EB 14 - jmp 0054DD1C Tutorial-i386.exe+14DD08: FF 35 00F05400 - push [0054F000] Tutorial-i386.exe+14DD0E: E8 4D35EBFF - call 00401260 Tutorial-i386.exe+14DD13: 85 C0 - test eax,eax Tutorial-i386.exe+14DD15: 74 05 - je 0054DD1C Tutorial-i386.exe+14DD17: E8 8425ECFF - call 004102A0 Tutorial-i386.exe+14DD1C: C9 - leave Tutorial-i386.exe+14DD1D: C2 0C00 - ret 000C // ---------- INJECTING HERE ----------- Tutorial-i386.exe+14DD20: C6 05 F0E45400 00 - mov byte ptr [0054E4F0],00 // ---------- DONE INJECTING ---------- Tutorial-i386.exe+14DD01: E8 BA24ECFF - call 004101C0 Tutorial-i386.exe+14DD06: EB 14 - jmp 0054DD1C Tutorial-i386.exe+14DD08: FF 35 00F05400 - push [0054F000] Tutorial-i386.exe+14DD0E: E8 4D35EBFF - call 00401260 Tutorial-i386.exe+14DD13: 85 C0 - test eax,eax Tutorial-i386.exe+14DD15: 74 05 - je 0054DD1C Tutorial-i386.exe+14DD17: E8 8425ECFF - call 004102A0 Tutorial-i386.exe+14DD1C: C9 - leave Tutorial-i386.exe+14DD1D: C2 0C00 - ret 000C Tutorial-i386.exe+14DD20: C6 05 F0E45400 00 - mov byte ptr [0054E4F0],00 } и Логи в СЕ: Скрытый текст { Game : Tutorial-i386.exe Version: Date : 2017-04-30 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(INJECT,Tutorial-i386.exe,C6 05 F0 E4 54 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: mov byte ptr [Tutorial-i386.exe+14E4F0],00 jmp return INJECT: jmp code nop nop return: registersymbol(INJECT) [DISABLE] INJECT: db C6 05 F0 E4 54 00 00 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+14DD20 "Tutorial-i386.exe"+14DCFC: B8 00 00 00 01 - mov eax,01000000 "Tutorial-i386.exe"+14DD01: E8 BA 24 EC FF - call Tutorial-i386.exe+101C0 "Tutorial-i386.exe"+14DD06: EB 14 - jmp Tutorial-i386.exe+14DD1C "Tutorial-i386.exe"+14DD08: FF 35 00 F0 54 00 - push [Tutorial-i386.exe+14F000] "Tutorial-i386.exe"+14DD0E: E8 4D 35 EB FF - call Tutorial-i386.exe+1260 "Tutorial-i386.exe"+14DD13: 85 C0 - test eax,eax "Tutorial-i386.exe"+14DD15: 74 05 - je Tutorial-i386.exe+14DD1C "Tutorial-i386.exe"+14DD17: E8 84 25 EC FF - call Tutorial-i386.exe+102A0 "Tutorial-i386.exe"+14DD1C: C9 - leave "Tutorial-i386.exe"+14DD1D: C2 0C 00 - ret 000C // ---------- INJECTING HERE ---------- "Tutorial-i386.exe"+14DD20: C6 05 F0 E4 54 00 00 - mov byte ptr [Tutorial-i386.exe+14E4F0],00 // ---------- DONE INJECTING ---------- "Tutorial-i386.exe"+14DD27: B9 00 80 63 00 - mov ecx,Tutorial-i386.exe+238000 "Tutorial-i386.exe"+14DD2C: BA 04 80 63 00 - mov edx,Tutorial-i386.exe+238004 "Tutorial-i386.exe"+14DD31: B8 A0 3D 5D 00 - mov eax,Tutorial-i386.exe+1D3DA0 "Tutorial-i386.exe"+14DD36: E8 65 FF FF FF - call Tutorial-i386.exe+14DCA0 "Tutorial-i386.exe"+14DD3B: E8 70 FF FF FF - call Tutorial-i386.exe+14DCB0 "Tutorial-i386.exe"+14DD40: B8 80 3D 5D 00 - mov eax,Tutorial-i386.exe+1D3D80 "Tutorial-i386.exe"+14DD45: E8 66 52 EC FF - call Tutorial-i386.exe+12FB0 "Tutorial-i386.exe"+14DD4A: C3 - ret "Tutorial-i386.exe"+14DD4B: 00 00 - add [eax],al "Tutorial-i386.exe"+14DD4D: 00 00 - add [eax],al } Как видишь сейчас что сверху инъекции верно, а что снизу не верно- идёт копия верха. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 апреля, 2017 Поделиться Опубликовано 29 апреля, 2017 Или я неправильно встраиваю твой скрипт. Я вставляю только вот эту часть: Скрытый текст function GetLine(address) local _,opcode, bytes, address = splitDisassembledString(disassemble(address)) local bytes = bytes..string.rep (' ', 33 - string.len(bytes)) return string.format('%s: %s- %s', getNameFromAddress(address), bytes, opcode) end function GetTextLog(address) local textLog = '{\r\n' textLog = textLog..'// ORIGINAL CODE - INJECTION POINT: '..getNameFromAddress(address)..'\r\n\r\n' local tempAddress = address local tempString = '' for i=1,10 do tempAddress = getPreviousOpcode(tempAddress) tempString = GetLine(tempAddress)..'\r\n'..tempString end textLog = textLog..tempString..'// ---------- INJECTING HERE -----------\r\n' textLog = textLog..GetLine(address)..'\r\n' textLog = textLog..'// ---------- DONE INJECTING ----------\r\n' --tempAddress = address for i=1,10 do tempAddress = tempAddress + getInstructionSize(tempAddress) textLog = textLog..GetLine(tempAddress)..'\r\n' end return textLog..'}' end а потом были две ошибки: 2 часа назад, Garik66 сказал: Пока не получается. 1. Error:...les (x86)\Cheat Engine 6.5\autorun\aamaker _V240_G66.lua:791: attempt to call a nil value (global 'GetLog') это вроде решил --Это: script = string.gsub(script,'{$PrintLog}', GetLog(getNameFromAddress(address), getNameFromAddress(length + address))) --Заменил на это: script = string.gsub(script,'{$PrintLog}', GetTextLog(getNameFromAddress(address), getNameFromAddress(length + address))) 2. Error:...les (x86)\Cheat Engine 6.5\autorun\aamaker _V240_G66.lua:818: attempt to perform arithmetic on a string value (local 'tempAddress') Эту пока не понимаю: tempAddress = tempAddress + getInstructionSize(tempAddress) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения