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

[Cheat Engine] Выравнивание данных

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

думал, можно ли данные выравнять по 16 байт например?

в lua можно только к символам обратиться

жаль нельзя label получать список или alloc

я набросал такой скрипт

хотя хотелось бы избавиться от label лишнего

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

script = [[

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
registerSymbol(align)
label(align)
label(data)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here


originalcode:
movss [esi+0000486C],xmm0

exit:
jmp returnhere

align:

data:
dd 0

"BH6.exe"+159DD6:
jmp newmem
nop
nop
nop
returnhere:

 

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"BH6.exe"+159DD6:
movss [esi+0000486C],xmm0
//Alt: db F3 0F 11 86 6C 48 00 00

]];

autoAssemble(script)

for i=0,getAddress("align")%16 do  writeBytes(getAddress("align"),0x90); end
print(string.format("%x",getAddress("align")))
unregisterSymbol("align")

 

но ссылается по-старому

получается надо 1 раз вставить определить размер и во  второй раз дописать nop'ы

 

Изменено пользователем X86Jumps

Поделиться сообщением


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

что то вроде такого

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

 

script = [[

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
registerSymbol(align)
label(align)
label(data)

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

push eax
mov eax,(float)255.0
mov [data],eax
pop eax

originalcode:
movss [esi+0000486C],xmm0

exit:
jmp returnhere

align:
//aligndatahere

data:
dd -1

"BH6.exe"+159DD6:
jmp newmem
nop
nop
nop
returnhere:

 

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"BH6.exe"+159DD6:
movss [esi+0000486C],xmm0
//Alt: db F3 0F 11 86 6C 48 00 00

]];

result, disableinfo = autoAssemble(script)
str = string.rep("nop\n", getAddress("align")%16)
autoAssemble(script, disableinfo)
unregisterSymbol("align")
--for i=0,getAddress("align")%16 do  writeBytes(getAddress("align"),0x90); end
--print(string.format("%x",getAddress("align")))
script2 = string.gsub(string.gsub(string.gsub(string.gsub(script, "//aligndatahere", str), "registerSymbol(align)",""), "label(align)",""), "align","")
autoAssemble(script2)

 

 

без disableinfo почему то не вырубает, можно было бы просто true передавать

(я дописал push ... pop чтоб надо было больше вставлять для выравнивания)

Изменено пользователем X86Jumps

Поделиться сообщением


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

забыл (точнее не особо и знал)) ) что в gsub reg exp

надо было экранировать скобки

Цитата

script2 = string.gsub(string.gsub(string.gsub(string.gsub(script, "//aligndatahere", str), "registerSymbol%(align%)",""), "label%(align%)",""),

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

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

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