 |
|

08.07.2021, 14:48
|
|
Флудер
Регистрация: 28.06.2019
Сообщений: 3,442
С нами:
3619995
Репутация:
168
|
|
Сообщение от Akat
Дайте ссылку на 1 тему, я не могу найти
Гайд - Создание ASI-плагина с нуля [1]
Делать мне было нечего, а работать не хотелось, поэтому вы видите этот гайд Создание ASI-плагина с нуля Хуки – что это такое и как с ними работать Безопасная инициализация и работа с SAMP Работа с рендером и Directx9 Обработка событий окна + ImGui В этом гайде мы создадим свой ASI-плагин с...
www.blast.hk
|
|
|

05.03.2022, 05:48
|
|
Постоянный
Регистрация: 01.05.2021
Сообщений: 752
С нами:
2650753
Репутация:
98
|
|
Сложно очень... 🙁
|
|
|

05.03.2022, 17:29
|
|
Участник форума
Регистрация: 12.02.2022
Сообщений: 112
С нами:
2238751
Репутация:
48
|
|
Сообщение от Yuriy Code
Сложно очень... 🙁
это легко, просто луашеру который до этого вызывал функции, будет не просто их писать
|
|
|

10.09.2022, 11:55
|
|
Постоянный
Регистрация: 01.05.2021
Сообщений: 752
С нами:
2650753
Репутация:
98
|
|
Сообщение от kin4stat
Код:
Код:
.text:10067460 000 55 push ebp
.text:10067461 004 56 push esi
.text:10067462 008 8B E9 mov ebp, ecx
.text:10067464 008 57 push edi
И видим что у нас тут 4 опкода занимающих ровно 5 байт. Но если вам не повезет как тут, то нужно брать в большую сторону.
Например тут, нужно будет взять 6 байт.
Как ты узнал, что опкоды по 5 байт?
Расскажи, как ты посчитал это. Ибо, вообще нихуя не понятно.
|
|
|

10.09.2022, 12:13
|
|
Флудер
Регистрация: 16.09.2019
Сообщений: 2,013
С нами:
3505395
Репутация:
183
|
|
Сообщение от Yuriy Code
Как ты узнал, что опкоды по 5 байт?
Расскажи, как ты посчитал это. Ибо, вообще нихуя не понятно.
там же написаны байты. 0x55, 0x56, 0x8B, 0xE9, 0x57 и всего их 5 в этом отрезке кода
|
|
|

10.09.2022, 12:14
|
|
Постоянный
Регистрация: 01.05.2021
Сообщений: 752
С нами:
2650753
Репутация:
98
|
|
Сообщение от Heroku
там же написаны байты. 0x55, 0x56, 0x8B, 0xE9, 0x57 и всего их 5 в этом отрезке кода
Сложнооооооооооооо... ☹️😫
|
|
|

10.09.2022, 12:48
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
Сообщение от Yuriy Code
Сложнооооооооооооо... ☹️😫
не дописал, четвёртый*
|
|
|

10.09.2022, 14:55
|
|
Постоянный
Регистрация: 01.05.2021
Сообщений: 752
С нами:
2650753
Репутация:
98
|
|
Сообщение от F0RQU1N and
не дописал, четвёртый*
Да я уже понял, но, всё-равно сложно очень.
|
|
|

11.09.2022, 20:25
|
|
Постоянный
Регистрация: 01.05.2021
Сообщений: 752
С нами:
2650753
Репутация:
98
|
|
Сообщение от kin4stat
uintptr_t OriginalFunction = *reinterpret_cast(HookAddress + 1) + HookAddress + 5;
Что за дичь...
Зачем ты сложил адрес хука???
HookAddress + HookAddress... ЗАЧЕМ??? Если нужно вычесть. Но, Киня же сделал зачем-то наоборот...
Как мне быть, если я ничего не понимаю... 😭
|
|
|

13.09.2022, 18:26
|
|
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами:
3174020
Репутация:
213
|
|
Сообщение от Yuriy Code
Что за дичь...
Зачем ты сложил адрес хука???
HookAddress + HookAddress... ЗАЧЕМ??? Если нужно вычесть. Но, Киня же сделал зачем-то наоборот...
Как мне быть, если я ничего не понимаю... 😭
так, для начала хватит давать эти уебищные прозвища, заебал и не только меня. итак, к делу:
опкод jmp, размер которой 5 (x86), прыгает на определенное место в коде и она является релативной, то есть на сколько прыгнуть ПОСЛЕ себя.
например ты на адрес 10 и тебе надо прыгнуть на адрес 20. чтобы это сделать воспользуемся jmp. подводя итог прошлому абзацу, после инструкции jmp адрес будет 15 (т.к её размер 5) соотвественно нам нужно прыгнуть еще на 5. как это вычислить математически? jmp {куда надо}20-{откуда}10-{размер инструкции}5=5, то есть jmp 5.
так же работает и call, но она делает ещё несколько действий кроме прыжка.
с этим разобрались.
теперь, то что ты процитировал, kin4stat берет адрес оригинальной функции (для дальнейшего её вызова чтобы не прерывать flow программы) из существующей инструкции call/jmp (не читал контекст).
пользуясь знаниями из прошлого абзаца, зная как устроена инструкция jmp (JMP ADDR), то на 0 месте находится опкод, а на 1-4 сам РЕЛАТИВНЫЙ адресс.
возьмем пример из прошлого абзаца: jmp 5 на адресе 10, соотвественно после этой инструкции программа будет на адресе 20, его нам и нужно достать.
addr = {размер прыжка}5+{текущий адрес}10+{размер инструкции jmp}5=20.
мы добавляем 5 т.к jmp берет за основу адрес после самой себя, поэтому при её построение мы отнимаем (т.к эти байты нам прыгать не надо), а при возвращение оригинального адреса мы их добавляем.
вроде все понятно, не перечитывал да и по***
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|