aliast Опубликовано 19 марта, 2010 Поделиться Опубликовано 19 марта, 2010 Имеем репак русской Акеллы (~ 5 Гб). С существующим тренером игра части вылетает, решил попробовать завесить своими силами. Может вылетать не будет... начал с патронов. Одной инструкцией удалось завесить сразу все патроны, кроме дробовика. У дробовика пуля в каждом стволе лишь одна, и если её выстрелить, пуля исчезает и толку от завешанных патронов никакого... видимо пуля здесь - отдельный объект. Нужна помощь Кстати, рабочий тренер дробовик тоже не завешивает((Пойду с жизнью разбираться...Upd: мда... меняю патроны в таблицы, без всяких скриптов, просто значение в таблице - игра вылетает... хотя до этого ломал, ничего не вылетало... бред(( Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 19 марта, 2010 Поделиться Опубликовано 19 марта, 2010 у меня с патронами подобная шняга была, я просто забил на дробаш...Когда ломанёшь хелы скажи что за тип данных.Кстати там ещё ломануть довоенные патроны можно и давление в пневмовинтовке... Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 20 марта, 2010 Автор Поделиться Опубликовано 20 марта, 2010 Жизни вроде бы нашлись - тип float. Когда полностью здоровы Жизнь = 1.0. При ранениях жизнь уменьшается до нуля... С бессмертием есть косяк. Если провалиться в какую-нибудь нору, а иногда и в перестрелках может глюкнуть (в перестрелках редко), игра вместо того чтобы предложить загрузить последний сэйв зависает (не вылетает, а виснет, хотя разница невелика). Очень неприятный глюк. Что тут можно поделать ума не приложу... вот такой у меня скрипт на бессмертие[sp=Бессмертие][ENABLE] aobscan(_faddress,f3xxxxxxxxxxxxxx0fxxxxxxxxxxxx76xx8bxxxxxxxxxx85xx74xx8bxxe8xxxx) alloc(_newmem,2048) label(_returnhere) label(_originalcode)_newmem: cmp [eax+000001e4],0 jna _originalcode //от этих двух строк толку мало mov [eax+000001e4],(float)1_originalcode: movss xmm0,[eax+000001e4] jmp _returnhere_faddress: // 007387BC = AgPmEventLoggingEnabled+1683FC jmp _newmem nop nop nop_returnhere:[DISABLE] aobscan(_faddress,9090900fxxxxxxxxxxxx76xx8bxxxxxxxxxx85xx74xx8bxxe8xxxx)_faddress-5: movss xmm0,[eax+000001e4] dealloc(_newmem)//Alt: db F3 0F 10 80 E4 01 00 00[/sp]Когда пытаюсь сделать патронов в обойме больше, чем их может быть, игра снова виснет... (ещё надо убедиться что косяк в этом). Выяснил, что максимальное число патронов в обойме лежит в структуре оружия по смещению 544h (сами патроны находятся по смещению 4ECh). Теперь для каждого оружия прописывается максимально допустимое значение патронов в обойме - 1 (минус один из-за инструкции вычитания патронов). Для дробовика максимальное значение 2 (двухстволка) - менять бестолку самое хреновое, что если завесить патроны другого оружия, с активированным читом дробовик хрен перезарядишь((Также без проблем завесил перегрев автомата... пока всё. Деньги не пробовал пока, да с ними проблем быть не должно) Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 20 марта, 2010 Поделиться Опубликовано 20 марта, 2010 Деньги там двухбайтовое значение, больше чем 23456 не сделаешь ((( Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 20 марта, 2010 Автор Поделиться Опубликовано 20 марта, 2010 Нужна помощь. Написал скрипт с отключением бессмертия при падении в яму, но он оказался привязан к статическому адресу(( причём в этом адресе тупо ноль вбит. Жизни сравниваются с нулём. Если больше, получаем восстановление здоровья, если нет - дохнем. Есть риск погибнуть в бою. Но тут похоже уже никак не отфильтруешь падение в яму с убийством от хедшота какого Собственно вот скрипт - как его отвзять бы от статики?[sp=Бессмертие 2][ENABLE] aobscan(_faddress,f3xxxxxxxxxxxxxx0fxxxxxxxxxxxx76xx8bxxxxxxxxxx85xx74xx8bxxe8xxxx) alloc(_newmem,2048) registersymbol(_dead) // как только я инициализирую _dead - игра виснет, даже если я не использую переменную в своей инъекции! label(_dead) label(_returnhere) label(_originalcode)_newmem: movss xmm0,[eax+000001e4] comiss xmm0,[_dead] //с этой строкой игра виснет. И без неё тоже (при попытке объявить переменную _dead)// comiss xmm0,[agpmeventloggingenabled+3fcff4] //сравнение с нулём - с этой строкой игра не виснет jna _returnhere //жизни ушли в ноль - отключаем чит mov [eax+000001e4],(float)1 //если остались живы - восстанавливаем 100% здоровья_originalcode: movss xmm0,[eax+000001e4] jmp _returnhere_faddress: // 007387BC = AgPmEventLoggingEnabled+1683FC jmp _newmem nop nop nop _dead: dd 0_returnhere:[DISABLE] aobscan(_faddress,9090900fxxxxxxxxxxxx76xx8bxxxxxxxxxx85xx74xx8bxxe8xxxx)_faddress-5: movss xmm0,[eax+000001e4] dealloc(_newmem) unregistersymbol(_dead)//Alt: db F3 0F 10 80 E4 01 00 00[/sp] Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 20 марта, 2010 Поделиться Опубликовано 20 марта, 2010 да я думаю не стоит заморачиваться, на читхеппенсе так же бессмертие работает... Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 20 марта, 2010 Автор Поделиться Опубликовано 20 марта, 2010 Akama сказал: да я думаю не стоит заморачиваться, на читхеппенсе так же бессмертие работает...Всмысли тоже с косяками? Ну так если читхаппенс не сделал, это не значит что не стоит пытаться Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 20 марта, 2010 Автор Поделиться Опубликовано 20 марта, 2010 Победил я дробовик! Пытался я искать 1 когда патрон в стволе есть и 0 когда нету. Ничего не нашлось. А надо было наоборот искать 0 когда патрон есть, и 1 когда нету Находим этот 1-байтовый флаг для обоих стволов дробовика, добавляем в скрипт патронов и получаем завешанный дробовик остался неприятный глюк, который я попробую как-то решить завтра - если в момент активакции чита бесконечных патронов в одном из стволов не окажется патрона, завешается только один ствол(( и даже если отключить чит, дробовик так и не перезарядится, пока в таблице не пропишешь 0 патронов. Но это мелочи. Один ствол в любом случае завесится Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 21 марта, 2010 Поделиться Опубликовано 21 марта, 2010 [sp=Проверка не окончательная][ENABLE]aobscan(_faddress,f3xxxxxxxxxxxxxx0fxxxxxxxxxxxx76xx8bxxxxxxxxxx85xx74xx8bxxe8xxxx)alloc(_newmem,2048)registersymbol(_dead) // как только я инициализирую _dead - игра виснет, даже если я не использую переменную в своей инъекции!label(_dead) label(_returnhere)label(_originalcode)_newmem:movss xmm0,[eax+000001e4] comiss xmm0,[_dead] //с этой строкой игра виснет. И без неё тоже (при попытке объявить переменную _dead)// comiss xmm0,[agpmeventloggingenabled+3fcff4] //сравнение с нулём - с этой строкой игра не виснетjna _returnhere //жизни ушли в ноль - отключаем читmov [eax+000001e4],(float)1 //если остались живы - восстанавливаем 100% здоровья_originalcode:movss xmm0,[eax+000001e4]jmp _returnhere_faddress: // 007387BC = AgPmEventLoggingEnabled+1683FCjmp _newmemnopnopnop_dead:dd 0_returnhere: (! ошибка)[DISABLE]aobscan(_faddress,9090900fxxxxxxxxxxxx76xx8bxxxxxxxxxx85xx74xx8bxxe8xxxx)_faddress-5:movss xmm0,[eax+000001e4]dealloc(_newmem)unregistersymbol(_dead)//Alt: db F3 0F 10 80 E4 01 00 00[/sp]Также проследи за флагами возможно надо сохранять флаги pushf до сравнения и восстанавливать после popfПосмотри в отладке в OllyDbg как выполняется код.Загляни в справочник по инструкциям (привел некоторые)[sp=Таблица. Инструкции расширения SSE]Инструкция ОписаниеПересылка данных с участием регистров ХММMOVAPS Пересылка 128-битных данных между памятью и регистрами ХММ илимежду регистрами ХММ. Данные в памяти должны быть выровнены по границе 16-байтного параграфаMOVUPS Пересылка 128-битных данных между памятью и регистрами ХММ или между регистрами ХММ (без требования выравнивания)MOVHPS Пересылка 64-битных данных между памятью и старшей половиной регистров ХММ или между регистрами ХММ (младшая половина ХММ не изменяется)MOVHLPS Пересылка старшей половины источника в младшую половину назначения (старшая половина регистра назначения не меняется)MOVLHPS Пересылка младшей половины источника в старшую половину назначения (младшая половина регистра назначения не меняется)MOVLPS Пересылка 64-битных данных между памятью и младшей половиной регистров ХММ или между регистрами ХММ (старшая половина ХММ не изменяется)MOVMSKPS Сборка старших бит упакованных операндов из регистра ХММ в регистр общего назначения (биты 31, 63, 95 и 127 регистра ХММ попадают в биты О, 1, 2 и 3 регистра-приемника, остальные биты приемника будут нулевыми)MOVSS Пересылка скалярного операнда (младшие 32 бита) между памятью и регистрами ХММ или между регистрами ХММАрифметические инструкции над числами в FP-формате в регистрах ХММADDPS Векторное сложениеSUBPS Векторное вычитаниеADDSS Скалярное сложениеSUBSS Скалярное вычитаниеMULPS Векторное умножениеMULSS Скалярное умножениеDIVPS Векторное делениеDIVSS Скалярное делениеSQRTPS Векторное извлечение квадратного корняSQRTSS Скалярное извлечение квадратного корняMAXPS Векторное нахождение максимумаMAXSS Скалярное нахождение максимумаMINPS Векторное нахождение минимумаMINSS Скалярное нахождение минимумаСравнениеCMPPS Векторное сравнение (задается полный набор 12 условий, как в инструкциях условных переходов). В том элементе операнда назначения, для которого условие сравнения выполняется, устанавливаются все единицы (32 бита), где не выполняется - все нулиCMPSS Скалярное сравнение (12 условий), аналогично предыдущему, но только для младших 32 битCOMISS Скалярное сравнение с установкой бит ZF, PF и CF регистра EFLAGS (биты 0F, SF и AF обнуляются)UCOMISS Скалярное сравнение, но без генерации исключения в случае NaN (при этом ZF=PF=CF=1)ситуация несравнимости может возникнуть, если один из операндов является NAN или бесконечностьюПример работы сравнения, но уже не блоком SSE, а FPU...fcomp Number;сравнили ST(0) с Number,;установили нужные флагиfstsw [status];выгрузили слово состояния сопра;в заранее объявленную двухбайтную переменную Statusfwait;выполняем синхронизацию;пусть сопр отдохнёт;дальше работает CPUmov ax, [status];грузим слово состояния в регистр ax;при этом старший байт слова состояния окажется в ahsahf;загружаем ah в младший байт регистра eflags...[/sp]Терпение и попытка за попыткой и всё получится... Я лично подсказать не могу, потому что чувствую, что нагорожу ошибок.Насчёт дробовика, думаю справишься скоро. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 21 марта, 2010 Поделиться Опубликовано 21 марта, 2010 Кстати, на счёт бессмертия и прочей ериси:Человек с ником Recifense (это тот самый который длиннючие скрипты делает) все эти проблемы по другому решает:Ищет скажем не то, сколько денег сейчас у гг, а сколько тратиццо в данный момент, то есть ставит при покупке значение 0.С бессмертием тоже самое, ставит 0 вместо урона.Реально найти как то эти значения? Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 21 марта, 2010 Поделиться Опубликовано 21 марта, 2010 насчет бесконечных патронов у дробовиков. это с обрезом все легко и просто.[cod][ENABLE] aobscan(_faddress,83xxxxxxxxxxxx85xx74xx83xxxx83xxxxf0xxxxxxc7xxxxxxxxxxxxxx8bxxxx) aobscan(_faddress2,c6xxxx8bxx8bxxxx8bxxffxxxxxxxxc2xxxx8bxx8bxxxxxxxxxx8bxxffxxxxxx)//патроны в обрезе_faddress2: // 00743C16 = AgPmEventLoggingEnabled+173856 mov byte ptr [ebx],00//патроны во всех оружиях_faddress: // 0073E3F3 = AgPmEventLoggingEnabled+16E033 nop nop nop nop nop nop nop[DISABLE] aobscan(_faddress,909085xx74xx83xxxx83xxxxf0xxxxxxc7xxxxxxxxxxxxxx8bxxxx) aobscan(_faddress2,8bxxxx8bxxffxxxxxxxxc2xxxx8bxx8bxxxxxxxxxx8bxxffxxxxxx)_faddress-5: add dword ptr [edi+000004ec],ff_faddress2-5: mov byte ptr [ebx],01[/cod]А вот с дробовиком с 6 патронами - вот там засада.Лучшее, что пока удалось сделать, так это избавиться от нерабочей перезарядки после того как все патроны отстреляли. Теперь просто звук "чик" при попытке выстрелить ;P. Для пополнения патронов в нем нужно переключить на другое оружие и потом снова на дробовик.. но это не вариант так делать постоянно.[cod][ENABLE] aobscan(_faddress3,c6xxxxxxxxxxxxf6xxxxxx74xx8bxx8bxxxxxxxxxx8bxxffxxc6xxxxxxb0xxxx)//нет раздражающей перезарядки, когда закончились патроны в 6 патронном дробовике _faddress3: // 007223AC = AgPmEventLoggingEnabled+151FEC mov byte ptr [edi+000001c8],00[DISABLE] aobscan(_faddress3,9090f6xxxxxx74xx8bxx8bxxxxxxxxxx8bxxffxxc6xxxxxxb0xxxx) _faddress3-5: mov byte ptr [edi+000001c8],01[/cod]P.S. игры, которые прохожу, не ломаю. Относительно недавно ее прошел и только сегодня начал ковырять.В игре предусмотрены читы, если посмотреть в "user.cfg" папке с игрой, то можно увидетьbind console kGRAVEg_global_god offg_god offg_unlimitedammo offНо конфиг игра берет из папки "C:UsersxxxAppDataLocal4A Games" вот только консоль запустить пока не получилось. Если бы удастся запустить, то можно многое натворить Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 21 марта, 2010 Автор Поделиться Опубликовано 21 марта, 2010 Вот такой пока тренер получился[sp=скрин тренера][/sp]Надо ещё все виды оружия завесить, включая гранаты. Потом может выложу.PS встроенное бессмертие интересно работает... жизни отнимаются, а смерть не наступает. При падении в яму тоже живой остаюсь, но из ямы уже не выбраться (на этот случай надо супер прыжок сделать... попробую). Можно в тренер это бессмертие воткнуть. Но как его найти? Из игры то чит не отключишь(А чит на патроны гранаты тоже не вешает(( Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 Да и картинку для тренера всё же лучше свою сделать, читхеппенская какая-то галимая... Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 22 марта, 2010 Автор Поделиться Опубликовано 22 марта, 2010 Ну да, дизайн надо будет придумать У 5-ствольного дробовика (6-стволку пока не нашёл) немного хитрее сделано. Флаг принимает значения в зависимости от комбинации патронов в нём. Когда дробовик полон всеми 5 патронами флаг этот = 63, а потом с каждым выстрелом это число уменьшается в 2 раза, т.е. 63, 31, 15, 7, 3, 1, 0 (получается тут даже не байты нужно искать, а биты) итого 5 выстрелов, 0 блокирует выстрел. Можно завесить этот флаг на единице, и одна пуля всегда будет оставаться в патроннике, без всякой перезарядки. Завесил противогазы (1 противогаз=60 секундам; получается 5 противогазов = 300 (float)), хотя с 0 противогазом чит не срабатывает. В чужих тренерах тоже такой нюанс...гранаты пока не получилось завесить(PS спасибо за скрипт патронов, мой скрипт слетел при покупке нового оружия... Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 иногда 55 иногда 63 - это из-за того, что иногда в данном дробовике максимальное число патронов в обоиме "5", а иногда "6". так что мы говорим об одном и том же дробовике. Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 Бессмертие я сделал так.[ENABLE]//на основе этого скрипта можно и One Hit Kill сделать, только нужно сначало найти указатели на друганов, типа хантера, Бурбона и т.д., а то им хана. aobscan(_faddress,d9xxxxxxxxxx85xx74xxf3xxxxxxxxxxxxxx0fxxxxxxxxxxxx77xx8bxx8bxxxx) alloc(_newmem,2048) label(_returnhere) label(_originalcode) label(_player)_newmem: cmp esi,[00a2a7c0] je _player_originalcode: fstp dword ptr [esi+000001e4] jmp _returnhere_player: nop nop nop nop nop nop jmp _returnhere _faddress: // 0074FCB5 = AgPmEventLoggingEnabled+17F8F5 jmp _newmem nop_returnhere:[DISABLE] aobscan(_faddress,9085xx74xxf3xxxxxxxxxxxxxx0fxxxxxxxxxxxx77xx8bxx8bxxxx)Игра не виснет при падении в яму, но и не помираешь, и остаешься вечным ее пленником, т.к. выбраться никак нельзя =/Данный косяк из-за того, что падение в яму не запускает скрипт смерти (вообще тут скрипт не используется), а тупо наносится урон при падении.Есть одна задумка по решению этой проблемы, только фиг знает, получится ли.а с 5/6 патронным дробовиком я сделал так[ENABLE] aobscan(_faddress3,d0xxxxxxxxxxxxc2xxxx8bxxxxxxxxxx8bxxxx8dxxxxxxxxxxxxxxxxxxffxxxx) alloc(_newmem,2048) label(_returnhere)_newmem: mov byte ptr [esi+00000556],1 jmp _returnhere_faddress3: // 007241AA = AgPmEventLoggingEnabled+153DEA jmp _newmem nop_returnhere:[DISABLE] aobscan(_faddress3,90xxc2xxxx8bxxxxxxxxxx8bxxxx8dxxxxxxxxxxxxxxxxxxffxxxx)_faddress3-5: shr byte ptr [esi+00000556],1 dealloc(_newmem)updс моим скриптом бессмертия можно умереть от атмосферы (т.е. без противогаза если) =/ Завтра по другому сделаю тогда.upd2смерть от отравления не зависит от кол-ва жизней, нужно искать др. значение. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 А вы попробуйте сделать так называемый "float - режим" или полёта героя, чтобы можно было подняться из ямы по горячим клавишам. Для этого надо искать координаты перемещения, ставить бряки и т.п.Я тоже игру скачал Попробую сделать этот режим. Но я не могу сделать оконный режим (пока не получилось ) Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 C:UsersxxxAppDataLocal4A Gamesuser.cfg (как в XP этот путь пишется не помню)"r_fullscreen ON" вместо "r_fullscreen OFF" поставь.P.S. проще сделать опцию "KillME", чем заморачиваться с super-jmp или всегда можно отключить бессмертие и подорваться на динамите. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 22 марта, 2010 Автор Поделиться Опубликовано 22 марта, 2010 SERGANT сказал: P.S. проще сделать опцию "KillME", чем заморачиваться с super-jmp или всегда можно отключить бессмертие и подорваться на динамите.Нафига такие сложности? Esc же работает. Грузим последний чекпоинт и переигрываем) И суицид не нужен... а вот суперджамп или флаймод можно сделать..PS А есть у кого опыт в чите прохождения сквозь стены? Я даже не представляю как такой чит можно сделать, если он изначально в игру не встроен... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 Конечно есть опыт. Я делал на старой игре Академии Джедаев. Надо найти адрес Z координаты, пока я всё её найти не могу. Предположительно этот адрес должен быть в структуре игрока.Затем самый простой способ, это в часто обращаемую инструкцию вписывать изменяющийся пользовательский параметр высоты.А супер прыжок я не делал. Хотя интересно было бы. Ведь тут нужно найти адрес массы героя из его структуры и изменить его. А на него можно выйти через бряк на запись в координату Z. Изменяем массу и получаем прыжок. Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 22 марта, 2010 Автор Поделиться Опубликовано 22 марта, 2010 Что-то я не понял как координата Z поможет проходить сквозь стены?.. Я сейчас в Метро поставил высоту 10 и оказался за пределами карты)) в Метро XYZ имеют тип double. Я правда искал float и нашёл, а инструкции всплыли movq, значит должно быть double Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 По идеи если установишь координаты дальше стены, то можешь проходить сквозь. Узнав координату Z, ты выйдешь на все остальные: X, Y. И возможно ещё координаты вектора прицела. По ним некоторые умники делают аимботы с раздачей хедшотов в мультиплерных играх.Там не double, а там 4 float значения, которые можно уместить в 128-ми разрядный регистр XMM Иными словами 4 раза по 32 разряда (по 4 байта)Должен сказать, что эта игра на мой взгляд гораздо лучше оптимизирована чем большинство других ранее 2009 года. В этой игре очень много инструкций из набора SSE. Уже хочешь не хочешь, а надо учить все тонкости работы со скалярными и векторными инструкциями типа movq [esi+30],xmm0Пока всё на рабочую Z выйти не могу - экран дёргается, а вместо этого герой должен падать.От структуры героя по смещению +A0 находится какое-то значение которое связано с Z Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 марта, 2010 Поделиться Опубликовано 22 марта, 2010 У меня получилось установка по координатам Новый бесценный опыт - я направил себя в одно место и некоторых людей случайно По какому-то критерию не все направились в одно место.Получается что я могу переставлять не только себя но и других игроков. Но скрипты пока не доработаны.Создаю структуру координат[ENABLE] alloc(_newmem,2048) label(_coord) registersymbol(_coord)_newmem: _coord: dd (float)48.45 dd (float)2.96 dd (float)-3.54 dd (float)1 // чё это за данные я без понятия[DISABLE] dealloc(_newmem) unregistersymbol(coord)//Alt: db 0F 28 44 24 10Скрипт без фильтра, который переставляет всех (или почти всех) в указанные координаты. Скоро я его изменю.[ENABLE] aobscan(_faddress,66xxxxxxxx8bxxxxxxxxxx89xxxx80xxxxxxxxxxxx74xxd9xxxxxxxxxxxxd9xx) alloc(_newmem,2048) label(_returnhere) label(_originalcode)_newmem: movaps xmm0,[_coord]_originalcode: db 66 0F D6 46 30 //"movq [esi+30],xmm0" - не компилировалось, поэтому пришлось писать байтами jmp _returnhere_faddress: // 00753ECF = metro2033.exe+353ECF jmp _newmem_returnhere:[DISABLE] aobscan(_faddress,8bxxxxxxxxxx89xxxx80xxxxxxxxxxxx74xxd9xxxxxxxxxxxxd9xx)_faddress-5: db 66 0F D6 46 30 //movq [esi+30],xmm0 dealloc(_newmem)//Alt: db 66 0F D6 46 30 Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 23 марта, 2010 Автор Поделиться Опубликовано 23 марта, 2010 Посмотри вот эту инструкцию для координаты Х aobscan(_faddress,f3xxxxxxxxxxxxxxf3xxxxxxxxxxxxxxxx8bxxxxxx8bxxxxxxd9xxxxxxd9xxxx) или metro2033.exe+71CF2 (movq xmm0,[ecx+00000118]) Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 23 марта, 2010 Поделиться Опубликовано 23 марта, 2010 скажу честно, не умею делать опцию телепорта.. ммм... точнее никогда не пытался ее сделать, хоть и примерно представляю как. Все из-за того, что.. а нафига ? Какой в ней смысл ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения