C++ Вопрос об инструкции

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Окт 2022
Сообщения
103
Реакции
15
lea rcx,[7FF68C7C33B8] как из этого получилось 48 8D 0D 16A6F002, саму инструкцию я понял, а вот последний адрес 16A6F002, как из этого 7FF68C7C33B8 получилось это 16A6F002?
 
потому что
это относительный адрес
а это нет
Untitled.png

Что надо сделать чтобы получить такую хуйню? Мне нужен shell код. Изменить lea, rcx [addr] на свой
 
Посмотреть вложение 269841
Что надо сделать чтобы получить такую хуйню? Мне нужен shell код. Изменить lea, rcx [addr] на свой

1706969425410.png


Это смещение в байтах от адреса начала инструкции ( 1 ) до адреса указанного в операнде ( 3 ) + 7 ( размер инструкции ).

Чтобы получить это смещение тебе нужно от адреса который находится в операнде отнять адрес начала инструкции и отнять её размер ( 7 байт ).


В итоге получается -> 0x7ffd432d2aa2 - 0x7ffd433befdd - 7 = 0xfff13abe что и записано у тебя ( 2 ) только в обратной последовательности.
 
Последнее редактирование:
Посмотреть вложение 269843

Это смещение в байтах от адреса начала инструкции ( 1 ) до адреса указанного в операнде ( 3 ) + 7 ( размер инструкции ).

Чтобы получить это смещение тебе нужно от адреса который находится в операнде отнять адрес начала инструкции и отнять её размер ( 7 байт ).


В итоге получается -> 0x7ffd432d2aa2 - 0x7ffd433befdd - 7 = 0xfff13abe что и записано у тебя ( 2 ) только в обратной последовательности.
1706979390118.png

не сходится
1706979409432.png

наоборот тоже самое не сходится
1706979527331.png
 
В обратном порядке запиши число побайтово

Почитай про порядок байтов, в данном случае little endian.В большинстве случаев на х86-х64 системах значения в памяти представлены в этом формате, т.е в обратно порядке.

Число 0х12309080 в памяти будет записано как : 80 90 30 12.
Т.е побайтово наоборот, от младшего к старшему байту

Чтобы не париться , ты можешь записывать опкод самой инструкции, т.е 48 8D 0D, потом по этому же адресу + 3 записывать целое число ( твоё смещение ), оно автоматически запишется в нужном порядке.
 
Последнее редактирование:
В обратном порядке запиши число побайтово


Почитай про порядок байтов, в данном случае little endian.В большинстве случаев на х86-х64 системах значения в памяти представлены в этом формате, т.е в обратно порядке.

Число 0х12309080 в памяти будет записано как : 80 90 30 12.
Т.е побайтово наоборот, от младшего к старшему байту

Чтобы не париться , ты можешь записывать опкод самой инструкции, т.е 48 8D 0D, потом по этому же адресу + 3 записывать целое число ( твоё смещение ), оно автоматически запишется в нужном порядке.
Бля спс. Выручил, брат
 
Еще один вопрос

1707143778771.png


Я написал такой код,
1707143795501.png
но эта хуйня кидает куда-то в жопу. Почему расчитывается неправильный адрес? Есть ли какая-то библиотека, функция чтобы хукать функции external путем?
У меня DLL в игру не инжектится, из-за этого так мучаюсь
 
Еще один вопрос

Посмотреть вложение 269979

Я написал такой код, Посмотреть вложение 269980 но эта хуйня кидает куда-то в жопу. Почему расчитывается неправильный адрес? Есть ли какая-то библиотека, функция чтобы хукать функции external путем?
У меня DLL в игру не инжектится, из-за этого так мучаюсь
Ты хочешь чтоб игра из своей памяти переходила к памяти твоего приложения??
 
Назад
Сверху Снизу