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

MasterGH

Ветераны
  • Постов

    2 999
  • Зарегистрирован

  • Победитель дней

    129

Весь контент MasterGH

  1. У тебя же одна игра limbo, других нет. Именно про неё я и написал. Хотя для любой другой может тоже подойти //Нет, я не старший разраб )
  2. В этих Луа скриптах я не нашел функции, которая бы работала постоянно во время игры. По идеи можно поставить год мод союзникам ну и главному персонажу. "По покупке" в терминале есть скрипты, там что-то поменять. Подглядеть текстовые переменные id персонажа и id его союзников в памяти игры. Посмотреть функции, которые ищут этот id, читают значение по этому id и пишут значение по этому id. Можно было бы попробовать многое чего намутить. К сожалению, некогда этим заниматься.
  3. Для интересующихся. Любая машина в большинстве гонок это физическое тело. Скорость физического тела рассчитывается по трем локальным осям X,Y,Z физического тела. Ниже скрипт из стандартной машинки из стандартного набора игрового движка Unity3D (включает движок PhysX) // Ограничение по скорости с рассчетом скоростиprivate void CapSpeed(){ float speed = m_Rigidbody.velocity.magnitude; // текущая скорость switch (m_SpeedType) { case SpeedType.MPH: // мили в час speed *= 2.23693629f; if (speed > m_Topspeed) // если текущая скорость больше максимальной m_Rigidbody.velocity = (m_Topspeed/2.23693629f) * m_Rigidbody.velocity.normalized; // ограничиваем текущую скорость case SpeedType.KPH: // километры в час speed *= 3.6f; if (speed > m_Topspeed) // если текущая скорость больше максимальной m_Rigidbody.velocity = (m_Topspeed/3.6f) * m_Rigidbody.velocity.normalized;// ограничиваем текущую скорость break; }}
  4. Попробуй искать "здоровье" одной части брони по её цвету. Например, шлема. Общее здоровье должно складываться из всех частей брони. Но я точно не знаю, надо пробовать. У меня дежавю по этой игре, вроде я ломал именно так, но эта ли игра была, не помню точно. Используй терминал для лечения той же части брони. Подставляйся под удар. Так и ищи увеличилось, уменьшилось, не изменилось. Тип попробуй float, byte.
  5. Я бы так попробовал Искать адрес во время проигрыша, когда персонаж ничего не может делать. Любой адрес с любыми данными. Ставить бряк на запись. Идти в игру и делать геймовер. Прерваться. По стеку выйти на верхний call. Сделать с него трейслог. По нему найти все условные прыжки (CTRL+F, je или jne) и пытаться менять их на без условные, чтобы они "перепрыгивали код проигрыша" Попробую вечером, сейчас работаю.
  6. Черным цвет - названия игр, взлом которых не завершен Зеленный цвет - завершенный взлом, если он будет Bet on Soldier - Blood Sport (1.0 или 1.2) Скрипт на гранаты с установкой их максимального количества. Ко всем инструкциям обращаются множество адресов и поставить фильтр не получилось. Рабочий и экранный адрес гранат это 1 байт. 1 - есть граната, 0 - нет гранаты. Тема HotlineMiami 2.1.0.6 Очень интересный случай. Скрипт на бесконечное здоровье нашего героя. Я и несколько других человек, что только не пробовали, так и не получилось сделать хороший и стабильный чит. Тема Fallout 3 Создание вещей в Инвентаре. Пытался искать функции, который создают вещи в Инвентаре и использовать их подменяя ID вещи. Не получилось. Тема Герои 6 Проблема с телепортом и дорожкой. Героя мы можем телепортировать, но вот дорожка героя работает не правильно. Тема
  7. Надо искать функцию, которая читает и пишет физическое ускорение физическому телу. Актуально для физических движков типа PhysX В Unity3d это свойство velocity rigibody.velocity Надо найти у машины "rigibody.velocity " или подобное ему и за физический кадр умножать его физический вектор скорости многократно на желаемую величину по дельте времени между физическими кадрами. Vector3 myAccel = new Vector3(2f,0f,2f); // двукратное увеличение физической скорости для X,Z, но не для Y. Где Y это высота. В других движках может быть вместо Y ось Zvoid FixedUpdate(){ carRigibody.velocity *= myAccel * Time.FixedDeltaTime;}carRigibody.velocity - скорость физического тела машиныmyAccel - это Vector3 ускорениеTime.FixedDeltaTime - постоянная дельта в физическом кадре
  8. 1. Покупаешь гранаты. Активируешь скрит, что я дал выше. Гранаты больше не будут уменьшаться. Но надо купить хотя бы одну гранату 2. Всего шесть возможных гранат (шесть адресов гранат типа 1 байт)
  9. Ты вот эти гранаты пытаешься взломать (вправом нижнем углу)? Когда я гранаты бросаю, то они из списка исчезают по одной, пока вместо гранат вообще ничего не останется. Но у тебя на предыдущем скриншоте гранаты во время закупки. Я думаю, надо ломать не на экране закупки, .а на экране во время игры. Поскольку гранаты имеют такой вид, то они могут быть не одним числом, а определенными числами. Например 00 - граната не существуюет 01 - граната существует Две и более гранат как числа могут быть быть рядом. Например, три гранаты в ряд 01 01 01 Если первой гранаты нет, то 00 01 01 Но, выше сказанно для типа 1 байт. Если же тип другой, то и размер байтов изменится. Я нашел только экранный адрес массива гранат по маске сигнатуры байт, где данные в массиве типа 1 байт. Надо бы найти рабочий адрес, пока не нашел. Смог сделать только заморозку текущего количества гранат или запрет разрушать гранату из инвентаря. Можешь проверить скрипт CE АА? Предварительно у тебя должна быть хотя бы одна граната. { Game : BoS.exe Version: 1.0 Date : 2015-07-31 Author : MasterGH Freezing grenades}[ENABLE]aobscanmodule(INJECT,bos.dll,75 1A 6A 01 6A 00) // should be uniqueINJECT: db EB 1Aregistersymbol(INJECT)[DISABLE]INJECT: db 75 1Aunregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: "bos.dll"+12318D"bos.dll"+12316F: 8D 96 70 04 00 00 - lea edx,[esi+00000470]"bos.dll"+123175: 52 - push edx"bos.dll"+123176: 53 - push ebx"bos.dll"+123177: E8 54 6C F1 FF - call bos.dll+39DD0"bos.dll"+12317C: 8B C8 - mov ecx,eax"bos.dll"+12317E: E8 2D 94 06 00 - call bos.dll+18C5B0"bos.dll"+123183: 8B CE - mov ecx,esi"bos.dll"+123185: E8 A6 B7 EF FF - call bos.dll+1E930"bos.dll"+12318A: 84 C0 - test al,al"bos.dll"+12318C: 5B - pop ebx// ---------- INJECTING HERE ----------"bos.dll"+12318D: 75 1A - jne bos.dll+1231A9"bos.dll"+12318F: 6A 01 - push 01"bos.dll"+123191: 6A 00 - push 00// ---------- DONE INJECTING ----------"bos.dll"+123193: 8B CE - mov ecx,esi"bos.dll"+123195: E8 B6 B7 EF FF - call bos.dll+1E950"bos.dll"+12319A: 50 - push eax"bos.dll"+12319B: 8B CE - mov ecx,esi"bos.dll"+12319D: E8 5E B6 EF FF - call bos.dll+1E800"bos.dll"+1231A2: 8B CE - mov ecx,esi"bos.dll"+1231A4: E8 47 F0 EF FF - call bos.dll+221F0"bos.dll"+1231A9: 5E - pop esi"bos.dll"+1231AA: B0 01 - mov al,01"bos.dll"+1231AC: 5F - pop edi}
  10. Мне к сожалению, кинули задание по работе, а до этого было "свободное время". Пока ничего не могу, не поставить, не посмотреть. Так что через часов пять-шесть, если не усну. А игру кстати скачать можно спокойно с торрентов через поиск. Русский репак. Хотя еще поискать придется.
  11. На эту игру вроде как нет трейнеров на беск. боеприпасы. Только неуяз и деньги. Возможно стоит посмотреть ради интереса. Поставил на скачку, еще ждать около получаса. Надеюсь, установиться без проблем и хак не долгий, а то придется забить.
  12. Можешь попробовать поискать кислотную гранату как текст. Найдешь адрес. Поставь бряк на запись. Открой дизассебмлер и стек. Пойдешь по пути вверх до того, как в стеке значение гранат пропадет. Ну и посмотришь как и из какого адреса число грант передается в функцию, которая записывает число как текст на экран.
  13. А у меня дома кот свалил на бутылку Бейлиса (ликер) монитор (22 люймма, матрицей eips) чотка на крышку стоячей бутылки. Когда я его включил он мне показал такой узор, что никому не посоветуешь. Думаешь, что "обои кристаллические" , а нет, не обои ))) Очень жалко, хороший мониторчик был
  14. А щас - сушить сухари... ))
  15. Я бы отвез в техсервис и не парился бы. Там те быстро скажут в чем причина и что заменить. Помню ковырялся с проблемой пару месяцев своими силами - комп запускался, то не запускался. Что я только не делал. Плюнул, поехал в техсервис. Выяснилось, что материнка от Гигабайт неудачной ревизии, при чем не знали, что ревизия неудачная, т.к. мамка новая, дорогая. Я столько времени убил, лучше бы сразу отвез, да и заменил бы. Заняло пару дней. Еще был случай, наверно, год назад. Бсоды стали вылетать. Особенно когда скролишь в браузере через среднюю кнопку мышки или, когда в Доте при притормаживания мелких (там они бывают, когда подгружаются игроки) или когда начинаются проигрываться звуки, то раз и бсод. И так может быть раз пять в месяц. И не поймешь в чем дело даже по кодам ошибок, даже после замены драйверов. Заменил случайно видюху на другую, халявную (знакоймый подарил после своего апгрейда), ну и все бсоды прекратились.
  16. BeaEngine может дизссемблировать код, но не читать регистры из контекста потока. Значение регистра eax можно узнать средствами отладки (функции WinAPI) . Toggle hardware data/read/execute breakpoints programmatically - link Debugging Functions (MSDN) - link Бряк в данном случае лучше ставить аппартный, а не int3. Для этого есть специальные регистры отладки, но их не так много. И еще аппартный бряк выполняет инструкцию, а потом прерывается. Т.е.если mov eax,[eax+4], то левый eax прочтешь, но не в скобках
  17. Снятие защиты предположительно не интересно, чтобы заниматься ей. И не факт, что у меня получиться обойти защиту за N-ое время. Поэтому ничего кроме как посоветовать продолжать поиски в Интернете я не могу. Недооценивать поиск в Интернете нельзя. Сегодня там нет решения, а завтра может появиться. Ну, и может не появиться никогда, тоже бывает ) Спасибо, я сомневался )
  18. 1. Полезный совет на будущее. Для проверки даже самых непонятных ошибок помогает пошаговая отладка CE. Отладка позволит узнать на какой инструкции происходит вылет 2. В глаза бросается ошибка. Значение координат это 4 байта, а ты работаешь с координатами как с 8-мью байтами в следующих строках Вот ошибка mov rcx,[coord_X]mov [r8+000000BC],rcxmov rcx,[coord_Z]mov [r8+000000C0],rcxmov rcx,[coord_Y]mov [r8+000000C4],rcx Ну и вот ошибка mov rcx [rbx+00000850]mov [coord_X],rcxmov rcx [rbx+00000854]mov [coord_Z],rcxmov rcx [rbx+00000858]mov [coord_Y],rcxМожно использовать 32-х разрядные регистры, а не 64х разрядные. Вместо rcx писать ecx... Не уверен на счет остального... Перед активации скрипта поставь процесс игры на паузу (в настройках CE горячие клавиши). Активируешь скрипт. Ставишь бряк в дизассемблере на инструкции, в которую делал инъекцию. Дальше размораживаешь процесс игры. И прерываешься. Идешь по F7 по шагам и смотришь ошибки. Примерно так я отлаживаю все скрипты инъекций кода. Обычно всегда успешно.
  19. Интернет поможет найти решение, главное желание.Через пару годиков, может ломанёшь.
  20. Ну, вот пример взятия поинтера ecx из инструкции, которая работает с нашим персом // Здесь сохраняем ecx из инструкции чтения, который работает со скоростью постройки нашего персонажа, предположительно из гуи (когда в игру заходим, но ни че не делаем там. Инструкция часто обращаемая)00400314 8B4124 mov eax,[ecx+0x24] jump from staple intersection, original code00400317 890D70034000 mov [0x400370],ecx move staple intersection pointer to 400370 to be compare later. our code0040031d C3 retn get back to call opcodeВот сравнение по поинтеру // Здесь код работает с нашими строениями и с чужими. Сравнием по 0x400370, где 400370 некоторый свободный адрес (но лучше из выделенной памяти брать)0040031e 393570034000 cmp [0x400370],esi compare write pointer with our staple intersection pointer00400324 740D je short 0x00400333 if equal go to 40033300400326 8B5624 mov edx,[esi+0x24] if not equal, recreate original code00400329 03D0 add edx,eax recreate original code0040032b 895624 mov [esi+0x24],edx recreate original code0040032e E9578B0B00 jmp 0x004B8E8A jump back to normal next write opcode00400333 BA36000000 mov edx,0x36 move 36 (hex) = 54 (dec) into edx00400338 EBF1 jmp short 0x0040032Bgo to 40032BЭто и есть staple intersection Мы некоторый регистр1 (ecx) из 00400314 8B4124 mov eax,[ecx+0x24], с которым работает только наш персонаж, сравниваем с некоторым регистром2 (esi) из 00400326 8B5624 mov edx,[esi+0x24], с которым работают как боты так и наш персонаж. Т.е. вытащили поинтер на структуру из инструкции ГУИ и сравниваем по нему... Логичный вопрос, почему бы в инструкцию 00400314 8B4124 mov eax,[ecx+0x24] сразу не делать чит, не вытаскивая никаких поинтеров. Но автор, наверно, школьник и сконцентрировался на создании бесконечного строения через сравнение поинтера в инструкции, которая используется как ботами, так и своим игроком. Источник : статья из темы на форуме CE
  21. Тогда меняй код игры или ищи указатели на адреса и морозь значения по указателям.
  22. Обсуждение будущей функции Я подумал, вот есть функция сравнения структур. И захотелось что-то похожее сделать по сравнению адресов прерывающихся на инструкциях. Захотелось разбивать их по группам и видеть, какие инструкции обращались к адресам из других групп или не обращались вообще. На практике выяснилось, что определение инструкции, которые работают с адресами нашего героя, союзников и врагов, довольно хлопотное дело, т.к. адресов много и картина может тут же поменяться при игре с боссами или другими персонажами. Т.е. хочется придумать помощника, который не ошибется и будет быстро определять работает ли инструкция только с одним адресом, работает ли при этом с другим адресом из другой группы В планах плагин, который будет на протяжении всей игры сортировать инструкции работающие с адресами по группам. Т.е. это позволит искать инструкции, которые работают с одной группой и не работают с другой. Самое прикольное, что из ГУИ ничего нового кроме контекстного меню не нужно. Например создать разметку в главной таблице CE Debug Мой персонаж Здоровье : 0x000000 Патроны : 0x000000 КоординатаX : 0x000000 Союзники Здоровье : 0x000000 Патроны : 0x000000 КоординатаX : 0x000000 Враг Здоровье : 0x000000 Патроны : 0x000000 КоординатаX : 0x000000 Debug Мой персонаж Здоровье : 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Патроны : 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... КоординатаX: 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 Союзники Здоровье : 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 Патроны : 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 КоординатаX: 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 Враги Здоровье : 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 Патроны : 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 КоординатаX: 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 Debug Мой персонаж Здоровье1 : 0x000000 (прим. нашлось несколько адресов здровья нашего героя) CodeSniffer Single .... Multiple .... Здоровье2 : 0x000000 CodeSniffer Single .... Multiple .... Здоровье3 : 0x000000 CodeSniffer Single Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Multiple Мой персонаж Здоровье1 (это инструкции, который сработали со здоровьем 3 и 1) Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 Здоровье2 (это инструкции, который сработали со здоровьем 3 и 2) Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 .... Союзники Патроны (это инструкции, который сработали со здоровьем 3 и патронами союзников) Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000 Враги Патроны (это инструкции, который сработали со здоровьем 3 и патронами врагов) Code(hitcount): 0x000000 Code(hitcount): 0x000000 Code(hitcount): 0x000000.... 13F76AE0B - 66 41 0F6E 71 10 - movd xmm6,[r9+10] (тут еще где-то были инструкции работающие со здоровьем союзников, не помню, некогда уточнять) 13F76AE48 - 66 41 0F6E 71 10 - movd xmm6,[r9+10] 13F72D9EB - 83 78 10 00 - cmp dword ptr [rax+10],00 13FEF8CAF - 66 0F6E 48 10 - movd xmm1,[rax+10] 13F931C49 - 8B 41 10 - mov eax,[rcx+10] (вот похожая со следующим списком) 13F9D6C31 - 66 0F6E 48 10 - movd xmm1,[rax+10] 13F931C49 - 8B 41 10 - mov eax,[rcx+10] (опа, вот инструкция которая рабтает как с боссом, так и с главным персонажем) 13FEB9851 - 83 79 10 00 - cmp dword ptr [rcx+10],00 13FEB9893 - 44 01 67 10 - add [rdi+10],r12d 13FEB989A - 44 8B 47 10 - mov r8d,[rdi+10] 13FEB98CB - 44 89 47 10 - mov [rdi+10],r8d 13FEB99FA - 83 7F 10 00 - cmp dword ptr [rdi+10],00 13F7953C7 - 83 78 10 00 - cmp dword ptr [rax+10],00 13F630C5D - 66 0F6E 48 10 - movd xmm1,[rax+10] 13FB4EF52 - 8B 40 10 - mov eax,[rax+10] 13F79581F - 83 78 10 00 - cmp dword ptr [rax+10],00 13FBB30FE - 83 78 10 00 - cmp dword ptr [rax+10],00
  23. Как вариант бери CE и функцию контекстного меню создания АА "шаблон AOB" при создании скрипта. Она построит сигну
  24. А ты мог бы потратить и больше, если бы я ответил завтра Прикинь
×
×
  • Создать...

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

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