MasterGH Опубликовано 22 марта, 2015 Поделиться Опубликовано 22 марта, 2015 Как отобразить окно "Changed addresses" ?1. Подключить процесс игры к Cheat Engine2. Найти адрес3. Поставить брейкпоинт и получить инструкции4. Выбрать инструкцию и перейти в дизассемблер5. Вызвать меню как на скриншоте ("определение проскакивающих адресов")6. Перейти в игру и увидеть адреса, которые прерывались на инструкции Зачем нужно окно "Changed addresses" ?1. Окно "Changed addresses" показывает информацию об адресах, с которыми сработала дизассемблированная инструкция. 2. Если один адрес проскакивает, значит инъекция кода будет работать с одним адресом. 3. Если несколько адресов проскакивает, то инъекция кода бдет работать с несколькими адресами.4. В окне "Changed addresses" есть множество функций контекстного меню.Наиболее важная первая функция, которая позволит увидеть регистры CPU, FPU, SIMD, а также стек. В окне стека наиболее важная предпоследняя функция в контекстном меню, которая позволит расструктуризовать стек в окне Dessect Data Structure. Для получения дополнительной информации про окно расструктуризации DessectData/Structure поищите темы на форуме)Как перенести адреса из формы Changed addresses в главную табицу CE?1. Должна быть открыта форма с адресами 2. Открыть Lua консоль из меню главной формы Cheat Engine и выполнить код нажав на кнопку внизу 3. Если все успешно, то результат например будет таким * Скрипт Lua не учитывает все формы Changed addresses** Скрипт Lua учитывает тип из Changed addresses формыfunction FindFrom(formName) local formCount = getFormCount() for i=0, formCount-1 do if(getForm(i).Name == formName) then return getForm(i) end endendfunction GetTypeFromComboBox(cbDisplayType) local itemIndex = cbDisplayType.ItemIndex local strCaption = cbDisplayType.Items[itemIndex] if (strCaption == 'Byte') then return vtByte end if (strCaption == '2 Bytes') then return vtWord end if (strCaption == '4 Bytes') then return vtDword end if (strCaption == 'Float') then return vtSingle end if (strCaption == 'Double') then return vtDouble end return vtDwordendlocal frmChangedAddresses = FindFrom('frmChangedAddresses')local changedlist = frmChangedAddresses.findComponentByName('Changedlist')local addressList = getAddressList()local itemsAddressList = changedlist.Itemslocal countLines = itemsAddressList.getCount()-- Получить тип в кобобоксеlocal cbDisplayType = frmChangedAddresses.findComponentByName('cbDisplayType')local indexType = GetTypeFromComboBox(cbDisplayType)for i=0, countLines-1 do local mr = addressList.createMemoryRecord() mr.Address = itemsAddressList.getItem(i).Caption mr.Type = indexTypeend Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения