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

Рекомендуемые сообщения

Собственно задача заключается в следующем:

1. Есть инструкция "movss [rcx+00000378],xmm0" которая располагается по статическому адресу.

2. Мне нужно по средством CE, желательно LUA, что бы можно было использовать в дальнейшем трейнере, прочитать содержимое регистра RCX.

3. К этому значению прибавить 378.

4. Значение RCX записать в переменную 1, значение со смещением записать в переменную 2.

 

P.s. На C# это сложно реализовать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
35 минут назад, pachela сказал:

На C# это сложно реализовать?

получение значения из регистра -  да, получение значение регистра с помощью сигнатуры - нет.

 

35 минут назад, pachela сказал:

Собственно задача заключается в следующем

1. ставишь бряк на инструкцию (debug_setBreakpoint:)

2. получаешь значение регистра(registernames)

3. складываешь

4. выводишь

 

все есть в документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно и без бряков обойтись - сделать код кейв, который будет сохранять содержимое регистра в какой-то статический адрес, а потом из этого адреса уже читать откуда угодно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Временно решил проблему в Lua Engine (нужно будет перенести в Lua или реализовать как то трейнер =)) вот таким вот кодом:

Спойлер

local addressCode = 'MyProcc.exe+D4BC13'
debug_setBreakpoint(addressCode)
print(RCX)
s = string.format("%08X", RCX)
print(s)

debug_removeBreakpoint(addressCode)
showMessage(s)
writeToClipboard(s)

 

А в Шарпе я беру с Буфера обмена, добавляю смещение и имею, то что хочу. Но это пока, что для развития, вообще нужно будет думать как это сделать в Шарпе.

Подскажите еще вот что, как сделать форму трейнера или вообще трейнер, что бы при запуске не отображалось окно? Ну типа запустил, оно в фоне клацнуло и закрылось.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, pachela сказал:

как сделать форму трейнера или вообще трейнер, что бы при запуске не отображалось окно?

Убираешь в главном файле создание формы и прописываешь нужный код. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
24 minutes ago, Xipho said:

Убираешь в главном файле создание формы и прописываешь нужный код. 

 

Я дилетант в этом вопросе (да и проверить не где), но разве он тогда не открывает консольное окно при запуске приложения таким образом?

Нет ли у C# форм параметра Visible, который можно было бы просто установить в False?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, srg91 сказал:

но разве он тогда не открывает консольное окно при запуске приложения таким образом?

Нет. Для того, чтобы создавал консольное окно, нужно сменить тип приложения на консольный
 

5 минут назад, srg91 сказал:

Нет ли у C# форм параметра Visible, который можно было бы просто установить в False?

Есть, но зачем держать форму в памяти, если она все равно не нужна? К тому же, тогда для закрытия приложения нужно будет уничтожать форму. Лишние действия.

 

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему все время выдает вот такую вот ошибку?

597281261c86b751d3460f2e81476df1.png

И вот что выдает еще, этого не выдавало...

openProcess('myproc.exe')
debugProcess(2)
local addressCode = 'myproc.exe+D4BC13'
debug_setBreakpoint(addressCode)
print(RCX)
s = string.format("%08X", RCX)
print(s)

debug_removeBreakpoint(addressCode)
writeToClipboard(s)

 
Ошибка:[string "openProcess('myproc.exe')
..."]:6: bad argument #2 to 'format' (number expected, got nil)
Ошибка скрипта

П.С. Я когда спрашивал про создание трейнера без формы, то имел ввиду в CE =). В шарпе это не проблема, проблема в шарпе отладку сделать, я этого еще не умею.

Изменено пользователем pachela

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так, почему была ошибка в OpenProcess, я понял. Просто почему то опечатался и ввел одинарные кавычки. это поправили и теперь код отчасти работает. Начало просто постоянно выдавать ошибку про время ожидания для присоединения отладчика. Если клацнуть НЕТ, то значение все равно напишет, НО игра через пару секунд вылетает...

В игре античит защищает память от API. Может таким образом отладчик использует это самое API?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

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

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