Alexandro Опубликовано 10 января, 2015 Автор Поделиться Опубликовано 10 января, 2015 Я думаю, судя по описанному, проблема похожа на ту, которая была у меня при написании скриптов "Бесконечные патроны и стрельба без перезарядки". я её решил. Посмотрите здесь, здесь, здесь, здесь и окончательный вариант скрипта, при котором уже вылетов не было ТУТА. И вылетает именно после четырех выстрелов из дробовика? То есть, с другим оружием проблем нет?Вообще, завтра, так и быть, постараюсь поставить на скачку данную игру, гляну, что там и как. Собственно, если можешь скинуть сохранения, чтобы я не мучился, собирая нужное оружие - то кидай в эту тему, или мне в личку. Надеюсь только, что репак потянет сохранения с лицензии) да я читал данные статьи, просто меня не тк понимают, я не так поясняю. проблема во мне.я видимо не умею отсеивать через стек начальный адрес , потому что через стек найти не удалось, зато где то вчера вычитал и узнал что можно узнать по "предположительному начальному адресу" и о да это он, потом я всю эту ночь пытался понять как правильно написать фильтр по типу свой чужой. тема такая почти все оружие стандартно кроме 31) револьвер после заморозки или нуп адреса +448 при переключении на револьвер игра вылетает2) хельсинг, типа пневматики которая стреляет металлическими стрелами, при переключении на него все норм, но как только с него делается выстрел игра вылетает3) обрез, нее важно 2 или 4 там ствола, при но_релоаде после 2/4 выстрелов игра продолжается но вот само оружие не перезаряжается и на другое оружие не переключается, спасает только ручное изменение кол-ва патронов через се. Это все говорит о том что в начальном процессе установка должна действовать только на выбранное оружие (у выбранного оружия вместо 0 появляется значение) и не распространять его на другие что бы не нарушать структуру кода. т.о. проблема в моих не знаниях и не умения, так что я пока покурю на эту тему в одиночку что бы не играть в испорченный телефон по поводу не стим, а репака... не мне рассказывать что код может фатально отличаться Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 января, 2015 Поделиться Опубликовано 10 января, 2015 Почитай ещё раз внимательно, дело в том что патроны - это не просто патроны в обойме, а и суммарные и, как я их назвал, незаряженные.Судя по Вашему коду Вы работали только с инструкцией отвечающий за адрес к-ва патронов в обойме, но не учли изменения в общем кол-ве патронов, а за этот адрес уже отвечает другая инструкция. Но не буду здесь повторяться, ещё раз прочти внимательно, то что мною написано. Постарался довольно подробно там описать. второй интересный момент что в игре если подобрать оружие вместимостью 30 патронов то оно дает(показывает) оружие с 30 патронами (но по поиску через СЕ бьется как 29), как только я жму reload то на экране отображается 31 патрон в обоиме, при этом по поиску он так же пробивается как 30, защита? может в этом дело?Вот как раз это и приводит к вылету. Если не использовать инструкцию работающую с общим кол-вом патронов. У Alexander D скрипт работает именно с общим кол-вом патронов, но без патронов в обойме. Alexander D пишет очень много трейнеров, с большим кол-вом опций и поэтому сильно не вылизывает скрипты, если нету в этом необходимости. Т.е. скрипт Alexander D это примерно мой первый скрипт, только с небольшой добавкой Не в обойму, а в общее к-во патронов.newMem5:mov[eax+04],#999 // сюда добавлено общее кол-во патронов//sub [eax+04],esi mov ebx,esi jmp returnHere5 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 12 января, 2015 Автор Поделиться Опубликовано 12 января, 2015 (изменено) взято по принципу свой\чужой все! Позаимствовал построение кода у Alexander D , внес построение фильтра по принципу свой чужой. Пока 3 уровня прошел без глюков, обновил таблицу изменен код фонарика и но_релоад, но-релоад чуть позже доработаю. Бессмертие (health) рабочий наконец то [ENABLE]aobscanmodule(Health_aob,metro.exe,F3 0F 10 81 08 03 00 00 F3) // should be uniquealloc(newmem,$1000,"metro.exe"+820D69)label(returnhere)label(Health)registersymbol(Health)newmem:cmp [rcx+2ec],#1 // проверяем наш ли это персонажjnb returnhere // перепрыгиваем если неверноpush [rcx+310] // копируем базовое значение жизниpop [rcx+308] // вытаскиваем уже готовое значение жизниmovss xmm0,[rcx+00000308] // записываемjmp returnhereHealth_aob:Health:jmp newmemdb 90 90 90returnhere:[DISABLE]Health:movss xmm0,[rcx+00000308]unregistersymbol(Health)dealloc(newmem) файл яндексфайл майл просьба залить на форум сюда по возможности. спасибо! Изменено 12 января, 2015 пользователем Alexandro 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 января, 2015 Поделиться Опубликовано 12 января, 2015 Бессмертие (health) рабочий наконец то Молодец! Так держать! От меня плюс. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 12 января, 2015 Поделиться Опубликовано 12 января, 2015 взято по принципу свой\чужой все! Позаимствовал построение кода у Alexander D , внес построение фильтра по принципу свой чужой. Пока 3 уровня прошел без глюков, обновил таблицу изменен код фонарика и но_релоад, но-релоад чуть позже доработаю. Бессмертие (health) рабочий наконец то [ENABLE]aobscanmodule(Health_aob,metro.exe,F3 0F 10 81 08 03 00 00 F3) // should be uniquealloc(newmem,$1000,"metro.exe"+820D69)label(returnhere)label(Health)registersymbol(Health)newmem:cmp [rcx+2ec],#1 // проверяем наш ли это персонажjnb returnhere // перепрыгиваем если неверноpush [rcx+310] // копируем базовое значение жизниpop [rcx+308] // вытаскиваем уже готовое значение жизниmovss xmm0,[rcx+00000308] // записываемjmp returnhereHealth_aob:Health:jmp newmemdb 90 90 90returnhere:[DISABLE]Health:movss xmm0,[rcx+00000308]unregistersymbol(Health)dealloc(newmem) файл яндексфайл майл просьба залить на форум сюда по возможности. спасибо! За работу плюс.Но убедительно прошу избегать "взаимных" плюсов. Поясняю - пост garik66 за номером 29 ничем примечательным для форума не является. Следовательно, плюс от Alexandro является плюсом за плюс, а не за стоящий пост, что не есть хорошо. И потому я вынужден garik66 в том посте поставить минус для балансировки. Если не хотите, чтобы снова отключил пользователям возможность плюсовать - воздержитесь от подобных "ответных" плюсов. Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 12 января, 2015 Автор Поделиться Опубликовано 12 января, 2015 (изменено) спасибо за плюсы смог сам переделать надеюсь правильно ...Но убедительно прошу избегать "взаимных" плюсов. услышал, его пост мною расценен как вспомогательный, потому как по его совету сейчас пытаюсь разобраться с функцией но_релоад. но общую суть уловил спасибо.очередной глупый вопрос: где тут ошибка ? вариант 1[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+2C0A1A)label(returnhere)label(exit)newmem: //this is allocated memory, you have read,write,execute accesscmp [rbx+498],#1 // фильтр на оружиеjnb returnhere // уходим если falsepush rcx // резервим rcxmov rcx,[rbx+00000450] // записываем максимальное кол-во патроновmov [rbx+448],rcx // заносим получившееся значение в обоимуpop rcx // удаляем rcxmov eax,[rbx+00000448]jmp returnhereexit:jmp returnhere"metro.exe"+2C0A1A:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheat"metro.exe"+2C0A1A:mov eax,[rbx+00000448]//Alt: db 8B 83 48 04 00 00dealloc(newmem) вариант 2//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+2C0A1A)label(returnhere)label(exit)newmem: //this is allocated memory, you have read,write,execute accesscmp [rbx+498],1 // фильтр на оружиеjnb returnhere // уходим если falsepush rcxx // резервим rcxmov rcx,[rbx+00000450] // записываем максимальное кол-во патроновmov [rbx+448],rcx // заносим получившееся значение в обоимуpop rcx // удаляем rcxmov eax,[rbx+00000448]jmp returnhereexit:jmp returnhere"metro.exe"+2C0A1A:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheat"metro.exe"+2C0A1A:mov eax,[rbx+00000448]//Alt: db 8B 83 48 04 00 00dealloc(newmem)[ENABLE] вариант 3[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+2C0A1A) label(returnhere)label(exit) newmem: //this is allocated memory, you have read,write,execute accesscmp [rbx+498],#1 // фильтр на оружиеjnb returnhere // уходим если falsepush [rbx+00000450] // берем значение из 450pop [rbx+00000448] // и заносим в 448mov eax,[rbx+00000448]jmp returnhere exit:jmp returnhere "metro.exe"+2C0A1A:jmp newmemnopreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheat"metro.exe"+2C0A1A:mov eax,[rbx+00000448]//Alt: db 8B 83 48 04 00 00dealloc(newmem) при анализе структур стало понятно что револьвер и дробовик единственный кто не обладает значением 1 в смещении 498 спрашиваю потому что при выше сделанном фильтре игра УРА не вылетает и О БЕДА максимальное значение патронов записанный в строке 450 не учитывается, у калаша например в обоиме всегда "1" патрон, у обреза однозарядного "0", а у револьвера 6 как и положено . При чем без перезарядки у всех кроме дробовика работает как положено(в смысле процесса а не того что мелькает на экране). что это? смещение кода целиком? Изменено 12 января, 2015 пользователем Alexandro Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 января, 2015 Поделиться Опубликовано 12 января, 2015 Вариант 3 самый правильный из 3, если фильтр нашёл верно, он по идее должен работать для всего вида оружия.Код чуть-чуть подправь:и ещё label и метку exit - можно убрать, они у тебя лишние.не ещё одна ошибка, лучше полностью код покажу:Перепиши как в последнем моём варианте. cmp byte ptr [rbx+498],1 // При использовании памяти (а не регистра) в коде лучше jne returnhere // всегда указывать его размер push [rbx+00000450] // и 1 - она во всех системах - еденица, поэтому ставить # необязательно pop [rbx+00000448] mov eax,[rbx+00000448]jmp returnhere [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+2C0A1A) label(returnhere)label(exit) // не удалить, а изменить название, если изменишь не забудь изменить везде, // где я проставил exitnewmem: //this is allocated memory, you have read,write,execute accesscmp byte ptr [rbx+498],1 jne exit // здесь должен быть прыжок на оригинальные инструкции с последующим выходом push [rbx+00000450] pop [rbx+00000448] exit: // метка оригинальных инструкций mov eax,[rbx+00000448]jmp returnhere //exit: // удалить обе//jmp returnhere // строчки "metro.exe"+2C0A1A:jmp newmemnopreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheat"metro.exe"+2C0A1A:mov eax,[rbx+00000448]//Alt: db 8B 83 48 04 00 00dealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 12 января, 2015 Автор Поделиться Опубликовано 12 января, 2015 (изменено) ВСЕ! по этому вопросу отбой фильтр в принципе верный, на револьвере хтябы не вылетает , но теперь он и не заряжается, все время перезаряжается, а при выборе хельсинга вылетает. будем искать другой путь, спасибо.Вариант 3 самый правильный из 3, если фильтр нашёл верно, он по идее должен работать для всего вида оружия.Код чуть-чуть подправь:лучше полностью код покажу:Перепиши как в последнем моём варианте.правильно я понял ? [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+2C0A1A)label(returnhere) newmem: //this is allocated memory, you have read,write,execute access cmp dword ptr [rbx+498],1jne returnhere // здесь должен быть прыжок на оригинальные инструкции с последующим выходомpush [rbx+00000450]pop [rbx+00000448]"metro.exe"+2C0A1A:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheat"metro.exe"+2C0A1A:mov eax,[rbx+00000448]//Alt: db 8B 83 48 04 00 00dealloc(newmem)[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+2C0A1A) label(returnhere)label(exit) // не удалить, а изменить название, если изменишь не забудь изменить везде, // где я проставил exitnewmem: //this is allocated memory, you have read,write,execute accesscmp byte ptr [rbx+498],1 jne exit // здесь должен быть прыжок на оригинальные инструкции с последующим выходом push [rbx+00000450] pop [rbx+00000448] exit: // метка оригинальных инструкций mov eax,[rbx+00000448]jmp returnhere //exit: // удалить обе//jmp returnhere // строчки "metro.exe"+2C0A1A:jmp newmemnopreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheat"metro.exe"+2C0A1A:mov eax,[rbx+00000448]//Alt: db 8B 83 48 04 00 00dealloc(newmem) Изменено 12 января, 2015 пользователем Alexandro Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 января, 2015 Поделиться Опубликовано 12 января, 2015 Не правильно. СекВот так.У тебя в структуре по смещению 498h значение было 4 байта или байт?если 4 байта, то cmp dword ptr [rbx+498],#1 если байт, то cmp byte ptr [rbx+498],1[ENABLE]alloc(newmem,256,"metro.exe"+2C0A1A) label(returnhere)label(Originalcod)newmem: cmp byte ptr [rbx+498],1 jne Originalcod push [rbx+00000450] pop [rbx+00000448] Originalcod: mov eax,[rbx+00000448]jmp returnhere "metro.exe"+2C0A1A:jmp newmemnopreturnhere: [DISABLE]"metro.exe"+2C0A1A:mov eax,[rbx+00000448]dealloc(newmem) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 13 января, 2015 Автор Поделиться Опубликовано 13 января, 2015 Не правильно. СекВот так.У тебя в структуре по смещению 498h значение было 4 байта или байт?если 4 байта, то cmp dword ptr [rbx+498],#1 если байт, то cmp byte ptr [rbx+498],1спасибо, попробую. там 4 байта... [ENABLE]alloc(newmem,256,"metro.exe"+2C0A1A) label(returnhere)label(Originalcod)newmem: cmp byte ptr [rbx+498],1 jne Originalcod push [rbx+00000450] pop [rbx+00000448] Originalcod: mov eax,[rbx+00000448]jmp returnhere "metro.exe"+2C0A1A:jmp newmemnopreturnhere: [DISABLE]"metro.exe"+2C0A1A:mov eax,[rbx+00000448]dealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 13 января, 2015 Автор Поделиться Опубликовано 13 января, 2015 (изменено) помогите осознать мы имеем инструкцию mov eax,[rbx+00000448], есть 3 оружия, автомат, хельсинг и револьвер, у них есть обоима, если их через поиск выцеплять и морозить отдельно то все как бы нормально, если делать скрипт на mov eax,[rbx+00000448] которая за них отвечает то происходит вылет, а если отдельно морозить через поиск с отсеиванием то нет, делать фильтр именно на этой инструкции или на инструкции выше? мне эта перезарядка всю плешь проела... Изменено 13 января, 2015 пользователем Alexandro Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 января, 2015 Поделиться Опубликовано 13 января, 2015 помогите осознать мы имеем инструкцию mov eax,[rbx+00000448], есть 3 оружия, автомат, хельсинг и револьвер, у них есть обоима, если их через поиск выцеплять и морозить отдельно то все как бы нормально, если делать скрипт на mov eax,[rbx+00000448] которая за них отвечает то происходит вылет, а если отдельно морозить через поиск с отсеиванием то нет, делать фильтр именно на этой инструкции или на инструкции выше? мне эта перезарядка всю плешь проела...Посмотри первое видео из этого сообщения внимательно (если понадобится несколько раз).А то переспрашивать тебя:а правильно ли ты нашёл инструкцию?правильно ли нашёл фильтр?отвечает ли твоя инструкция за все виды оружия?и т.д., как я понял - это запутывать тебя ещё больше.В видео, на которое я дал ссылку, как раз рассказывает про поиск патронов всех видов оружия, пример поиска фильтра и написание готового скрипта понятным языком. Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 13 января, 2015 Автор Поделиться Опубликовано 13 января, 2015 Посмотри первое видео из этого сообщения внимательно (если понадобится несколько раз).А то переспрашивать тебя:а правильно ли ты нашёл инструкцию?правильно ли нашёл фильтр?отвечает ли твоя инструкция за все виды оружия?и т.д., как я понял - это запутывать тебя ещё больше.В видео, на которое я дал ссылку, как раз рассказывает про поиск патронов всех видов оружия, пример поиска фильтра и написание готового скрипта понятным языком.не просто просмотрел а скачал обе части на hdd и просмотрел раз ё10 каждый. Но суть уловил посмотрю еще раз, может действительно не туда повернул.не ... так золотуха, вот такой адрес накопал в истоках процесса: [ENABLE]aobscanmodule(noreload_aob,metro.exe,B2 48 8B 06 48 8B CE) // should be uniquealloc(newmem,$1000,"metro.exe"+2C0E4E)label(returnhere)label(no_reload)registersymbol(no_reload)newmem:push rdimov rdi,[rsi+450]mov [rsi+448],rdimov rax,[rsi]mov rcx,rsipop rdijmp returnherenoreload_aob+01:no_reload:jmp newmemnopreturnhere:registersymbol(noreload_aob)[DISABLE]no_reload://"metro.exe"+2C0E4Emov rax,[rsi]mov rcx,rsiunregistersymbol(noreload_aob)dealloc(newmem)с ним работает no_reload но теперь однозарядный обрез подвисает после 2ух ( !) выстрелов, зато и с хельсингом работает и не вылетает, порекомендуйте упростить скрипт. спасибо. вышел на него так, на хельсинг на запись идет 2 адреса:1) 13FC10008 - 48 89 BE 48040000 - mov [rsi+00000448],rdi взял за основу его вероятное место значения 1FD50BA0 * 2) 13FEE0B2F - 44 89 B6 48040000 - mov [rsi+00000448],r14d * в нем нашел все 3 оружия и больше никаких инструкций, пробил его по "найти какие адреса..."в нем взял за основу mov rax,[rsi] (вот с этим сижу и думаю а ту ли я инструкцию взял ?) есть какие мысли по поводу выбора инструкции и грамотности написания скрипта, принимается любая критика... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 января, 2015 Поделиться Опубликовано 13 января, 2015 Alexandro мне кажется, что основная проблема в том, что ты пытаешься работать только с одной частью. А нужно с обоими: и с количеством патронов в обойме и с общим количеством патронов.упростить:выбора инструкции - ошибки не вижуnewmem:push [rsi+450]pop [rsi+448]mov rax,[rsi]mov rcx,rsijmp returnhere 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 13 января, 2015 Автор Поделиться Опубликовано 13 января, 2015 (изменено) Alexandro мне кажется, что основная проблема в том, что ты пытаешься работать только с одной частью. А нужно с обоими: и с количеством патронов в обойме и с общим количеством патронов.упростить:выбора инструкции - ошибки не вижуда извини по этому моменту не отписал, кучу способов перепробовал что бы найти общее кол-во патронов обоимы и запаса, и с учетом+1 и без него и либо мне опыта и знания ассемблера не хватает или такой параметр не задействован за подсказку и поправку спс + з.ы. уже 14 запоротый сейв ушел ))newmem:push [rsi+450]pop [rsi+448]mov rax,[rsi]mov rcx,rsijmp returnhere Изменено 13 января, 2015 пользователем Alexandro Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 января, 2015 Поделиться Опубликовано 13 января, 2015 но теперь однозарядный обрез подвисает после 2ух ( !) выстрелов - вариант тогда либо как я и говорил работать с обоими частями (патроны в обойме + патроны общие), либо делай плюс 1 патрон приблизительно так: Но не уверен, что сработает. да извини по этому моменту не отписал, кучу способов перепробовал что бы найти общее кол-во патронов обоимы и запаса, и с учетом+1 и без него и либо мне опыта и знания ассемблера не хватает или такой параметр не задействован за подсказку и поправку спс + з.ы. уже 14 запоротый сейв ушел ))По поиску общего - в игре есть возможность не выстреливать, а выбрасывать патроны - по одному, по несколько? push [rsi+450]pop [rsi+448]add dword ptr [rsi+448],1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 13 января, 2015 Автор Поделиться Опубликовано 13 января, 2015 но теперь однозарядный обрез подвисает после 2ух ( !) выстрелов - вариант тогда либо как я и говорил работать с обоими частями (патроны в обойме + патроны общие), либо делай плюс 1 патрон приблизительно такдо слез теперь обрез работает а хельсингом вылетает это если c add, а если без как ты указал ранее то работает хельсинг и все остальное оружие кроме обреза Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 января, 2015 Поделиться Опубликовано 13 января, 2015 По поводу упростить сразу не заметил, есть лишняя метка: Попробуй такдо слез теперь обрез работает а хельсингом вылетает это если c add, а если без как ты указал ранее то работает хельсинг и все остальное оружие кроме обрезаНаверное всё-таки придётся искать общее к-во патронов.Поэтому повторю вопрос, наверное ты не заметил:По поиску общего - в игре есть возможность не выстреливать, а выбрасывать патроны - по одному, по несколько? а по-поводу add - я писал, что не уверен, что сработает.[ENABLE]aobscan(noreload_aob, B2 48 8B 06 48 8B CE) alloc(newmem,64)label(returnhere)registersymbol(noreload_aob)newmem:push [rsi+450]pop [rsi+448]mov rax,[rsi]mov rcx,rsijmp returnherenoreload_aob:jmp newmemnopreturnhere:[DISABLE]noreload_aob://"metro.exe"+2C0E4Emov rax,[rsi]mov rcx,rsiunregistersymbol(noreload_aob)dealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 13 января, 2015 Автор Поделиться Опубликовано 13 января, 2015 (изменено) По поиску общего - в игре есть возможность не выстреливать, а выбрасывать патроны - по одному, по несколько? или выпил или еще чего , не понимаю вопроса, есть возможность подбирать, есть возможность выстреливать, и обмениваться на станциях патронамивсе, устал!пара свежих кодов, саму таблицу пока не обновляю ввиду ее не готовности.мины [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+1EA308)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute accessmov [rcx+0000031C],#5originalcode:mov eax,[rcx+0000031C]exit:jmp returnhere"metro.exe"+1EA308:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"metro.exe"+1EA308:mov eax,[rcx+0000031C]//Alt: db 8B 81 1C 03 00 00 аптечки [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+346C60)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute accessmov [rcx+00000478],0000001Foriginalcode:mov edx,[rcx+00000478]exit:jmp returnhere"metro.exe"+346C60:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"metro.exe"+346C60:mov edx,[rcx+00000478]//Alt: db 8B 91 78 04 00 00 и второй вариант но_релоад (на револьвере игра вылетает!)aobscanmodule(noreload_aob,metro.exe,B2 48 8B 06 48 8B CE) // should be uniquealloc(newmem,$1000,"metro.exe"+2C0E4E)label(returnhere)label(no_reload)registersymbol(no_reload)newmem:push [rsi+450]pop [rsi+448]mov rax,[rsi]mov rcx,rsijmp returnherenoreload_aob+01:no_reload:jmp newmemnopreturnhere:registersymbol(noreload_aob)[DISABLE]no_reload://"metro.exe"+2C0E4Emov rax,[rsi]mov rcx,rsiunregistersymbol(noreload_aob)dealloc(newmem)[ENABLE] пока забросил это дело нужен моральный отдых )) Изменено 13 января, 2015 пользователем Alexandro 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alexandro Опубликовано 14 января, 2015 Автор Поделиться Опубликовано 14 января, 2015 (изменено) можно ли объеденить 3 инструкции в одну если относятся к разным адресам exe?эту (ножи бомбы) : [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+1EA318)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute accessmov [rcx+000006EC],00000005originalcode:mov eax,[rcx+000006EC]exit:jmp returnhere"metro.exe"+1EA318:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"metro.exe"+1EA318:mov eax,[rcx+000006EC]//Alt: db 8B 81 EC 06 00 00и эту (мины): [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+1EA308)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute accessmov [rcx+0000031C],#5originalcode:mov eax,[rcx+0000031C]exit:jmp returnhere"metro.exe"+1EA308:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"metro.exe"+1EA308:mov eax,[rcx+0000031C]//Alt: db 8B 81 1C 03 00 00и вот эту (аптечки): [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+346C60)label(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute accessmov [rcx+00000478],0000001Foriginalcode:mov edx,[rcx+00000478]exit:jmp returnhere"metro.exe"+346C60:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"metro.exe"+346C60:mov edx,[rcx+00000478]//Alt: db 8B 91 78 04 00 00 Изменено 14 января, 2015 пользователем Alexandro Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 14 января, 2015 Поделиться Опубликовано 14 января, 2015 можно ли объеденить 3 инструкции в одну если относятся к разным адресам exe? Да можно - примеров много на сайте. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения