Ассемблерные команды или как пользоваться Cheat Engine, x64dbg и IDA Pro
Сегодня я постараюсь собрать самый полный гайд по интрументам, которые помогут тебе изучить, как работает исполняемый *.exe файл изнутри.
О чем собственно речь?! Любая программа, которую ты запускаешь на своем ПК или смартфоне является машинным кодом, который состоит из 0-ей и 1-иц. И если процессор спокойно живет с этим, то человеку прочитать такое очень сложно. Для ускорения написания программ много лет назад люди изобрели язык программирования, который называется ассемблер.
Но человекам этого было мало и ассемблер казался им все еще сложным.. Потому было придумано множество других C, C , Java, C#, Python и прочее. Но все они в разной степени переводятся в ассемблер, а потом ассемблер в процессорные команды.. В целом это и все, что нужно знать об этой чихарде..
Разные программы могут отличаться разной степенью виртуализации, но в момент запуска.. Они все выгружаются в оперативную память и там.. Они все одинаковые.
Самым доступным, для новичка, способом произвести насильственные дествия над кодом программы, является патч в райнтайме. То есть, мы пишем еще одну программу, которая ищет участок в памяти и меняет в нем код на тот, что нужен нам. Этот способ позволяет избежать различных защит, которые предпринимают авторы софта, поскольку в памяти все обнажено.
Итак, как мы выяснили, программа - это цифры, а именно нули и единицы. Так как же нам их прочитать?
Перевод машинного кода в человекочитаемый ассемблер называется дизассемблированием и для ОС Windows имеется 3 популярных программных решения. x64dbg, IDA и Cheat Engine.
Самым лучшым для новичка будет Cheat Engine, в нем есть куча фукций облегчающих поиск и редактирование.
Далее идет x64dbg, он является открытым, разрабатывается и поддерживается интузиастами из сообщества реверсеров, которое сосредоточено на .
IDA - коммерческий продукт, который является лидером, если Вы собираетесь серьезно работать в сфере кибербезопасности. Она отличается от выше упомянутых тем, что позволяет снять дамп из памяти и реверсить код статически, но это уже совсем другой уровень. Чем она будет полезна новичку, так это тем, что, отыскав нужный участок в одном из первых двух, в IDA мы сможем произвести декомпиляцию и посмотреть, как нужная нам функция выглядит на самом деле. Это потребуется, если Вы захотите вызвать ее из своей программы.
Итак, с места в карьер! Нужно запоснить основной список инструкций:
ADD - складывет 2 значения
MOV - перемещает значения
AND - логическое “И“
CMP - сравнивает на равенство
INC - инкремент “ “
JMP - переход по адресу
OR - логическое “ИЛИ“
POP - выталкнуть из стека
PUSH - поместить в стек
RET - возврат из процедуры
Все еще не понятно?! Самое главное запомнить всего 2: это CMP и JMP.
Инструкция JMP - инструкция независимого перехода, но у нее есть и собраться JE/JZ и JNE/JNZ (E = EQUAL, Z = ZERO это одно и то же, просто в разных реализациях используют либо первое, либо второе). Условный переход полностью зависит от инструкции CMP. В зависимости от исхода сравнения, она переводит ZERO FLAG (далее ZF) в состояние 1 (вкл), либо 0 (выкл).
Название ZERO FLAG проистекает из того, как происхоит сравнение CMP, она просто берет и вычетает одно значение из другого и если оно равно 0, то равенсво соблюдается.. Воот..
Этих флагов в процессоре, как у дурака фантиков, но для данного тутора нам больше не нужно..
Это 80% информации, которую нужно знать, если Вам нужно просто убрать какое-нибудь надоедливое окошко в программе.
Для тех, у кого уже очумели ручки, сделал подробный гайд в гифках, как пользоваться Cheat Engine, x64dbg и IDA Pro
1 view
278
61
2 months ago 00:03:15 1
Гимн Программистов.wmv
7 months ago 00:07:42 1
Ассемблерные команды или как пользоваться Cheat Engine, x64dbg и IDA Pro
7 months ago 00:14:05 1
Язык программирования C. Встроенный ассемблер
8 months ago 00:27:48 1
Язык программирования С. Команда mov со знаковым расширением
8 months ago 00:49:41 1
Основы Ассемблера, часть #02. Самая простая программа
10 months ago 00:01:00 1
Блок управления двигателем. Программирование ЭБУ - это просто. Изучаем документацию и программируем
1 year ago 00:03:16 1
Гимн хакера с просторов интернета
2 years ago 01:24:34 1
Падарян В. А. - Архитектура ЭВМ и язык ассемблера - Лекция 3
4 years ago 00:08:46 3
Язык С. Присваивание значений. Ассемблерный код команд
6 years ago 00:16:15 1
[gamehacking] Мгновенная постройка только для игрока