Спасибо за все твои уроки!Сейчас не много людей выпускают такие узкоспециализированные видео, а про некоторые темы даже статьей в интернете по-русски нет
@sergeys77717 жыл бұрын
статьи на русском? Забудь про программирование тогда, если не знаешь англ. Жесть
@АлексейИванов-м5щ7р7 жыл бұрын
В этом коде есть небольшая ошибка. Когда мы вызываем ChangeProtection() нам нужно передать размер totalLen, а не totalLen + delta.
@romanbush51643 жыл бұрын
Круто, но можно ли перехватывать функции не меняя исходный код?
@adskfksefn9 жыл бұрын
Даешь новые видио!!! Супер!!!
@se7dxs9 жыл бұрын
@ Dmitry K., вот только тут одна проблема - если в приложение которое хукаеться, имеется 2 MessageBox'a, то как разделить применение хука. Ибо если не разделять он будет заменять и первый и второй.
@DmitryKCoder9 жыл бұрын
+se7dxs можешь дописать код, который будет определять откуда шел вызов, или по параметрам, которые передаются в MessageBox, либо подменяй сами вызовы MessageBox)
@se7dxs9 жыл бұрын
+Dmitry K. (Coder) Спасибо что ответил, я так понял код нужно дописывать в HookHelper, но я совсем не представляю что он из себя там должен представлять =), возможно ли где-то посмотреть примерную реализацию ? И еще 1 вопросик - как быть с классами которые представляют собой экспортируемую переменную, как обратиться по их виртуальнм классам что внутри, а точнее как указать что я хочу их перезаписать ? Т.е пример __declspec(dllimport) extern FManager* gManager; А FManager представляет собой класс с виртуальными функциями т.е class __declspec(dllimport) FManager { public: virtual FArchive* CreateFileReader( const TCHAR* Filename, DWORD ReadFlags=0, FOutputDevice* Error=GNull )=0; } FArchive Это кастомный класс. Как обратиться к CreateFileReader, точнее как его перехватывать?
@DmitryKCoder9 жыл бұрын
se7dxs загугли "интерфейсы в библиотеках на C++"
@se7dxs9 жыл бұрын
Не как не могу найти ничего дельного, может подкините чтонибудь дельное ?
@se7dxs9 жыл бұрын
+Dmitry K. (Coder) Дмитрий - возможно ли узнать ваши контакты, я мог бы скинуть вам $ за ваше время.
@sdfsdfgs10 жыл бұрын
По чем учил с++?(Какие книги читал?Какие уроки смотрел?)
@igar-s10 жыл бұрын
Хорошее видео. А можете сбросить ссылку на исходник?
@АлексейИванов-м5щ7р7 жыл бұрын
Хотел ещё добавить, что если используете Debug-сборку и функции имеют косвенный переход через ILT, то необходимо добавить след. код в начало функции HookFunctionWithTrampoline(): if (origFuncPtr[0] == 0xE9) { // correct origFuncPtr because it's JMP origFuncPtr = *((unsigned int*)(origFuncPtr + 1)) + origFuncPtr + 5; } Он вычисляет "правильный" адрес функции и позволяет не перезаписать следующий элемент в ILT.
@meefkifox94384 жыл бұрын
Я так понимаю, что это можно использовать для перехвата функций других приложений?
@jodarkma10 жыл бұрын
Про первый способ даже и не слышал, вторым пользовался всегда. Вы не можете подсказать какой-нибудь ассемблер тип AsmJit только чтобы можно инструкции уже в работающем приложении из текстовой строки компилировать и выполнять, т.е. так же, как это сделано в Cheat Engine?
@DmitryKCoder10 жыл бұрын
Если мне не изменяет память, то там такого класса не существует (на всякий случай ознакомься с их API). Тебе нужно будет писать транслятор, который будет переводить текст в инструкции понятные самому asmjit. К пример тебе нужно будет строку mov eax,[edx+20] транслировать в asmjit.mov(eax, dword_ptr(edx, 0x20)); .
@jodarkma10 жыл бұрын
***** Ну это понятно, я думал, что может существующие есть уже библиотеки, чтобы не изобретать велосипед.
@DmitryKCoder10 жыл бұрын
DarkoreXOR думаю стоит загуглить, может есть что-нибудь и готовое.
@diadyatrix20278 жыл бұрын
Последний вариант никак не удается, то ли трамплин не возвращается, то ли еще что-то часа 4, наверное, за последним примером сидел, кошмар просто)) Быть может сохранился исходник, ибо у меня уже глаза замылились
@Jakozdobanatorcie10 жыл бұрын
Сегодня тоже самое делал )).
@DerebookSVK9 жыл бұрын
Кодер сделай туториал по хукам функций виртуальных таблиц плиз ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
@p45h37 жыл бұрын
>BeaEngine.lib(BeaEngine.obj) : error LNK2019: ссылка на неразрешенный внешний символ _sprintf в функции _CopyFormattedNumber@20
@АлексейИванов-м5щ7р7 жыл бұрын
Попробуй собрать BeaEngine.lib из исходников. Поиграй с параметрами BEA_USE_STDCALL/ исключить crt.lib (/NODEFAULTLIB)
@bshtornado30367 жыл бұрын
Спасибо за видео, радует что можно найти хорошее обучающее видео на русском языке :) а можете подсказать что за музыка фоном играет? :-)
@Poker-s_S.V.7 жыл бұрын
ссылка на дизассемблер не работает
@АлексейИванов-м5щ7р7 жыл бұрын
github.com/BeaEngine/beaengine
@roysivargas735410 жыл бұрын
Почему ты так помешался на unsigned char?! Нифига не пойму.