Перейти к содержанию
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%)",""),

 

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


Ссылка на сообщение
Поделиться на другие сайты
В данном топике никто не постил уже 4 месяца. Пости здесь только если твой вопрос точно совпадает с темой данного топика.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр

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

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

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