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

[CE] Чтение значений регистра


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

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

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?

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

×
×
  • Создать...

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

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