-
Постов
319 -
Зарегистрирован
-
Посещение
-
Победитель дней
43
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные imaginary
-
-
7 минут назад, Derk сказал:
Я написал,но пишет "не все инструкции пригодны к инъекции"
Странно, что за процесс, для которого ты делаешь? и ещё, должно писать в какой строке ошибка.
и в AOB скриптах обычноjmp return
А такой метки у тебя как раз и нету, как и exit.
-
30 минут назад, Derk сказал:
Можно ли с помощью кода
Можно, если ты хочешь его увидеть во время работы процесса, то тебе нужно сделать скрипт.
Пример:
Есть инструкцияmov ecx,[ebx+4]
Тебе надо знать значение регистра на момент выполнения этого кода, например тебе нужен регистр ebx.
Делаешь внедрение и метку, в которую будешь записывать регистр в этот момент:
Спойлерlabel(EbxChecker) registersymbol(EbxChecker) //Регистрируешь метку yourcode: mov [EbxChecker],ebx //Записываешь в твою метку ebx originalcode: mov ecx,[ebx+4] jmp exit EbxChecker: //Размер метки, 4 байта dd 0
Теперь просто добавляешь в таблицу "EbxChecker"
и активируешь скрипт, наблюдаешь за значением в таблице - это значение регистра.- 1
-
7 часов назад, Garik66 сказал:
Заметка:
Money - число в памяти на 8 бит.
Как обычно я не заметила ?
-
1 час назад, Garik66 сказал:
А почему не воспользоваться соответствующими командами
А почему всё надо усложнять и делать 8 байт? Если использует команду mul, значит число 4 байта, значит целое, и в таком случае можно его сразу загружать с переводом и после выгружать:
Спойлер//Вариант если множитель float или doble fild dword (muller) //Загружаем число 4 байтов с переводом в число с пл запятой fmul dword (mult) //Умножаем на множитель который во float fistp dword (Куда выгружать готовое) //Выгружаем с переводом в 4 байта //Вариант если множитель целое число fild dword (muller) //Загружаем число 4 байтов с переводом в число с пл запятой fild dword (mult) //Загружаем в стек множитель fmul st(1) //Умножаем fistp dword (Куда выгружать готовое) //Выгружаем число с переводом в 4 байта fstp st(0) //Убираем лишнее число из стека (множитель) muller: dd (твоё умножаемое число) mult: //Если float dd (float)100 //(умножаем на 100, так и писать в метку (float)100) //Если простое dd #100 //100
У меня есть урок по fpu если интересно -
44 минуты назад, Nickson сказал:
Вот в этой программе не понял, как сделать
Тут всё просто, тебе нужно использовать функцию "Sleep", то есть - нажимается кнопка, потом происходит "Sleep" после - отжимается кнопка.
Гляди, вот к примеру код, при нажатии на F12 происходит зажатие пробела на 2 секунды (2000 мс), это заряжает пушку ровно на 65%СпойлерF12:: Send, {Space Down} Sleep, 2000 Send, {Space Up} Return
- 1
-
4 минуты назад, Xipho сказал:
Не стоит предоставлять сразу готовое решение
В таком случае:
В 21.04.2019 в 22:39, Nickson сказал:с определенной силой удара
Ты можешь сделать очень простой скрипт. Ищешь видимую силу удара (ту что показывает справа) она в doble от нуля до одного. Потом по ней ищи настоящую силу удара и на ту инструкцию делай скрипт, а значения задавай какие хочешь. Можешь сделать условия с кнопками хоткеями, нажимаешь одну, ставится например 20, на другую - 50... Кстати, всё это будет моментально и не придётся ждать заряда.
- 1
-
У меня был скрипт для танков этих, на магнум, позволяет сохранять силу выстрела и после уже стрелять все время с этой силой одинарным нажатием пробела.. Могу в принципе снова сделать.
-
Это можно просто найти таким образом - ищешь что обращается к координатам персонажа если он пересекает край карты, ведь происходит что нибудь? например не пойти дальше, или отталкивает и тп. В это время смотришь обращения - если появляются новые, с ними и работаешь, смотришь какие там есть проверки на координаты, сравниваемое и будет координата края карты, и если центр (0,0,0) где нибудь в углу, то ты получаешь размер карты. Если центр в середине ты получаешь половину размера.
Если ничего не появляется - проверяешь все инструкции что обращаются к координатам игрока, можешь просто НОПить некоторые, и смотреть что происходит при пересечении края. Ну или просто исследовать код и сравнения.
Способ для CE -
5 часов назад, partoftheworlD сказал:
А это уже баг/механика игры, не зависящий от правки инструкций. Это к разработчикам.
И он идёт пишет разработчикам "Здравствуйте, я тут вашу игру взламываю и тут происходит баг... ...исправьте это безобразье!"
-
Скрипты ассемблерные используй, там записывай указатель в метку, сколько уже раз это обговаривалось в разных темах. Если не можешь найти адрес значит или инструкция ведёт на саму себя, вроде такого:
mov eax,[eax+8]
или ищешь как то не правильно, или адрес хранится только в момент обращения а после перезаписывается.
-
Только что, Garik66 сказал:
eax перезаписывается дальше по игровому коду
Вижу, да тут ты прав
-
В 31.03.2019 в 21:48, Garik66 сказал:
И ещё один скрипт именно с использованием опкодов FPU
Ты тут только портишь eax занося в него флаги, может он там где-то используется дальше?
Можно сделать:push eax fstsw ax sahf pop eax
-
4 часа назад, Garik66 сказал:
Какие?
То, что ты загружаешь - потом выгружаешь, потом опять загружаешь из той же метки.. Но я так понимаю это ты показал принцип перевода, меня смутила последующая загрузка..
-
5 часов назад, Garik66 сказал:
Приведи в одному типу:
пример:
Зачем такие извращения, после загрузки без разницы float оно или doble, можно сразу работать без всяких временных переменных. Важно только то как будет выгружено в конце
-
22 минуты назад, Antonshka сказал:
Осилишь самостоятельное создание эффекта "Camera Sway"
Не вижу тут никакой выгоды... Ладно бы мне свою игру делать надо было.. ?
23 минуты назад, Antonshka сказал:Также осилишь получение Yaw, Pitch, Roll из видовой матрицы 3x3 с обратной конвертацией в неё? А из кватернионов 1x4?
Если оно мне приспичит то осилю.. Даже человек который ничего не знает о взломах может осилить если оно будет надо ?. Вон у меня в Танках онлайн был скрипт - движение в сторону поворота камеры - то есть танк двигает туда куда смотрит камера. Там непонятно что за поворот, есть 2 значения, одно 2... что то там, другое в это время -2... и они странным образом меняются. Так мне пришлось сначала вычислить одно постоянное используя другое как условие, а потом формулу кривой создать потому что там когда поворачиваешься в бок выходило 67 или вроде того а не 90 градусов. а на 180 и ноль - нормально. Незнаю что это было, может радианы какие а может матрица..) Я наглядно всё беру, не разбираюсь что там - мне главное получить нормальное...
-
18 минут назад, mumut сказал:
Мне интересно можно ли в луа скрипте сделать метку.
Вот таким образом:
{$lua} [ENABLE] metka = allocateMemory(4) --Выделяем допустим 4 байта памяти unregisterSymbol('lol') --На всякий случай снимаем регистрацию registerSymbol('lol',metka) --Регистрируем lol в области metka lol = 0 [DISABLE] unregisterSymbol('lol')
После в таблицу можешь добавить 'lol'.
-
59 минут назад, Garik66 сказал:
У ТС вопрос не как в СЕ-асм скрипте это сделать, а как в LUA?
У него вообще непонятно что за вопрос, в теме одно а в названии другое. И потом, метки это когда адрес помечается ссылкой, а у него переменные в скрипте...?
-
1 час назад, mumut сказал:
как в ассемблерном скрипте сделать метку
Боже, создать метку - label(name), везде оно показано....
Не понимаю связь названия темы и содержания... -
Многие из вас слышали такие понятия как AIM, автонаведение, автоприцел и тому подобное, когда прицел игрока автоматически наводится на какой нибудь объект.
В видео показано как сделать такое на LUA, ассемблер ничем не будет отличаться, разве что кучей команд ?.
В первых четырёх (включая пример) видео - создание и мелкие нюансы.. В 5 просто демонстрация.
Патроны летят в цель, неровная камера - просто обновления и это не влияет. Попадание зависит от разброса оружия ?.
Видео о поиске значений ♦️:
Спойлер
Видео о создании и вычислениях ?:Спойлер
Видео дополнение ко второму (запись сломалась и потому пришлось доснять тут):Спойлер
Обзор первый:Спойлер
Обзор второй:Спойлер
Ну и скрипт на LUA:Спойлер{$lua} [ENABLE] OnHit = readPointer('HitUkaz+4') --Получаем адрес указателя с ID на прицеле PCam = getAddress('engine.dll+4E05F4') --Получаем адрес Y камеры local function AngMath(timer) --Функция выполняющаяся таймером if(isKeyPressed(VK_LMENU)) then if(readInteger(OnHit+11344)<60) then --координаты игрока PX = readFloat('client.dll+624C58') --X PY = readFloat('client.dll+624C5C') --Y PZ = readFloat('client.dll+624C60') --Z --Цель Goal = readPointer('HitUkaz') --Получаем адрес цели GX = readFloat(Goal+648) --X GY = readFloat(Goal+652) --Y GZ = readFloat(Goal+656) --Z --Гипотенуза (дистанция до объекта) Y DistZ = PZ - GZ + 10 --Дистанция по высоте (пригодится позже) Dist = math.sqrt((PX - GX)*(PX - GX)+(PY - GY)*(PY - GY)+DistZ*DistZ) AngV = math.deg(math.asin(DistZ / Dist)) writeFloat(PCam,AngV) --Запись в Y камеры --X камеры расчёт AngG = math.deg(math.atan((PY - GY) / (PX - GX))) if(PX - GX > 0) then AngG = 180 + AngG end writeFloat(PCam+4,AngG) --Запись в X end end end --Таймер mathTimer = createTimer(nil, false) --Создаём выключенный таймер mathTimer.Interval = 1 --Задаём ему интервал - 1 (частота выполнений) mathTimer.OnTimer = AngMath --Функция которая будет вызываться mathTimer.Enabled = true --Включаем таймер [DISABLE] mathTimer.destroy() --Уничтожаем таймер
- 3
- 3
-
В 28.02.2019 в 08:29, MEDBEDb сказал:
в какую сторону то копать хотя бы
Вот если я что то поняла правильно из сказанного, то в есть такая штука называется стерео микшер, это устройство ввода как и микрофон, транслирует звуки компьютера под видом звуков микрофона, то есть как бы устройство записи которое получает ввод как устройство вывода. Вот оттуда попробуй копать.
- 1
-
43 минуты назад, mumut сказал:
показать модель ГГ при свободной камере
В Borderlands я сомневаюсь что это сработает, так как там нету вида от 3 лица, только при просмотре навыков. Но там вероятно статическая модель с анимацией, а ходьба и пр не анимируются, потому что незачем. Так что - вероятно никак. Но если очень хочешь то можешь попробовать поискать что меняется при просмотре древа навыков. (предполагаю что ты конкретно про эту игру так как все время в ней сидишь)
-
Вот такая таблица получилась, скрипт посмотришь, значения голода, жажды, выносливости, макс выносливости и другие вынесены в таблицу, появятся как включишь скрипт.
- 1
-
15 часов назад, TxapH сказал:
Максимальный
Почему ты написал в названии "бесконечные значения"? если хочешь получить бесконечные, то впиши вместо цифр туда inf+, будет бесконечность (float только)
Заместо поиска указателей попробуй сделать скрипт который будет сохранять в метку адрес игрока или какой нибудь выше по списку, и от него получи указатели, таким образом проблем не возникнет. Таких уроков полно, в том числе и на канале есть такой.
UPD: посмотрю игру, покажу пример -
2 часа назад, Senpai сказал:
доступ к функции, отправляющей луч
Так ты её сделай - луч, это всего лишь перебор позиций и проверка есть на них чего или нет
Можно ли с помощью кода без остановки процесса снять значение конкретного регистра в СЕ?
in Cheat Engine
Опубликовано
Да вроде ничего сложного ведь, смотри к примеру скрипт сгенерировался.
[ENABLE] aobscanmodule(INJECT,cheatengine-x86_64.exe,C3 00 00 00 00 48 8D 64 24 D8 C6) alloc(newmem,$1000,"cheatengine-x86_64.exe"+1ABB0) label(code) label(return) //Тут регистрируешь метку newmem: //Сюда вставляешь твой код code: lea rsp,[rsp-28] jmp return //Тут задаёшь размер INJECT+05: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT+05: db 48 8D 64 24 D8 unregistersymbol(INJECT) dealloc(newmem)
Тебе нужно вставлять свой код в этих местах (это пример). Если уж не получится, то можно дискорд