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

Plugin AA Maker (создание АА скриптов)


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

18 минуту назад, Garik66 сказал:

Эта заплатка лишает плагин ещё одной опции "Original code in bytes", а это не есть хорошо ибо эта опция тоже фишка Плагина.


Ничего не должна она лишать, ставишь галку должны появляться инструкции, если снимаешь то по стандарту будут генерироваться байты

 

слева направо быстрая генерация, через AA Maker без галки, через АА Maker с галкой

 

Y8aFwtM39dA.jpg

 

Я ж специально сделал её так, чтобы не затрагивать другой функционал.

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

10 час назад, Garik66 сказал:

Странно, может я чёй-то не то делал, но у меня всегда в байтах всё стало, пришлось вернуть.

 

 

Последняя версия плагина здесь

Перекачай, возможно я не тот файл загрузил.

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

25 минуты назад, partoftheworlD сказал:

слева направо быстрая генерация, через AA Maker без галки, через АА Maker с галкой

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

 

 

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

3 минуты назад, Garik66 сказал:

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

 

Именно, просто обычное состояние этого чекбокса даже в быстрых скриптах определяло как генерировать инструкции для восстановления, и по стандарту везде генерировались инструкции.

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

15 минуту назад, partoftheworlD сказал:

Перекачай, возможно я не тот файл загрузил.

Всё понятно: ты вчера давал заменив originalCode на  originalBytes, а теперь ты заменил true на false.

 

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

4 минуты назад, Garik66 сказал:

Всё понятно: ты вчера давал заменив originalCode на  originalBytes, а теперь ты заменил true на false.

 

Ага, просто потом посмотрел, что это нарушает работу плагина и переделал, возможно забыл обновить.

Проверил, что без плагина CE не понимает корректно инструкции при восстановлении на примере нулевого смещения, так что это баг CE, а не плагина.

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

11 минуту назад, partoftheworlD сказал:

 

Ага, просто потом посмотрел, что это нарушает работу плагина и переделал, возможно забыл обновить.

ОК работает:

Скрытый текст

13749933.jpg13732525.jpg

13724333.jpg13729453.jpg

 

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

Теперь нужно решать ошибку "Error:Недопустимый объект класса" на инструкции: 

15 час назад, Foxhound сказал:

В версии 3.2 по адресу Tutorial-i386.exe+1D0551 расположена инструкция add ah,[edx+00].

15 час назад, Foxhound сказал:
 

Сам СЕ 6.5 на ней работает корректно, в Плагине работает только корректно "Injection"  при оригинальном code в байтах (как и в СЕ)

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

Что ещё сделано:

Обнаружил ошибку и уже поправил с ещё одной Фишкой Плагина.

Когда инструкция типа 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
}

 

 

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

Пока так и не решил эту проблему. Но на сегодня уже хватит - устал у меня уже перед глазами этот  LUA код.

Но решено довольно много так, что выложу временно сюда текущую версию ллагина

 

Последняя версия плагина здесь

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

Для слияния изменений может быть необходимо сравнивать два файла. Я делаю это через плагин Compare в Notepad++. Пример

Скрытый текст

Compare.thumb.png.b7d70bb1c67d19a3e0fac3

 

Compare2.thumb.png.efa54602f2eeef8e4f447

 

Сразу видим отличия и вносим их.

Если нужна моя поддержка по поводу плагина.  Мне будет проще, если очень подробно будут описаны проблемные места

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')

 

 

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

20 минуты назад, MasterGH сказал:

плагин Compare в Notepad++

Не пользовался (Нужно будет обязательно попробовать). Бегаю глазами от одной вкладки к другой - по старинке - выровнив по одинаковым строкам .:D

 

23 минуты назад, MasterGH сказал:

Если нужна моя поддержка по поводу плагина. 

Конечна нужна будет. Заранее сенк.

 

23 минуты назад, MasterGH сказал:

Ведение лога как у CE

Сейчас проверю и, если ровно - добавлю в плагин. 

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

Пока не получается.

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)

 

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

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

Последняя версия плагина здесь.

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

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)

 

Сейчас проверю свою догадку и, если сработает, то я - МОЛОДЦА!!! 

 

ЗЫ: :wacko: Не молодца. Не получилось. 

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

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
}

 

 

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

Измененный код логов АА

 

Скрытый текст

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) и кода выше

Скрытый текст

Compare3.thumb.png.39c3019477afba40364a2

 

При сравнении вижу отличия в названии символов адресов слева и внутри инструкций. Последовательность инструкций верная

 

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

3 минуты назад, MasterGH сказал:

   textLog = textLog..'// ---------- DONE INJECTING  ----------\r\n'
	tempAddress = address    // Мне кажется у тебя опять здесь ошибка. Эту строчку в предыдущий раз мне пришлось удалить.
	for i=1,10 do

 

 

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

Вот как заменить формат такой

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

Пока не знаю. Надо подумать как это написать.

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

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
}

 

Как видишь сейчас что сверху инъекции верно, а что снизу не верно- идёт копия верха.

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

Или я неправильно встраиваю твой скрипт.

Я вставляю только вот эту часть:

Скрытый текст

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)

 

 

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

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

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

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