<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2618609498393487984</id><updated>2026-05-22T14:14:21.268+03:00</updated><category term="Видеоуроки"/><category term="Взлом игр"/><category term="Программирование"/><category term="Обучение"/><category term="Cheat Engine"/><category term="Интересное"/><category term="Ассемблер"/><category term="Блог"/><category term="трейнеры"/><category term="C++"/><category term="Code-Injection"/><category term="Hint"/><category term="Опрос"/><category term="C#"/><category term="Инъекция кода"/><category term="Игры"/><category term="Новости"/><category term="Хинт"/><category term="IT"/><category term="Без рубрики"/><category term="взлом"/><category term="читы"/><category term="OllyDbg"/><category term="Указатели"/><category term="Настройки"/><category term="Поиск адресов"/><category term="Тематика"/><category term="Трюк"/><category term="Хабрахабр"/><category term="Godmode"/><category term="One hit kill"/><category term="Указатель"/><category term="скачать игру"/><category term="старые игры"/><title type='text'>keng, clinically insane</title><subtitle type='html'>//&quot;Я нашёл документацию по Intel x86 и с тех пор я такой&quot; ©&#xa;&#xa;/* Видеоуроки по взлому игр и программированию трейнеров. &#xa;Много отладчика, ассемблера, невнятной речи и всяких разных извращений. А ещё у нас есть печеньки. */</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>148</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-5652722187405378256</id><published>2021-01-07T06:36:00.002+03:00</published><updated>2021-01-07T06:36:47.299+03:00</updated><title type='text'></title><content type='html'>Ох, блин. Давненько!&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ощущение такое, будто синглплеерный геймхакинг вымер. Это что же - начинать пилить материалы по мультиплееру?&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/5652722187405378256/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2021/01/blog-post.html#comment-form' title='Комментарии: 15'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/5652722187405378256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/5652722187405378256'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2021/01/blog-post.html' title=''/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-6979372819671624919</id><published>2016-02-22T13:36:00.001+03:00</published><updated>2016-02-22T13:36:18.209+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Новости"/><category scheme="http://www.blogger.com/atom/ns#" term="Опрос"/><title type='text'>Куда податься с YouTube?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ребята, всем привет!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Надеюсь, праздники у вас прошли отлично. У меня - замечательно, но есть одна проблема: мои видео с YouTube удаляют. Кто, почему и зачем - не знаю, т.к. канал у меня довольно специфичный, с небольшой аудиторией и редко пополняется новым контентом (каюсь), так что вряд ли кому-то это приносит сколько-нибудь ощутимые деньги. Могу сделать вывод, что это делают взрослые люди школьного возраста.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Исходя из предыдущего абзаца, у меня есть несколько выходов:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;- Отставить всё, как есть, и продолжать выкладывать видео на этом же канале\хостинге. Плюсы - делать ничего не нужно, минусы - видео будут удалять, а я не всегда сохраняю их у себя.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;- Сменить видеохостинг. Плюсы - если это будет какой-нибудь VK, то видео вряд ли будут удалять. Минусы - нужно будет по-новой заполнять весь канал.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;- Вести только блог. Статьи&amp;nbsp;+ картинки. Плюсы - вряд ли удалят. Минусы - займёт много времени, не так интересно читателю.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ваши варианты - в комментарии.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;----------------------------------------&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вопросы? Пожелания? Предложения?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вот как можно со мной связаться:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Email: 00 keng [at] gmail [dot] com&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;VK: kekekeng&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Twitter: @ultrakeng&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Telegram: @remizovm&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;----------------------------------------&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/6979372819671624919/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2016/02/youtube.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/6979372819671624919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/6979372819671624919'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2016/02/youtube.html' title='Куда податься с YouTube?'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-8637916558981468043</id><published>2016-01-05T18:50:00.000+03:00</published><updated>2016-01-05T18:53:00.709+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Ассемблер"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Блог снова оживает.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Всем привет!&lt;br /&gt;&lt;br /&gt;У меня вновь появилось свободное время, которое я буду уделять блогу. А чему ещё-то, верно?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;Так вот. На замечательном видеохостинге YouTube начали удалять мои видео совершенно безо всякой на то причины, и это делает меня грустить. Я не знаю, где мне теперь выкладывать новые видео. Если вдруг есть предложения - милости прошу в комментарии или в самый низ любого поста - за обратной связью. Пока что буду вести блог в текстово-картиночном формате, а видео будут (я верю) &lt;br /&gt;выкладываться в официальной группе GameHackLab ВКонтакте: &lt;br /&gt;&lt;br /&gt;&lt;b&gt;[&lt;a href=&quot;http://vk.com/gamehacklab&quot;&gt;http://vk.com/gamehacklab&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;А пока что у меня есть исключительно две задумки:&lt;br /&gt;&lt;br /&gt;- Дальше топаем по рубрике &quot;Перезагрузка. Ассемблер.&quot;&lt;br /&gt;- Берём C++ и пишем свой движок для трейнеров с музыкой и менюшкой&lt;br /&gt;&lt;br /&gt;Такие вот планы.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;---------------------------------------- &lt;br /&gt;Вопросы? Пожелания? Предложения? &lt;br /&gt;Вот как можно со мной связаться: &lt;br /&gt;&lt;b&gt;[&lt;a href=&quot;mailto:00keng@gmail.com&quot;&gt;email&lt;/a&gt;]&lt;br /&gt;[&lt;a href=&quot;http://adf.ly/1Oc4F8&quot;&gt;vk&lt;/a&gt;]&lt;br /&gt;[&lt;a href=&quot;http://adf.ly/1Oc4IP&quot;&gt;twitter&lt;/a&gt;]&lt;br /&gt;[&lt;a href=&quot;http://adf.ly/1Oc4SS&quot;&gt;telegram&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;----------------------------------------&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/8637916558981468043/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2016/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/8637916558981468043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/8637916558981468043'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2016/01/blog-post.html' title='Блог снова оживает.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-6903659243985657287</id><published>2015-09-20T19:51:00.000+03:00</published><updated>2015-09-21T00:25:08.261+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OllyDbg"/><category scheme="http://www.blogger.com/atom/ns#" term="Ассемблер"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Перезагрузка. Ассемблер. Часть 3. Знакомимся с отладчиком.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Оглавление:&lt;br /&gt;----------&lt;br /&gt;Часть 0. &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MKR1r&quot;&gt;Установка и настройка&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 1. &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpQSv&quot;&gt;Пишем первую программу&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 2. &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MsMyB&quot;&gt;Как работает процессор и что такое регистры&lt;/a&gt;]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Часть 3. &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1Oc3hX&quot;&gt;Знакомимся с отладчиком&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------&lt;br /&gt;Весь исходный код можно взять &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpPzK&quot;&gt;тут&lt;/a&gt;]&lt;/b&gt;.&lt;br /&gt;------------------------------------&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Привет, блога моего читатели!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Сегодня у нас будет чуть более практическая тема статьи. Я уже немного рассказал о том, как работает процессор и что такое регистры. Если коротко подвести итог, то процессор - тупая считалка. Ему нужно сказать, где брать код программы (по какому адресу), а затем он начнет выполнять этот код построчно, команда за командой, буква за буквой. Сам код (программа) при этом загружен в оперативную память компьютера. Чтобы каждый раз не загружать программу с диска в память и не указывать глупому процессору, откуда начинать исполнять программу, нужна операционная система. А вы думали, что в игры играть? Не-а. Так вот. Раньше программы писали путем переключения выключателей (0 и 1), затем - выбивая дырочки на перфокартах (те же 0 и 1) и скармливая стопки этих перфокарт компьютеру, а потом произошло чудо чудное и придумался язык ассемблера - *мнемоническая* запись команд процессора в форме, понятной для человека. После этого стали появляться более крутые (высокоуровневые) языки вроде фортрана или алгола, си, паскаля и так далее. Чем дальше в лес - тем сильнее ощущалась нужда в возможности контролировать ход выполнения программы, потому что эти самые программы становились все больше и сложнее. С этой мыслью программисты того времени придумали инструмент под названием отладчик - специальную программу, позволяющую контролировать ход исполнения другой программы. Эдакий воспитатель в детском саду - тут играть можно, еще можно кашу, а Машу за косички подергать - нельзя, и песком кидаться в Витю тоже нельзя.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;В рамках этой серии статей мы будем рассматривать мой любимый отладчик (на самом деле, они не очень сильно друг от друга отличаются - принцип работы у всех одинаковый) под названием Olly Debugger. Скачать его можно или на официальном &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1Oc4zc&quot;&gt;сайте&lt;/a&gt;]&lt;/b&gt; или где-нибудь еще в интернете. На момент написания этой статьи используемая мной версия - 2.01. Скачиваем архив, распаковываем куда-нибудь и - это важно! - запускаем с правами администратора. Вот оно, окошко:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwSaYAX3WSDJ2M4ribFeYsyrGawG6Ep_bKzpdbFOOzMHJvXuXweSSYIvUx7lVNlHDo84CCGUbvoLmAUMOHy05HFCbFHaR_Py-A6jbDCsoR-qXng6HVEHEoPfh0nj3XnUv7T4HYJu4mhyphenhyphenYf/s1600/0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwSaYAX3WSDJ2M4ribFeYsyrGawG6Ep_bKzpdbFOOzMHJvXuXweSSYIvUx7lVNlHDo84CCGUbvoLmAUMOHy05HFCbFHaR_Py-A6jbDCsoR-qXng6HVEHEoPfh0nj3XnUv7T4HYJu4mhyphenhyphenYf/s320/0.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Как и у практически любой другой программы Windows, у этой тоже есть меню. Помните программу из предыдущих статей, которая выводит на экран сообщение? Ищем ее в скомпилированном виде и открываем в отладчике через его меню (File -&amp;gt; Open):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjgKrkf4H0_i18jYB43qdgCyT1R9i2pr6GBu6BOGT-QjBffU1Do0laWa43FyOUKuav8M-roZZhqCCq1ytxuFC5PuIqktlZ0v2sg1M-PD0OnhH6GGwPgbgIAc1hWqJG6qRbECEJ1zK-rIQ3/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjgKrkf4H0_i18jYB43qdgCyT1R9i2pr6GBu6BOGT-QjBffU1Do0laWa43FyOUKuav8M-roZZhqCCq1ytxuFC5PuIqktlZ0v2sg1M-PD0OnhH6GGwPgbgIAc1hWqJG6qRbECEJ1zK-rIQ3/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вот это да, как много всего! Давайте по часовой стрелки, начиная с верхнего-левого угла. Там у нас вот такое:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CPU Disasm&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Address &amp;nbsp; Hex dump &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Command &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Comments&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401000 &amp;nbsp;/$ &amp;nbsp;6A 00 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PUSH 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ; /Type = MB_OK|MB_DEFBUTTON1|MB_APPLMODAL&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401002 &amp;nbsp;|. &amp;nbsp;6A 00 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PUSH 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ; |Caption = NULL&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401004 &amp;nbsp;|. &amp;nbsp;E8 0E000000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CALL 00401017 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;; |Text = &quot;j&quot;, jump over immediate data&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401009 &amp;nbsp;|. &amp;nbsp;48 65 6C 6C 6F 2C &amp;nbsp;ASCII &quot;Hello, World!&quot;,0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;; |ASCII &quot;Hello, World!&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401017 &amp;nbsp;|&amp;gt; &amp;nbsp;6A 00 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PUSH 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ; |hOwner = NULL&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401019 &amp;nbsp;|. &amp;nbsp;FF15 80204000 &amp;nbsp; &amp;nbsp; &amp;nbsp;CALL DWORD PTR DS:[&amp;lt;&amp;amp;USER32.MessageBoxA&amp;gt; ; \USER32.MessageBoxA&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;0040101F &amp;nbsp;|. &amp;nbsp;6A 00 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PUSH 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ; /ExitCode = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401021 &amp;nbsp;\. &amp;nbsp;FF15 60204000 &amp;nbsp; &amp;nbsp; &amp;nbsp;CALL DWORD PTR DS:[&amp;lt;&amp;amp;KERNEL32.ExitProces ; \KERNEL32.ExitProcess&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Это - дизассемблированный код отлаживаемой программы. Он немного косой-кривой, но похож на то, что мы писали. Почему он косой-кривой? Потому что когда их исходного кода программы делается исполняемый файл - обратно в исходный код его уже не размотаешь, так что его можно только дизассемблировать - то есть прочитать и из каждого символа попытаться сделать ассемблерную команду, соответствующую этому символу. По факту, все языки программирования в конечном итоге сводятся к ассемблеру, так что на каком бы языке изначально ни была написана программа - всегда можно ее дизассемблировать.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Я разберу одну строчку, а дальше станет немного понятней:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;00401000 6A 00 PUSH 0 ; /Type = MB_OK|MB_DEFBUTTON1|MB_APPLMODAL&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Итак, 00401000 - это адрес в 16-ричной системе счисления, где команда находится в оперативной памяти. Ну, грубо говоря. Адрес этот очень нужно знать глупому процессору, потому что сам он никогда не поймет, откуда ему нужно начинать выполнять код.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;6A 00 - это то, как команда выглядит в исполняемом файле, в уже скомпилированном виде. Человеку такое запоминать трудновато, так что для него придумали вот это:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;То есть мнемонику - форму записи, которую легче понять и запомнить. После точки с запятой идет комментарий, то есть в последней колонке таблицы.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Так, вроде немного разобрались. Переходим к следующему окну, которое верхнее-правое. В нем представлены регистры процессора и то, что в них сейчас находится. Еще там же представлены флаги - они показывают, что что-нибудь 0 или 1, например - если в результате последнего сравнения получилась истина. Или если при делении получился ноль. Специальные такие штуки.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ниже, под окном команд, находится окно дампа. Это - данные программы. Если сверху - код, то снизу - то, с чем этот код работает. Цифры, буквы, строки текста, картинки и все такое прочее. Все это лежит в оперативной памяти.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Снизу-справа - самая страшная штука, про которую я еще не писал толком. Называется она стек (англ. stack). Это такая область в процессоре, где могут храниться данные. Обычно - промежуточные по ходу работы программы, тогда как более &quot;долгоиграющие&quot; лежат в оперативной памяти. При работе со стеком нужно запомнить порядок, как в него попадают данные и как они из него выходят обратно. Все помнят вот такую офигенскую штуку из детского сада?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2yPuUJ7m8kQVSYTYtU27MHiqMeKZ7SVQiK0ANoPbbDmePiSEIId6_KTaHnWMSwP9hFkfuwOy_1CZQqyAhTvvGpPsqxsVv779CAGGlZNxLL12nYhWArbQWZNlhmGUqVF2VsZMIy612uMzn/s1600/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2yPuUJ7m8kQVSYTYtU27MHiqMeKZ7SVQiK0ANoPbbDmePiSEIId6_KTaHnWMSwP9hFkfuwOy_1CZQqyAhTvvGpPsqxsVv779CAGGlZNxLL12nYhWArbQWZNlhmGUqVF2VsZMIy612uMzn/s320/2.jpg&quot; width=&quot;269&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Дык вот. У нас есть вершина стека (кстати, есть даже специальный регистр процессора, который постоянно указывает на вершину стека - ESP). Мы можем положить данные на вершину и снять с вершины. Только так. Смотрим на картинку с игрушкой. Чтобы снять нижнее, самое большое кольцо с палки, нужно сначала снять все, что выше. Но при этом нижнее колько на палку попало первым. Вот тут так же. Есть две основные команды для работы со стеком - PUSH и POP. Первая кладет, вторая вытаскивает. Примерно так:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 0 (|-&amp;gt; 0 )&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 1 (|-&amp;gt; 1 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 2 (|-&amp;gt; 2 1 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;POP EAX (|-&amp;gt; 1 0, в EAX при этом теперь лежит 2)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH EAX (|-&amp;gt; 2 1 0, да, в стек можно засунуть содержимое регистра)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 25 (|-&amp;gt; 25 2 1 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;POP EBX (|-&amp;gt; 2 1 0, EBX=25)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;POP ECX (|-&amp;gt; 1 0, ECX=2)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Обычно через стек передаются аргументы функций, то есть ее параметры. Например, в нашей программе вызывается функция MessageBox, которая показывает окошко. В исходном коде нашей программы вызов этой функции выглядел так:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;invoke MessageBox,HWND_DESKTOP,&quot;Hello, World!&quot;,0,MB_OK&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;invoke - это специальный макрос, позволяющий вот так просто, в одну строчку, вызывать функцию и сообщить нужные аргументы.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;MessageBox - имя (адрес!) функции.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Все, что дальше идет - это аргументы.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;В отладчике у нас нет никаких макросов и прочих удобств, там все сурово:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 0 ; Это MB_OK&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 0 ; Это указатель на текстовую строку-заголовок, ее у нас нет.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 123321 ; Это указатель на текстовую строку-сообщение.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 0 ; Это HWND_DESKTOP, идентификатор окна-владельца сообщения&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CALL MessageBoxA ; Это сам вызов функции&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Как видите, в суровом варианте аргументы кладутся на стек по одному, причем в обратном порядке, а не так, как мы записываем в случае с invoke. Invoke при компиляции делает ровно одно - &quot;разворачивается&quot; в набор push и call. Итак, чтобы вызвать функцию, нужно положить на стек аргументы (в обратном порядке!), если они есть, а потом вызывать функцию через call.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Такие дела. Посмотрим, как это выглядит вживую? Конечно, посмотрим! Сейчас наша программа &quot;поставлена на паузу&quot; и отладчик ждет каких-то дальнейших указаний. Мы можем &quot;проиграть&quot; программу по шагам и посмотреть, что с ней происходит. Для этого у нас есть замечательная кнопка F8, позволяющая сделать один &quot;шажок&quot; (выполнить одну инструкцию), при этом &quot;перепрыгивая&quot; вызовы других процедур (call, например). Иначе отладчик &quot;провалится&quot; внутрь этой процедуры и начнет показывать код, который там внутри. Итак, видим команду:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;PUSH 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Что она делает? Она кладет 0 на вершину стека. Смотрим на стек - в самой верхней строчке лежит какая-то непонятная фигня. Давим F8! Получаем вот такую картину:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji4C3atXglBODGXHk8Bffq7i3rCkPCKFoRk_uEkvNmxsO3cDxbf4wfkID8OFjiBhRazgduk6AsoILce6vGBjjZhhhiv7iHTjWLh_h_mtiKAPOZtiFjeVMTSFJfQmsZ1SKx8v1NEMBK_XMg/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji4C3atXglBODGXHk8Bffq7i3rCkPCKFoRk_uEkvNmxsO3cDxbf4wfkID8OFjiBhRazgduk6AsoILce6vGBjjZhhhiv7iHTjWLh_h_mtiKAPOZtiFjeVMTSFJfQmsZ1SKx8v1NEMBK_XMg/s320/3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Процессор проехал на одну команду вниз, выполнив предыдущую, а на вершине стека оказался ноль. Круто? Еще как круто! Давим F8 еще пару раз, выскакивает наше сообщение, жмем в нем OK и на этом программа завершается, о чем нам и сообщает отладчик в строке состояния (Process terminated, exit code 0). Кстати, код возврата мы задаем при вызове функции ExitProcess, единственным ее аргументом. Так-то!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Пока что - на этом все. Можно выбрать в меню Debug-&amp;gt;Restart, а можно найти какую-нибудь другую программу и попробовать посмотреть в отладчике на нее. В следующей статье я покажу, как можно при помощи отладчика исправить самый настоящий БАГ. :)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;---------------------------------------- &lt;br /&gt;Вопросы? Пожелания? Предложения? &lt;br /&gt;Вот как можно со мной связаться: &lt;br /&gt;&lt;b&gt;[&lt;a href=&quot;mailto:00keng@gmail.com&quot;&gt;email&lt;/a&gt;]&lt;br /&gt;[&lt;a href=&quot;http://adf.ly/1Oc4F8&quot;&gt;vk&lt;/a&gt;]&lt;br /&gt;[&lt;a href=&quot;http://adf.ly/1Oc4IP&quot;&gt;twitter&lt;/a&gt;]&lt;br /&gt;[&lt;a href=&quot;http://adf.ly/1Oc4SS&quot;&gt;telegram&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;----------------------------------------&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/6903659243985657287/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/09/3.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/6903659243985657287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/6903659243985657287'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/09/3.html' title='Перезагрузка. Ассемблер. Часть 3. Знакомимся с отладчиком.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwSaYAX3WSDJ2M4ribFeYsyrGawG6Ep_bKzpdbFOOzMHJvXuXweSSYIvUx7lVNlHDo84CCGUbvoLmAUMOHy05HFCbFHaR_Py-A6jbDCsoR-qXng6HVEHEoPfh0nj3XnUv7T4HYJu4mhyphenhyphenYf/s72-c/0.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-7130142700866489463</id><published>2015-08-17T21:27:00.003+03:00</published><updated>2015-09-21T00:20:52.607+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ассемблер"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Перезагрузка. Ассемблер. Часть 2. Как работает процессор и что такое регистры.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Оглавление:&lt;br /&gt;----------&lt;br /&gt;Часть 0.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MKR1r&quot;&gt;Установка и настройка&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 1.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpQSv&quot;&gt;Пишем первую программу&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 2.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MsMyB&quot;&gt;Как работает процессор и что такое регистры&lt;/a&gt;]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Часть 3.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1Oc3hX&quot;&gt;Знакомимся с отладчиком&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------&lt;br /&gt;Весь исходный код можно взять&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpPzK&quot;&gt;тут&lt;/a&gt;]&lt;/b&gt;.&lt;br /&gt;------------------------------------&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Скучали? Я - да. :)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Глядите картинку:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIckLNpP9ZvD69mTj74pRoM6m5rd0OXLNwPmPfwg7CO5FmRktRjF0Ldd1tFeRgtBG9HVurrOezuA9hX9I0_9OaV4LtTlx6OwTnIpgiEoagR3svG7-_9hubcGu6t0yCdh7ZsfopnloT5VG/s1600/1339388829-2084017.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIckLNpP9ZvD69mTj74pRoM6m5rd0OXLNwPmPfwg7CO5FmRktRjF0Ldd1tFeRgtBG9HVurrOezuA9hX9I0_9OaV4LtTlx6OwTnIpgiEoagR3svG7-_9hubcGu6t0yCdh7ZsfopnloT5VG/s320/1339388829-2084017.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Эта штучка, если вдруг кто не знает, называется Центральный Процессор. И эта штучка помогает компьютеру делать то, что он делает - складывать цифры.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Спросите, нафига я это рассказываю? А рассказываю я это затем, что в прошлой статье мы вызвали пару WinAPI функций, которыми (на самом деле!) дело не ограничивается. Еще возможно, что вы прочитали в какой-нибудь умной книжке про то, что в процессоре есть регистры, а на ассемблере можно с ними как-то взаимодействовать. Дык вот, это - правда. Регистры есть. Что это за слово вообще такое? Представьте себе, что процессор - маленький и слабый, но очень быстро и хорошо думает. Типичный ботаник, в общем. Он не может унести с собой сразу много учебников, но быстро решает задачи, которые в них написаны. Вот регистры - и есть эти самые &quot;учебники&quot;. Это просто небольшие места в процессоре, где тот может сохранить какие-то данные, чтобы с ними что-то сделать. Сложить, умножить, из регистра в регистр переставить. Вот картинка:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv-8cwBaWR0_PgN55OBz7IlQEcvVuQtWXCttXZLVhJk2Z3TauMlQ6RkVz1qZ4L_kAEa_CgCC759eI1U9XZNiR8KIAniG7d5qUT6C5xk7M8G04Piel1Ui06kLqtBP5tMGl-4bJwKkh3zxlA/s1600/Register386.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;273&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv-8cwBaWR0_PgN55OBz7IlQEcvVuQtWXCttXZLVhJk2Z3TauMlQ6RkVz1qZ4L_kAEa_CgCC759eI1U9XZNiR8KIAniG7d5qUT6C5xk7M8G04Piel1Ui06kLqtBP5tMGl-4bJwKkh3zxlA/s320/Register386.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Ячейки на таблице (все, кроме EFLAGS) - это регистры. EAX, EBX, ECX и так далее.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Теперь немножко о том, почему они так называются. Слышали когда-нибудь такое слово, как &quot;разрядность&quot;? 8 бит, 16 бит, 32 бита, 64 бита. Последние два еще часто любят звать x32 и x64. Встречаем, Intel 8086:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyoXpIggGvw344f80FtcDnTIylcQfdQtfMFLMKBeIMVLA1Rkq6ftC2Wb1RGshjniAYvZiQlCvWNuuU_5EE73QU5G5V-ic2PfFjtvNhaobE6d5Lt5G4ZY6qyssuTfrJM3UbEmyyawnkuQeZ/s1600/KL_Intel_D8086.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;163&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyoXpIggGvw344f80FtcDnTIylcQfdQtfMFLMKBeIMVLA1Rkq6ftC2Wb1RGshjniAYvZiQlCvWNuuU_5EE73QU5G5V-ic2PfFjtvNhaobE6d5Lt5G4ZY6qyssuTfrJM3UbEmyyawnkuQeZ/s320/KL_Intel_D8086.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;А именно, первый в мире 16-битный микропроцессор. 16-битный значит, что регистры его могут в себя вместить 16 бит каждый, не больше. То есть по 2 байта. от 0x0000 до 0xFFFF в 16-ричной же системе счисления. Вот картинка с его регистрами:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxCkJlNWFr_ihkU2WK8WLpdT4WB7eArP-808eDuyMcyWqQiN8vFE-raa_VLUy0gU4bfvifuKxXYZKIcUF3wEt3bqQRGHtX7coP1yNVMzkdyMWiYdgHxe6AtaoZaBeABGhU8iOfzvtGSCp0/s1600/Register_8086.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;204&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxCkJlNWFr_ihkU2WK8WLpdT4WB7eArP-808eDuyMcyWqQiN8vFE-raa_VLUy0gU4bfvifuKxXYZKIcUF3wEt3bqQRGHtX7coP1yNVMzkdyMWiYdgHxe6AtaoZaBeABGhU8iOfzvtGSCp0/s320/Register_8086.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Как вы уже давно заметили, у него в именах регистров отсутствует буква &quot;E&quot;. Кстати, буквы H и L означают High и Low, и относятся к половинкам регистров - верхние 8 бит (от 15 до 8) и нижние (от 7 до 0).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Давайте рассмотрим регистры (хотя бы основные) по порядку:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;AX - регистр, выполняющий роль основного хранилища данных.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;BX - в этом регистре когда-то давно содержался адрес начала исходного кода программы в памяти компьютера.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;CX - регистр-счетчик, благодаря которому можно делать циклы.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;DX - дополнительное хранилище данных, если в AX все не влезло. &lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Но, как я уже сказал, это регистры общего назначения, так что можно их использовать, как захочется. По сути, можно положить в один регистр число 2, в другой число 5, а затем заставить процессор сложить их. И положить результат куда-нибудь еще, например, в третий регистр. Круто? Неимоверно!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Возвратимся немного к современному миру. Мы (пока что) будем рассматривать только 32-битный ассемблер, так что наш потолок - 32-разрядные регистры. Это те, в именах которых есть буква &quot;йе&quot;. Она происходит от сокращения с английского &quot;Extended&quot; - &quot;Расширенный&quot;. Угадали, ага. Это дополнительные 16 бит пространства, так что всего в 32-разрядный регистр влезет аж 32 бита, или 4 байта данных.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Уф! Думаю, хватит пока что теории. В следующей статье мы посмотрим на все эти регистры с практической точки зрения, а заодно узнаем, как исправлять в нашей программе ошибки и выяснять, как вообще она работает. Оставайтесь у своих экранов!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;----------------------------------------&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;Вопросы? Пожелания? Предложения?&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;Вот как можно со мной связаться:&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;mailto:00keng@gmail.com&quot;&gt;email&lt;/a&gt;]&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4F8&quot;&gt;vk&lt;/a&gt;]&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4IP&quot;&gt;twitter&lt;/a&gt;]&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4SS&quot;&gt;telegram&lt;/a&gt;]&lt;/span&gt;&lt;/b&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;----------------------------------------&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/7130142700866489463/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/08/2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/7130142700866489463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/7130142700866489463'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/08/2.html' title='Перезагрузка. Ассемблер. Часть 2. Как работает процессор и что такое регистры.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUIckLNpP9ZvD69mTj74pRoM6m5rd0OXLNwPmPfwg7CO5FmRktRjF0Ldd1tFeRgtBG9HVurrOezuA9hX9I0_9OaV4LtTlx6OwTnIpgiEoagR3svG7-_9hubcGu6t0yCdh7ZsfopnloT5VG/s72-c/1339388829-2084017.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-8423723707012169817</id><published>2015-08-16T19:11:00.001+03:00</published><updated>2015-09-21T00:21:01.748+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ассемблер"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Перезагрузка. Ассемблер. Часть 1. Пишем первую программу.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Оглавление:&lt;br /&gt;----------&lt;br /&gt;Часть 0.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MKR1r&quot;&gt;Установка и настройка&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 1.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpQSv&quot;&gt;Пишем первую программу&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 2.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MsMyB&quot;&gt;Как работает процессор и что такое регистры&lt;/a&gt;]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Часть 3.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1Oc3hX&quot;&gt;Знакомимся с отладчиком&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------&lt;br /&gt;Весь исходный код можно взять&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpPzK&quot;&gt;тут&lt;/a&gt;]&lt;/b&gt;.&lt;br /&gt;------------------------------------&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Соскучились? Сегодня приступим к практике и напишем нашу первую программу на ассемблере. :)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Посвящается тем бессмертным героям, что сумели осилить предыдущую статью и теперь с выжиданием созерцают пустое окошко примерно такого вида:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD8CdptniGRIudZU5rl0HiwQfj-bulNf0p2_aeVgMSTtSP4T_N7ciAOiEpQ7kLlp6Ui_GtrtF1lLndv1vjevIdiSXW-V1LsWwBRxgK1JK-3zcX4aemERTU5mqwGQjmWi017g4EisBcZ95A/s1600/0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD8CdptniGRIudZU5rl0HiwQfj-bulNf0p2_aeVgMSTtSP4T_N7ciAOiEpQ7kLlp6Ui_GtrtF1lLndv1vjevIdiSXW-V1LsWwBRxgK1JK-3zcX4aemERTU5mqwGQjmWi017g4EisBcZ95A/s1600/0.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;А теперь резко берем и пишем туда:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRjAgTgYtP_dgVzsXGWqkE7FepHPS0tch1p9AS_k0m9V-8toY4-WJ3BocF2q0tiK6sPokWHz6k2MpnZhShVpksu7A9phQYqKQk67YeDvRYST21fyun_3WvBKyJfICyf56rD1lBIGqkivgt/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRjAgTgYtP_dgVzsXGWqkE7FepHPS0tch1p9AS_k0m9V-8toY4-WJ3BocF2q0tiK6sPokWHz6k2MpnZhShVpksu7A9phQYqKQk67YeDvRYST21fyun_3WvBKyJfICyf56rD1lBIGqkivgt/s320/2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Написали? Тыкаем меню Run-&amp;gt;Run, или же просто F9. Результат:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD_EgORkiOUYvlqRw2h2IFlAsfInJwgbuNgwTvvWLHpsFM9uPFbvwJ50Y4ZaLFiUJF8kBqGSat6RjMjq0xeZSBIRfZLLjGgw7rWV_310ysD-RGg70gNb3okqpIE79LLSTJ0Bada1vJpMwn/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD_EgORkiOUYvlqRw2h2IFlAsfInJwgbuNgwTvvWLHpsFM9uPFbvwJ50Y4ZaLFiUJF8kBqGSat6RjMjq0xeZSBIRfZLLjGgw7rWV_310ysD-RGg70gNb3okqpIE79LLSTJ0Bada1vJpMwn/s1600/3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Круто? Конечно, круто! Давайте разбираться с этими страшными шестью строчками кода по порядку:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;include &#39;%include%/win32ax.inc&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Самая первая строчка говорит, что в этот исходный файл нужно включить еще один. Include - это, собственно, включить, а дальше идет имя файла в одинарных кавычках. Файлы эти лежат в папке include там, где установлен компилятор flat assembler (см. предыдущую статью), а нам сейчас нужен win32ax.inc. В нем объявлены всякие нужные и важные штуки, про которые нам сейчас знать не обязательно, но потом - обязательно узнаем, так что не переживайте. Пока что можно думать, что файл этот нужен и без него ну вот никак. Идем дальше:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;.code&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Это - название так называемой секции. На самом деле, как мы узнаем в будущем, EXE файлы Windows имеют определенный формат, а именно - PE, или Portable Executable, и состоит он из секций. В одной секции хранится код, в другой - данные, в третьей - ресурсы (иконки всякие и картинки). Догадались? У нас сейчас одна секция и в ней - код, судя по названию. Название, на самом деле, любое может быть.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;start:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Start - это как на беговой дорожке на стадионе, отсюда начинать бежать нужно. По-умному это место называется &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpMg6&quot;&gt;точкой входа&lt;/a&gt;]&lt;/b&gt;. Когда мы тыкаем мышью на EXE-файле с желанием его запустить, Windows по сути просто копирует его в оперативную память, находит адрес точки входа и командует процессору - иди туда и начинай выполнять код. Вот и все.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;invoke MessageBox,HWND_DESKTOP,&quot;Hello, World!&quot;,0,MB_OK&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;О, начинается код! Тут - самая интересная часть. Этой строчкой мы вызываем функцию, да не просто функцию, а функцию &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpN6P&quot;&gt;WinAPI&lt;/a&gt;]&lt;/b&gt;. Что это за WinAPI такое? Это - набор функций (небольших программ), которые позволяют произвести определенное действие, больше они ничего не делают. Функция &quot;открыть дверь&quot;, функция &quot;налить борща&quot;, функция &quot;поспать&quot;. И вот точно так же - функция &quot;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpNFw&quot;&gt;показать окно с сообщением&lt;/a&gt;]&lt;/b&gt;&quot;. Функции могут принмать параметры, которые называются аргументами, а так же могут возвращать результат. Чаще всего - ноль или не ноль, то есть результат своей работы. Почему так просто? Потому что эта штука существует уже лет 20, а 20 лет назад не было возможностей толком повыпендриваться. Разберем эту строчку еще подробнее:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;invoke&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Специальная команда, говорящая &quot;выполни команду!&quot;. За ней обычно следует имя функции. На самом деле является &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpNdl&quot;&gt;макросом&lt;/a&gt;]&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;MessageBox&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Встречаем - имя WinAPI-функции! По нему, немного приноровившись, можно легко определить, что функция делает.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;HWND_DESKTOP,&quot;Hello, World!&quot;,0,MB_OK&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;После названия функции обычно идут ее аргументы. Тут у нас их аж четыре штуки:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;HWND_DESKTOP&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Идентификатор окна рабочего стола. Вы думали, что Windows просто так называется Windows (окна)? А вот и нет! На самом деле, в ней ВСЁ - это окна! В том числе и рабочий стол. А чтобы не путаться, у каждого окна есть свой идентификатор, который по факту - просто набор цифр. Идентификатор этот часто называют хэндлом (от английского handle). Так что непонятные буквосочетания в названии идентификатора - HWND - это Handle Window. При компиляции программы компилятор, как самый умный из присутствующих, находит, что на самом деле значит HWND_DESKTOP и заменяет его цифрой-идентификатором. А мы можем писать имя, потому что так понятнее и так проще запоминается.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Текст, который будет показывать нам окно. Прям вот текст и все.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Заголовок, вместо которого я написал 0, так что его там не будет. Можно написать что-нибудь в кавычках и посмотреть на эффект.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;MB_OK&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Эта штука определяет, каким будет окно сообщения. Да-да, они бывают разные. Список возможных можно найти по ссылке чуть выше, там где описание функции. Сейчас у нас будет просто кнопка &quot;ОК&quot;.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Уф! С первой строчкой кое-как разобрались. Осталось немного:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;invoke ExitProcess,0&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Знакомо? Смутно, но что-то припоминается. Вызываем функцию командой invoke, функция называется &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpOo1&quot;&gt;ExitProcess&lt;/a&gt;]&lt;/b&gt; и принимает один-единственный аргумент, в нашем случае - ноль. Почему ноль? Потому что если программа, завершившись, показывает операционной системе ноль, значит все хорошо - так она думает. Значит завершилась она нормально и без ошибок. А функция сама, как я уже написал, завершает выполнение программы, в результате чего та закрывается.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Последняя строчка осталась:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;.end start&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Строчка эта всего-навсего показывает, где закончилась точка входа в программу. Почему так? Сейчас, в самом простеньком примере, у нас в программе всего одна секция и всего шесть строчек кода. На самом же деле написать можно очень по-разному (и я покажу, как!), а весь код программы может быть неудобно писать в один присест и в одном файле. А еще секций может быть много, ага. В общем, строчка нужная, чтобы никто не запутался.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ну как? Трудно? Великие гуру всю жизнь твердили вам, что освоить ассемблер - дело избранных и что он невообразимо сложен? Как бы не так! В современном мире и под Windows все сводится к вызову тех или иных WinAPI-функций в нужном порядке и с нужными аргументами. Ничего больше. Серьезно. А вызывать эти функции можно хоть на ассемблере, хоть на Си, хоть на Паскале. Вот так вот!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;А вот и &lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpQhE&quot;&gt;полный исходный код&lt;/a&gt;]&lt;/b&gt; программы из статьи. :)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;----------------------------------------&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;Вопросы? Пожелания? Предложения?&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;Вот как можно со мной связаться:&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;mailto:00keng@gmail.com&quot;&gt;email&lt;/a&gt;]&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4F8&quot;&gt;vk&lt;/a&gt;]&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4IP&quot;&gt;twitter&lt;/a&gt;]&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4SS&quot;&gt;telegram&lt;/a&gt;]&lt;/span&gt;&lt;/b&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;----------------------------------------&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/8423723707012169817/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/08/1.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/8423723707012169817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/8423723707012169817'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/08/1.html' title='Перезагрузка. Ассемблер. Часть 1. Пишем первую программу.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD8CdptniGRIudZU5rl0HiwQfj-bulNf0p2_aeVgMSTtSP4T_N7ciAOiEpQ7kLlp6Ui_GtrtF1lLndv1vjevIdiSXW-V1LsWwBRxgK1JK-3zcX4aemERTU5mqwGQjmWi017g4EisBcZ95A/s72-c/0.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-1324812747164766246</id><published>2015-08-09T11:17:00.002+03:00</published><updated>2015-09-21T00:21:14.536+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ассемблер"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Перезагрузка. Ассемблер. Часть 0. Установка и настройка.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Оглавление:&lt;br /&gt;----------&lt;br /&gt;Часть 0.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MKR1r&quot;&gt;Установка и настройка&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 1.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpQSv&quot;&gt;Пишем первую программу&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;Часть 2.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MsMyB&quot;&gt;Как работает процессор и что такое регистры&lt;/a&gt;]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Часть 3.&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1Oc3hX&quot;&gt;Знакомимся с отладчиком&lt;/a&gt;]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------&lt;br /&gt;Весь исходный код можно взять&amp;nbsp;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/1MpPzK&quot;&gt;тут&lt;/a&gt;]&lt;/b&gt;.&lt;br /&gt;------------------------------------&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ребята, всем привет!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Это - нулевой пост из рубрики постов про Ассемблер для самых начинающих. В нем я покажу, причем не просто покажу, а с картинками, как установить и настроить все необходимое для начала изучения.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вам не понадобится ни тайных знаний математики, ни опыта программирования, хотя и то и другое как следует приветствуется и лишним никогда не будет.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Поехали! По пунктам:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;0. Открываем в браузере сайт - &lt;b&gt;[&lt;a href=&quot;http://adf.ly/92Mld&quot;&gt;http://flatassembler.net/&lt;/a&gt;&lt;/b&gt;&lt;b&gt;]&lt;/b&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSgVr_ZhLaXr0_b4woS2OKorViBwashe9GBK2Wbgr_fo_SP4TKOe5FXvXL-eDIZkZ-VlOosxANle3a0DyawQ4gMwvE6r_y7xBNgooGNk7MNrOzS195MvJ2R3Zg8bBXK9RsvFvXkYF08Oi4/s1600/0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;234&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSgVr_ZhLaXr0_b4woS2OKorViBwashe9GBK2Wbgr_fo_SP4TKOe5FXvXL-eDIZkZ-VlOosxANle3a0DyawQ4gMwvE6r_y7xBNgooGNk7MNrOzS195MvJ2R3Zg8bBXK9RsvFvXkYF08Oi4/s320/0.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;1. Идем в раздел &quot;&lt;b&gt;Download&lt;/b&gt;&quot; и выбираем &quot;&lt;b&gt;flat assembler for Windows&lt;/b&gt;&quot;:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwWKOSj74FBWqoe-p0OktXREcL7V_Vra9MEwevXAefjEXf47gb-Ef8_3589AYqa5AVYxQUJBcgI7qeXCdVPYL4_D5Jl2t6HlL9KfeST7MuN0m3oWjuGyCMDQVC0DObmKK-GQuG_oX4z_m2/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;234&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwWKOSj74FBWqoe-p0OktXREcL7V_Vra9MEwevXAefjEXf47gb-Ef8_3589AYqa5AVYxQUJBcgI7qeXCdVPYL4_D5Jl2t6HlL9KfeST7MuN0m3oWjuGyCMDQVC0DObmKK-GQuG_oX4z_m2/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;2. Распаковываем скачанный архив куда-нибудь. У меня получилось так:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWrIYD6wKv8-4Pi7Wvin31bNWZO0BZhXEaYny02f4ck6gViT92Bu5Rj1iTvD-12ZMregQb3DFLJI56WvvwOUXnnYFK6V87aOn8T8DiBKu1L2RGean56GAmCynzGDHVwTFVzR6uCkZp6gFQ/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWrIYD6wKv8-4Pi7Wvin31bNWZO0BZhXEaYny02f4ck6gViT92Bu5Rj1iTvD-12ZMregQb3DFLJI56WvvwOUXnnYFK6V87aOn8T8DiBKu1L2RGean56GAmCynzGDHVwTFVzR6uCkZp6gFQ/s320/2.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;3. Если по двойному клику на файле &quot;FASMW&quot; у вас открывается вот такое окно:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0YN9OWxpX7ASUWllhV8EKGlihhi4Jxcj74LDNQjPlcb22RJCyoIbhvS_bRPWFU06Z9Ivw2F1LCtRf7aTMNKq7hTfMdKvz9st2As1mB379YgDcnwjXScSzHqst8rnsZUMbNDR9N2gxLaJK/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0YN9OWxpX7ASUWllhV8EKGlihhi4Jxcj74LDNQjPlcb22RJCyoIbhvS_bRPWFU06Z9Ivw2F1LCtRf7aTMNKq7hTfMdKvz9st2As1mB379YgDcnwjXScSzHqst8rnsZUMbNDR9N2gxLaJK/s320/3.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Значит все работает и вы готовы продолжить.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Чуть ниже я покажу дополнительную вещь - для тех (вроде меня), кто любит работать с командной строкой. Итак:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;0. Открываем командную строку. Как? Win+R, &quot;cmd&quot; без кавычек, Enter:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJFvmlWfTAEKtgmPLC3oRHbexTozE3XTUY_UqgpzEYt1lNEEibWdvDa8b53OBZuHtR59B4Qqkc0LByC2aoEOnGzj85VI04jbqfdA6WP9-M-SvTgabkONSGNoFOtXuTgnZEe6cdv_whjxt-/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJFvmlWfTAEKtgmPLC3oRHbexTozE3XTUY_UqgpzEYt1lNEEibWdvDa8b53OBZuHtR59B4Qqkc0LByC2aoEOnGzj85VI04jbqfdA6WP9-M-SvTgabkONSGNoFOtXuTgnZEe6cdv_whjxt-/s320/4.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaCipMk0yvm7qfPygkcGAIbAJR9PexJbDnmxQpcgaU81C4m3B1KrLLPwOVrv8fvr37AhJF2IDbaRi2BYO0MJjzQW97pcJLWPHNFCjZlAJsWxrzBQmYVoT5NhoAxK8lPj8abP1gu2p-YDo5/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaCipMk0yvm7qfPygkcGAIbAJR9PexJbDnmxQpcgaU81C4m3B1KrLLPwOVrv8fvr37AhJF2IDbaRi2BYO0MJjzQW97pcJLWPHNFCjZlAJsWxrzBQmYVoT5NhoAxK8lPj8abP1gu2p-YDo5/s320/5.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Нам необходимо добавить путь к свежескачанному компилятору в системную переменную PATH. Это такая длинная простыня путей, откуда система попытается взять исполняемый файл, который пользователь захочет запустить. Самый первый пример - то, как мы запускали командную строку (Win+R, &quot;cmd&quot;). Вот cmd - это исполняемый файл, ага. Пишем в консоли вот так, держа в уме (или записав на бумажку) путь к папке, куда мы распаковали архив с flat assembler:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdORuiuOmzh-pAGrQp2CgxmFHYbSG5ifXBOO-uIaMYcF3ycvaNrCstfqSsIgZky2X28E4bQHrD8SKW41osLPuIDD0rL89w2ODmgxdm0H9rS2mp7nxTPto8ByKibvYgAifgpJNxbluTM9-R/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdORuiuOmzh-pAGrQp2CgxmFHYbSG5ifXBOO-uIaMYcF3ycvaNrCstfqSsIgZky2X28E4bQHrD8SKW41osLPuIDD0rL89w2ODmgxdm0H9rS2mp7nxTPto8ByKibvYgAifgpJNxbluTM9-R/s320/6.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;И жмем Enter:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_a-xU7ePXjhoLhADJfrrpI1iutalH8vD0kkBCsF6wurKabe2DeoAw7hXjOkWEOpl2r225lO5bNFqfbVcMrCbt7sYIP098CNhY1eusCn9iXktvz87M31IWc5W-axkZKd6Gc4SxUtHmmIK5/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_a-xU7ePXjhoLhADJfrrpI1iutalH8vD0kkBCsF6wurKabe2DeoAw7hXjOkWEOpl2r225lO5bNFqfbVcMrCbt7sYIP098CNhY1eusCn9iXktvz87M31IWc5W-axkZKd6Gc4SxUtHmmIK5/s320/7.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Готово! Только нужно проверить, все ли правильно. Закрываем это консольное окно и открываем новое (Win+R, &quot;cmd&quot;), в котором пишем &quot;fasm&quot; без кавычек и давим Enter:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMWaqfX2ipH_w4cwj5H7u135SAyDoNLvTVAX-g9ikeqcHu4H-UZNfl6S5s1uk2u3wSS51cfqZkjoFi1AUIt91go_GCQuRZ-0XsPdV8iVs8XezduC7hR2msAHqrCUbRdAgkyvsNrUKkLGfs/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMWaqfX2ipH_w4cwj5H7u135SAyDoNLvTVAX-g9ikeqcHu4H-UZNfl6S5s1uk2u3wSS51cfqZkjoFi1AUIt91go_GCQuRZ-0XsPdV8iVs8XezduC7hR2msAHqrCUbRdAgkyvsNrUKkLGfs/s320/8.png&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Если у вас картина примерно так же выглядит, значит все настроено верно, с чем и поздравляю.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;----------------------------------------&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;Вопросы? Пожелания? Предложения?&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;Вот как можно со мной связаться:&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;b&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;mailto:00keng@gmail.com&quot;&gt;email&lt;/a&gt;]&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4F8&quot;&gt;vk&lt;/a&gt;]&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4IP&quot;&gt;twitter&lt;/a&gt;]&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;[&lt;a href=&quot;http://adf.ly/1Oc4SS&quot;&gt;telegram&lt;/a&gt;]&lt;/span&gt;&lt;/b&gt;&lt;br style=&quot;font-family: &#39;Courier New&#39;, Courier, FreeMono, monospace; line-height: 18.48px;&quot; /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; line-height: 18.48px;&quot;&gt;----------------------------------------&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/1324812747164766246/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/08/0.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/1324812747164766246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/1324812747164766246'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/08/0.html' title='Перезагрузка. Ассемблер. Часть 0. Установка и настройка.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSgVr_ZhLaXr0_b4woS2OKorViBwashe9GBK2Wbgr_fo_SP4TKOe5FXvXL-eDIZkZ-VlOosxANle3a0DyawQ4gMwvE6r_y7xBNgooGNk7MNrOzS195MvJ2R3Zg8bBXK9RsvFvXkYF08Oi4/s72-c/0.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-9130162873582918652</id><published>2015-08-08T16:07:00.000+03:00</published><updated>2015-08-08T16:07:02.618+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ассемблер"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Игры"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Новости"/><title type='text'>Про конкурс от gamehacklab, пожертвования и будущие посты.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ребята, всем привет!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Я кенг, дела у меня хорошо, спасибо. Почему я так долго ничего не писал и ничего не выкладывал? Да, меня тоже это бесит, прекратите кидаться, пожалуйста. Во-первых, наступило лето, но меня, равно как и вас, это не должно особенно волновать. Во-вторых, у меня сменилось место работы. Поэтому я последние 2-3 месяца на работе сижу просто безвылазно - испытательный срок, то да се. Но в этом есть и хорошая сторона - теперь у меня будет больше свободного времени, как минимум по выходным, а выходных как раз хватает на написание поста и\или запись видео.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Сейчас на моем youtube-канале самый актуальный и живой раздел - это &quot;Перезагрузка&quot;. Суть в том, что я перезаписываю все старые видео с нуля, с хорошим качеством звука и видео, другими играми и немного на новый лад - то есть немного по-другому объясняю.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;На данный момент перезагрузка обучает базовым вещам - поиску и отсеву значений и работе с указателями. Теперь, что достаточно логично, можно переходить к Ассемблеру и работе с отладчиком, а параллельно можно начинать писать свой движок для трейнеров.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Я решил начать со второго пункта, очень аккуратно и потихоньку объяснив язык ассемблера как таковой, как это все работает и что вообще происходит, так что видео будут выходить сначала с объяснениями - мы будем сидеть и изучать сам ассемблер в отладчике на абстрактных примерах, постепенно создавая трейнерный движок, а параллельно я буду показывать некоторые вещи в Cheat Engine - про Code Injection, Code Shifting, Code Relocation, Staple Intersection и тому подобные вещи.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Да, вы все правильно прочитали - теперь в блоге будет ТОЛЬКО ассемблер. Почему? Потому что я его люблю - раз. Потому что с ним в любом случае придется работать хотя бы во время взлома игры - два. Потому что он не такой пугающе сложный, как может поначалу показаться - три. И четыре - потому что его более чем достаточно для написания движка, зато можно будет неплохо выпендриться перед друзьями.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вы могли заметить в верхней части блога штучку с подписью &quot;помоги кенгу!&quot;. Для осмелившихся на ней кликнуть откроется возможность просто так взять и выдать мне любое количество денег на ваше усмотрение. Не то, чтобы они были мне жизненно необходимы и тем более я не собираюсь жить за счет блога, но это будет приятная плюшка, на которую можно будет купить игры или какие-то программы. Текущая цель - Bandicam, который стоит 39 сатанинских долларов. Плюс это в любом случае будет очень сильно меня мотивировать, потому что альтруистичный энтузиазм, на котором уже пять лет держится вся затея, не резиновый. И мне совершенно не хочется бросать это дело.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Больше скажу - мне хочется развивать его дальше, как минимум до уровня мировой сцены. Следовательно, чем больше будет читателей\зрителей и участников, тем быстрее попрет дело, потому что коллективный разум - всегда сильнее. Поэтому я горячо прошу всех читателей блога и зрителей канала на youtube рассказывать об этом в социальных сетях - пусть сарафанное радио работает.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Кстати, возможно я уже говорил, но на форуме gamehacklab несколько месяцев назад официально открылся раздел по взлому многопользовательских игр. И уже даже есть свои наработки, да-да!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;А что за конкурс? Конкурс, к сожалению, уже прошедший, но я все равно хочу о нем написать. Берем игру, берем сроки в 2-3-4 дня и затем участники конкурса делают как можно больше опций для игры - бессмертие, бесконечные патроны или что-то еще, быстрое перемещение, возможность летать и так далее. А дальше разыгрывается призовой фонд в виде репутации на форуме, уважухи и разнообразных скидок и игр в Steam. Интересно? Добро пожаловать на форум! Уверен, конкурс этот - не единственный.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Еще совсем недавно открылась страничка Вконтакте, посвященная сайту gamehacklab.ru. Там наш админ выкладывает свою собственную серию обучающих видео, причем он любит C++. Ознакомиться будет все равно полезно, даже если вы все это уже знаете.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вот она - &lt;b&gt;[&lt;a href=&quot;http://vk.com/gamehacklab&quot;&gt;ссылочка&lt;/a&gt;]&lt;/b&gt; на официальную страницу ВК.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;На этом - пока все. Думаю, что запишу хотя бы видео-введение по программированию. Критика и пожелания - в комментарии. :)&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/9130162873582918652/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/08/gamehacklab.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/9130162873582918652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/9130162873582918652'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/08/gamehacklab.html' title='Про конкурс от gamehacklab, пожертвования и будущие посты.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-2738136868533709688</id><published>2015-03-24T20:38:00.000+03:00</published><updated>2015-03-24T20:38:09.000+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><title type='text'>Перезагружаемся.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Перезагрузка идет полным ходом. Кто-нибудь смотрит? Как ощущения? (:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;[&lt;a href=&quot;http://www.youtube.com/playlist?list=PLc_QQC_Xnp8s_CGMq0OO2PHpDg2lLrBUJ&quot;&gt;Вот&lt;/a&gt;]&lt;/b&gt; ссылка на плейлист, если кто-то еще не видел.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/2738136868533709688/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/03/blog-post_24.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2738136868533709688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2738136868533709688'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/03/blog-post_24.html' title='Перезагружаемся.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-2194079583393927112</id><published>2015-03-22T12:39:00.001+03:00</published><updated>2015-03-22T12:39:33.514+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><title type='text'>Внимание, внимание!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Наконец-то началась перезагрузка видеоблога. Отныне - все видео в качестве 1080p, никакого отстающего звука. Следите за обновлениями!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Это будет интересно. (:&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/2194079583393927112/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/03/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2194079583393927112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2194079583393927112'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/03/blog-post.html' title='Внимание, внимание!'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-9013772092060873075</id><published>2015-03-09T09:21:00.002+03:00</published><updated>2015-03-09T09:23:10.644+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="IT"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Игры"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Можно ли при помощи Cheat Engine взломать сетевую игру?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;...задал мне вопрос один из зрителей на youtube. Попробую ответить.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Во-первых, давайте немного разберемся, как работают сетевые игры. Есть клиент (К), в который играет игрок, где рисуется вся красивая графика, леса, монстры бегают и рейды на боссах вайпаются. Есть сервер (С), к которому подключаются игроки, который управляет авторизацией, чатом, игровым миром и всем таким прочим. На нем графики обычно нет вообще, часто - даже консольного окна. Представим, что у нас два клиента и один сервер:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;(К0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; ^&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; |---------(С)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; v&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;(К1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;К0 бежит себе по полю, видит монстра. Потому что сервер ему об этом сказал. К0 берет и убивает монстра. Говорит серверу - &quot;Я убил монстра!&quot;. Сервер думает и отвечает - вот тебе 3 золотых. К0 видит на экране появившиеся 3 золотых и подбирает их. Говорит серверу - &quot;Я подобрал золото! 3 штуки!!&quot;. Сервер открывает у себя блокнотик и записывает - у К0 золота стало на 3 больше. Далее К0 открывает инвентарь (спрашивая у сервера, &quot;Что у меня в инвентаре?&quot;), а сервер ему и отвечает - столько-то золотых, половинка дарницкого и литр кефира.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Бывают такие невообразимо глупые игры, где можно заморозить здоровье на стороне клиента и он просто будет сообщать серверу, что здоровье полное. То есть на стороне сервера не будет никаких проверок на это. Бывает, например, World of Tanks, к которому толком нет читов, потому что весь клиент игры - это большой слайд-проектор, которому сервер выдает картинки, а всю информацию считает у себя. Чуть что не сошлось - клиента выкидывает из игры. Бывает так, что на одни показатели в игре косвенно влияют другие. Скажем, как это было у моих друзей в LineAge - если сильно нагрузить персонажа багажом, у него не будет со временем восстанавливаться здоровье. Если после этого умереть и в момент возрождения разорвать соединение клиента с сервером, то игрок возрождается с 0 здоровья и становится бессмертным. Баг был быстро исправлен, но было весело. (:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Вторая сторона монеты, помимо сканирования адресов и ковыряния в отладчике - разбор сетевых данных, которыми обменивается сервер и клиент. Те самые цитаты от клиента серверу и обратно, что я приводил выше. Можно, скажем, взять утилиту, которая позволяет увидеть и прочитать сетевые пакеты, передаваемые между клиентом и сервером (такие утилиты называются снифферами, от английского to sniff - нюхать), и увидеть там (например):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;(К0): Я нашел 3 золота!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;(С): Положил тебе в инвентарь 3 золота.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Берем пакет, отправляемый клиентом, исправляем в нем цифру 3 на 10000, а затем отправляем опять. Смотрим, что ответит сервер:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;(С): Положил тебе в инвентарь 10000 золота.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Вуаля. Взломали? Вполне. Но это - самый простой случай, обычно все куда сложнее.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/9013772092060873075/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/03/cheat-engine.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/9013772092060873075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/9013772092060873075'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/03/cheat-engine.html' title='Можно ли при помощи Cheat Engine взломать сетевую игру?'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-9195357744771334827</id><published>2015-03-03T20:14:00.003+03:00</published><updated>2015-03-03T20:14:52.850+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Инъекция кода"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><category scheme="http://www.blogger.com/atom/ns#" term="Указатели"/><title type='text'>ESP. Часть 2. Выводим найденное в консольку.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;А вот и видео!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/qzh6nL85SHs/0.jpg&quot; src=&quot;http://www.youtube.com/embed/qzh6nL85SHs?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;В нем я вслух и почти построчно разбираю 100 строк кода на Си, которые делают следующее:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;0. Находят окно игры&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;1. Получают хэндл процесса с правами чтения из памяти&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;2. Читают количество игроков на карте&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;3. Бегут в цикле, читая адрес каждой структуры игрока&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;4. Выводят в консоль его здоровье и координаты&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;В следующем уроке я расскажу, как именно мы будем выводить данные в окно игры (напомню, что это будет НЕ через DirectX-хук - мы легких путей не ищем!) и что для этого понадобится (не бойтесь, одна-единственная, но очень важная переменная в памяти игры. Будет еще немного СЕ), а через урок - покажу, какой код это делает.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/9195357744771334827/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/03/esp-2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/9195357744771334827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/9195357744771334827'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/03/esp-2.html' title='ESP. Часть 2. Выводим найденное в консольку.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/qzh6nL85SHs/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-5764007859685281276</id><published>2015-03-03T19:20:00.000+03:00</published><updated>2015-03-03T19:20:03.076+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Указатели"/><title type='text'>ESP. Часть 1. Ищем нужные нам данные.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Сначала - видео:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/0Bcm4IpSu6M/0.jpg&quot; src=&quot;http://www.youtube.com/embed/0Bcm4IpSu6M?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;А теперь, для начала, я приведу наш небольшой план еще раз:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;0. Получение данных из игры&lt;br /&gt;1. Чтение данных из игры программно&lt;br /&gt;2. Рисование в окне игры&lt;br /&gt;3. Вывод данных из игры в окно&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Итого, руководствуясь видео выше и своей смекалкой, мы получаем следующие данные:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;0. Указатель на коллекцию структур игроков&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;1. Смещения до здоровья и координат в структуре игрока&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;2. Адрес общего количества игроков&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;3. Смещения между структурами игроков в коллекции из п. 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Конечная наша цель - вывести над каждым игроком в игре его текущее здоровье, как вы уже, думаю, догадались.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;В следующей части мы напишем небольшую программу, которая будет уметь читать все нужные нам данные и выводить. Пока что - в консоль, а потом - уже на экран игры.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/5764007859685281276/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/03/esp-1.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/5764007859685281276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/5764007859685281276'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/03/esp-1.html' title='ESP. Часть 1. Ищем нужные нам данные.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/0Bcm4IpSu6M/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-8003979563441116397</id><published>2015-01-10T13:17:00.005+03:00</published><updated>2015-01-10T13:17:46.524+03:00</updated><title type='text'>ESP. Часть 0. Теория.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Всем привет!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Пожалуй, я достаточно много часов проработал, чтобы работа порядком поднадоела. Еще с самого первого момента, когда я заикнулся про 3D-графику в блоге, в ответ уважаемые читатели стали хором спрашивать, когда мы сделаем простенький ESP. Ну, скоро сделаем! Правда, для начала разберемся немного с теоретической частью, потому что эта тема - не поиск значений и даже не дизассемблирование, а нечто чуть более сложное. Итак!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ESP - это сокращение от английского Extrasensory Perception, проще говоря - шестое чувство. Это когда мы знаем что-то такое, чего в нормальных условиях знать не должны. Например, сколько до какого-то объекта метров. Точно, а не на глазок. Или сколько у такого-то монстра здоровья. Выглядит это примерно вот так:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://cheat4cs.com/_ld/5/78408081.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://cheat4cs.com/_ld/5/78408081.jpg&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Мы немного разобрались с темой 3D-графики, научились перехватывать функции рисования, так что теперь мы можем рисовать геометрические фигуры, выводить текст а так же заменять или убирать текстуры по нашему выбору. Это-то круто, конечно, но 3D-движок, который просто рисует кучу цветных треугольничков на экран, ничего не знает об имени, здоровье, оружии или чем-то таком. Он просто знает, как рисовать треугольнички. Вот (очень) примерная схема работы игры:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;While( true ) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Fight();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; Draw();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; PlaySound();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Игра - это бесконечный цикл, разные куски которого отвечают за разные вещи. Один - за игровую механику, другой - за физику, третий - за звук, четвертый - за отрисовку. Я все это к тому, что игровая механика и логика (там как раз и лежат здоровье, оружие, имя и все остальное) лежат отдельно от графики.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;План действий будет примерно таким:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;- Получаем информацию, которую нам нужно нарисовать на экране.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;- В цикле обновляем ее и выводим на экран, используя полученные в предыдущих уроках знания.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Начнем с первого, а дальше я буду объяснять по ходу дела и рассказывать все более детально.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/8003979563441116397/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2015/01/esp-0.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/8003979563441116397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/8003979563441116397'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2015/01/esp-0.html' title='ESP. Часть 0. Теория.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-6170096408525733939</id><published>2014-08-18T23:31:00.002+04:00</published><updated>2014-08-18T23:31:39.790+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="IT"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Новости"/><title type='text'>Дальнейшее развитие блога.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/FjTosc69obQ?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Комментарии - в студию!&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/6170096408525733939/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2014/08/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/6170096408525733939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/6170096408525733939'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2014/08/blog-post.html' title='Дальнейшее развитие блога.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-4439157520840886009</id><published>2014-08-03T01:35:00.000+04:00</published><updated>2014-08-03T01:35:11.789+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>D3D: Chameleon Wallhack</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Привет, ребята! Для начала, вот&amp;nbsp;видео:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;object width=&quot;320&quot; height=&quot;266&quot; class=&quot;BLOGGER-youtube-video&quot; classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot; data-thumbnail-src=&quot;https://ytimg.googleusercontent.com/vi/u9_ATXZO_qQ/0.jpg&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;https://youtube.googleapis.com/v/u9_ATXZO_qQ&amp;source=uds&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;266&quot;  src=&quot;https://youtube.googleapis.com/v/u9_ATXZO_qQ&amp;source=uds&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;А &lt;b&gt;[&lt;a href=&quot;https://github.com/remizovm/TestHookProject&quot;&gt;вот&lt;/a&gt;]&lt;/b&gt; ссылка на репозиторий с исходным кодом.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Значит, скачали вы исходники, взяли любимый компилятор и любимую IDE, скомпилировали это дело и ничего не поняли. В видео я, отсылась к предыдущим статьям и урокам, рассказываю о том, что мы написали логгер, позволяющий нам узнать некоторую необходимую для нашей бурной деятельности информацию. А именно - stride, или номер куска экрана, который мы сейчас будем рисовать, и NumVertiles, аргумент функции &lt;b&gt;[&lt;a href=&quot;http://msdn.microsoft.com/ru-ru/library/windows/desktop/bb174369(v=vs.85).aspx&quot;&gt;DrawIndexedPrimitive&lt;/a&gt;]&lt;/b&gt;, который показывает нам количество вершин того куска, который мы будем рисовать. Мир игры состоит из моделек, модельки - из полигонов. Полигон - это треугольник, то есть у него три вершины. На модельки, собственно, сверху натянуты текстуры, чтобы было видно, что металл - это металл, оружие - это оружие, а враги - это враги. Нашли мы, значит, нужную нам текстуру. Дальше видим такой кусок кода:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pDev-&amp;gt;SetRenderState(D3DRS_ZENABLE, false);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pDev-&amp;gt;SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pDev-&amp;gt;SetTexture(0, red);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;oDrawIndexedPrimitive(pDev, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pDev-&amp;gt;SetRenderState(D3DRS_ZENABLE, true);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pDev-&amp;gt;SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pDev-&amp;gt;SetTexture(0, green);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Что мы тут делаем? А всё просто, как выяснилось. Функция &lt;b&gt;[&lt;a href=&quot;http://msdn.microsoft.com/ru-ru/library/windows/desktop/bb174454(v=vs.85).aspx&quot;&gt;SetRenderState&lt;/a&gt;]&lt;/b&gt; позволяет нам задать параметры отображения того, что мы сейчас будем отображать. Тут важно помнить, что мы ещё пока ничего рисовать не пытались. У этой самой функции всего два аргумента - что мы меняем и на что мы меняем. Первым вызовом мы утверждаем, будто нужно выключить буфер глубины. Что это такое? Это перспектива, если вдруг так будет понятнее. Экран монитора - он плоский, а игра хочет казаться трёхмерной, так что ей нужно как-то трёхмерность симулировать. Вот эта вот штука отвечает за то, что мы видеть должны, а что - нет. Например, когда какой-то объект находится за стеной. Игра при отрисовке постоянно думает, что и как ей рисовать. Вот небольшая схемка:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;X -----------|-------------O&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;X - это мы. Палочки - это стена перед нами, а O - это нечто за этой стеной. Циферки обозначают позицию одного относительно другого в этом самом буфере глубины. У кого цифра 1 - того мы и видим, у кого больше - значит он чем-то от нас закрыт. Если товарищ О выйдет из-за стены, то у него Z-order (позиция в буфере глубины) станет равным 1, так что игра должна будет его перед нами отрисовать и в результате мы его увидим.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Если отключить буфер глубины, то игра решит, что все игровые объекты в поле нашего зрения находятся перед нами - то есть нету никаких препятствий и никто никого не перекрывает. Получится каша, потому что одновременно будут рисоваться стены, мебель, пол, потолок, оружие, гранаты, люди, враги, союзники, словом - всё. Для того, чтобы вычленить из этой каши то, что нам нужно, мы и использовали наш логгер. В общем-то, только у нужных нам объектов мы буфер глубины и отключили. Давайте вернёмся к коду, а то я заболтался. Отключив буфер глубины, мы говорим, что текущий объект мы будем рисовать сплошным цветом. Сразу после этого мы вызываем функцию &lt;b&gt;[&lt;a href=&quot;http://msdn.microsoft.com/ru-ru/library/windows/desktop/bb174461(v=vs.85).aspx&quot;&gt;SetTexture&lt;/a&gt;]&lt;/b&gt;, которая указывает, что мы будем использовать текстуру по имени red - красненькую. Напомню, что пока мы ещё ничего не рисовали и не пытались даже. Что мы делаем следующей строчкой? Верно, рисуем, вызвав оригинальную функцию рисования вместо нашей перехваченной.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Дальше мы включаем буфер глубины обратно, опять говорим что будем рисовать сплошным цветом, и на этот раз выбираем зелёную текстуру, а рисуем уже в самом конце, перед выходом.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Что получается в результате таких жутких махинаций? А получается так, что выбранная нами моделька рисуется через стены красным, а перед нами - зелёным. Эта фича отличает Chameleon wallhack от обычного. В обычном мы просто выключали бы буфер глубины и всё, а тут удобно, с подсветочкой.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Тэк-с. Я упоминал текстуры. Собственно, чуть ниже, в перехваченной функции &lt;b&gt;[&lt;a href=&quot;http://msdn.microsoft.com/ru-ru/library/windows/desktop/bb174375(v=vs.85).aspx&quot;&gt;EndScene&lt;/a&gt;]&lt;/b&gt;, мы их и создаём. Тут я в подробности вдаваться не буду, так как этот кусок кода я нашёл и честно скопировал себе, скажу только, что цвет мы задаём вот в этой строчке:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;((PDWORD)d3dlr.pBits)[xy] = 0xFF00FF00;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Тут нас интересуют последние три пары чисел шестнадцатиричного значения. Догадливые уже поняли, что это RGB, он же - Red Green Blue, то есть три цветовых канала. Первые две цифры в том числе выше - это прозрачность, которая не используется в данном случае, как я понял. Собственно, FF0000 - это красный, 00FF00 - это зелёный, а 0000FF - это синий. Значения лежат в пределах от 00 до FF. Подходящий цвет можно выбрать в любом графическом редакторе или же в интернете найти.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;В той же перехваченной EndScene мы первой строчкой узнаём ViewPort - это, собственно, то, куда мы смотрим, когда играем. Узнаём мы его затем, чтобы выводить туда текст, так что после создания текстур мы создаём шрифт и пишем им на экран, в данном случае - включён ли наш wallhack.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;На этом, в принципе, можно бы было и остановиться, но есть ещё одна важная деталь. В комментариях некоторые люди жаловались, что игра вылетает с ошибкой при попытке сделать alt+tab или поменять разрешение экрана. Это чинится перехватом функции &lt;b&gt;[&lt;a href=&quot;http://msdn.microsoft.com/ru-ru/library/windows/desktop/bb174425(v=vs.85).aspx&quot;&gt;Reset&lt;/a&gt;]&lt;/b&gt;, в которой мы уничтожаем наши текстуры и шрифт, чтобы они не засоряли видеокарту и пересоздались, дабы игра снова могла их рисовать.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вот теперь - всё. До новых встреч! (:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/4439157520840886009/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2014/08/d3d-chameleon-wallhack.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/4439157520840886009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/4439157520840886009'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2014/08/d3d-chameleon-wallhack.html' title='D3D: Chameleon Wallhack'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-404573508861157901</id><published>2014-01-24T07:28:00.001+04:00</published><updated>2014-08-03T01:35:26.095+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Про гитхаб.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ребята, как вы заметили, я теперь в постах привожу ссылки на свой &lt;b&gt;[&lt;a href=&quot;https://github.com/remizovm/KengTrainerEngine&quot;&gt;репозиторий&lt;/a&gt;]&lt;/b&gt; на гитхабе. Я не знаю, как лучше организовать процесс, т.к. я там тоже что-то пишу и что-то может не работать или работать не так, как задумано, в тот или иной момент времени. Хранить 100500 папок\архивов с исходниками мне банально негде. Так что варианта два - тащим себе весь репозиторий и разбираемся, попутно глядя в блог и поставив себе 2013-студию, или же смотрим нужный кусок кода и копируем себе в проект. Сейчас это, по сути, песочница для экспериментов, так как я, как и вы, с темой знаком довольно поверхностно.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/404573508861157901/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post_24.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/404573508861157901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/404573508861157901'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post_24.html' title='Про гитхаб.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-2124230743081932471</id><published>2014-01-22T00:48:00.001+04:00</published><updated>2014-08-03T01:39:57.892+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>D3D: Рисуем прицел.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Привет!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Пока я записываю очередное видео, вот небольшой и простой для понимания участок кода, которым можно нарисовать прицел в любой DirectX9-игре:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVQA1AA9xM1g_XzQPnyrEqbC5oT-LEIVHmoxPYgUhgf9JmXmhrCjv4rvVCsk7vws9a5hyXuuIzZKiqCd0PNt8jPzYYzgrJBynvJRy3uJnviJZWiYoAJmzI7HXUfs1VPN1IT7013ZCYMX2C/s1600/ss+(2014-01-22+at+12.42.52).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVQA1AA9xM1g_XzQPnyrEqbC5oT-LEIVHmoxPYgUhgf9JmXmhrCjv4rvVCsk7vws9a5hyXuuIzZKiqCd0PNt8jPzYYzgrJBynvJRy3uJnviJZWiYoAJmzI7HXUfs1VPN1IT7013ZCYMX2C/s1600/ss+(2014-01-22+at+12.42.52).png&quot; height=&quot;281&quot; width=&quot;400&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Что-то объяснять, кроме комментариев в самом коде, я не буду - всё и без этого понятно. (:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Полный исходник - на &lt;b&gt;[&lt;a href=&quot;http://adf.ly/cSFWE&quot;&gt;гитхабе&lt;/a&gt;]&lt;/b&gt;!&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/2124230743081932471/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2014/01/d3d.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2124230743081932471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2124230743081932471'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2014/01/d3d.html' title='D3D: Рисуем прицел.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVQA1AA9xM1g_XzQPnyrEqbC5oT-LEIVHmoxPYgUhgf9JmXmhrCjv4rvVCsk7vws9a5hyXuuIzZKiqCd0PNt8jPzYYzgrJBynvJRy3uJnviJZWiYoAJmzI7HXUfs1VPN1IT7013ZCYMX2C/s72-c/ss+(2014-01-22+at+12.42.52).png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-779560469054311333</id><published>2014-01-19T18:48:00.002+04:00</published><updated>2014-08-03T01:40:03.610+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Опрос"/><title type='text'>[Опрос] Перепись видеоуроков.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;В комментах к этому посту я прошу вас указать те видеоуроки с &lt;b&gt;[&lt;a href=&quot;http://www.youtube.com/remizovm&quot;&gt;ютуба&lt;/a&gt;]&lt;/b&gt;, которые хорошо бы переписать. Пока что я займусь приведением канала в порядок.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/779560469054311333/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post_6979.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/779560469054311333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/779560469054311333'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post_6979.html' title='[Опрос] Перепись видеоуроков.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-1507193109168303839</id><published>2014-01-19T18:47:00.000+04:00</published><updated>2014-08-03T01:40:05.824+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>Новости по блогу.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Итак, уважаемые! Раз уж у меня нашлись время и силы возобновить публикации своих скромных потуг, то возникает пара вопросов:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Редизайн блога. Переписывание всех старых видео (одно из которых зачем-то удалил гадкий гугл), заливка видео на какой-нибудь другой хостинг или обменник (торренты!). Были мысли понаписать серию статей с красивыми картинками из какого-нибудь abode illustrator, потому что в виндовом пейнте рисовать как-то не слишком солидно. Так же были мысли создать три отдельных секции - Ассемблер, C\C++, C#.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Дело тут всё в том, что си ришотка (C#) достаточно фигово подходит для геймхакинга - он слишком высокоуровневый со всякими своими ООП и прочими классами, не даёт вменяемый доступ к WinAPI, потому что safe code и всё такое, но он красивый-быстрый-удобный для создания GUI, интерфейса, т.е.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вообще, лично я придерживаюсь такого мнения, что ООП в целом плохо подходит для наших задач, поэтому предпочтение отдаю чистому Си и Ассемблеру. Почему? Потому что я их учил давно, когда компьютеры были медленные и оперативки было мало, так что я люблю компактность и скорость. Если моё с вашим мнение расходится - то извините, я верю что читатель достаточно умён чтобы взять мои исходники и переписать под свой язык. Нет, правда. Я изначально учу не код писать, а общим концепциям, алгоритмам и принципам.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Посему, на данный момент, мой инструментарий:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;1. MSVS Express 2013. Потому что привык. Планирую перелезть на GCC.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;2. Cheat Engine. Потому что удобно инжектить DLL-ки и в будущем понадобится для прочих исследований относительно взлома.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;3. Olly Debugger. Использую в качестве основного отладчика, так же в силу привычки. Могу написать серию уроков по нему, но не вижу большого смысла - поменяются полторы кнопки на клавиатуре, да и уроков\статей по этому отладчику в сети есть куча.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Ещё один момент - игры на заказ мне ломать не очень хочется. Отчасти потому, что игра (чаще всего) стоит денег, а в основном потому, что это &quot;повторение пройденного&quot;, но в другой обёртке. Прошу не обижаться, но это всё ещё не блог &quot;кенг! сломай мне игру N!&quot;. Исключение - если попадётся какая-то нестандартная опция (это не повод с сего момента присылать мне по 9000 писем с предложениями).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Но всё ещё - feel free to присылать мне письма, любые. Общие рекомендации я дать могу, что-то подсказать или объяснить.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вектор развития блога на данный момент:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Мы занялись D3D и графикой в целом. Мне не нравится текущий подход, используемый большинством - а именно конкретные адреса или указатели, поиски по сигнатурам и всё в том же духе. Я решил покопать поглубже и стремлюсь к автоматизации - как вы помните, нашему хуку нужны только смещения функций в табличке указателей интерфейса. Этот подход работает на DX 9, которая до сих пор используется крайне широко. В дальнейшем мы проапгрейдимся до поддержки DX 10 и 11, а затем и до OpenGL - это не так сложно. Так как наше приложение всё ещё очень хочет быть движком для трейнеров, добавим поддержку записи в память, codecave-ов, поиска сигнатур. Может, какой-то конструктор напишем, чтобы из файла брать адреса и названия функций и сразу пихать их в собранный exe. А, да, объединим загрузчик и хук в один исполняемый файл, чтобы не таскать их оба с собой.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Пока что - вот так.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/1507193109168303839/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post_19.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/1507193109168303839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/1507193109168303839'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post_19.html' title='Новости по блогу.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-1472399224711205485</id><published>2014-01-19T10:15:00.003+04:00</published><updated>2014-08-03T01:40:15.037+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Code-Injection"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Игры"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Инъекция кода"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>D3D: Трагически наступившее &quot;скоро&quot;.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Всем привет!&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;У меня нашлось время и я решил ещё немного поковыряться с D3D и прочими неприличными словами. (:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Остановились мы на том, что написали перехватчик методов D3D, ответственных за рисование, и смогли нарисовать на экране чужого приложения квадратик. Попутно мы написали свой собственный инжектор DLL-ок.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Это всё, конечно, круто, но не очень сильно впечатляет и далековато от наших амбиций. Итак, встречаем:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;[&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/desktop/bb174369(v=vs.85).aspx&quot;&gt;IDirect3DDevice9::DrawIndexedPrimitive&lt;/a&gt;]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Вот эта самая функция нам и понадобится. Я, честно сказать, фигово разбираюсь в 3д-графике и рисовании в целом, так что гуру этой области прошу меня сильно не пинать - объяснять буду, как понял сам.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Как мы помним, читали или где-нибудь слышали, нельзя просто так взять и нарисовать оружие, машину или нечто такое. Видеокарточки туповаты и рисовать умеют только примитивы - точки, линии, треугольники. Захотели квадрат - сложили два треугольника вместе. Эти штуки ещё иногда зовут полигонами, ага. Дык вот эта самая функция используется для отрисовки примитивов, если очень кратко. Нас там будет интересовать параметр&amp;nbsp;&lt;span style=&quot;font-size: 14px; line-height: 20.005998611450195px;&quot;&gt;BaseVertexIndex, в суть которого я тоже вник крайне смутно и пытаться объяснить это кому-то пока что не стану - давайте просто звать эту штуку индексом. Ещё пара крутых штук ждёт нас чуть дальше, когда я код приведу. Так как у меня возникли некоторые трудности с перехватом этой функции, то перехватывать мы её будем не вручную, а при помощи библиотечки detours от microsoft (все необходимые файлы идут в комплекте с исходниками), так что код слегка видоизменился. Вот, например:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: 14px; line-height: 20.005998611450195px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCI79Hf8q2MqVbYJiAbapQvaijGZbP86M7QMsnRwZ69Qy-xoHyEZQjigQDe1SDayDw_uf0JjnKMxQ4eVwmFcEpuOrupm5TPiaeZyVUVb62dAwVzGaPGan2jh5VJN5w2fj1uVk-2X5wwGCs/s1600/ss+(2014-01-19+at+09.59.56).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCI79Hf8q2MqVbYJiAbapQvaijGZbP86M7QMsnRwZ69Qy-xoHyEZQjigQDe1SDayDw_uf0JjnKMxQ4eVwmFcEpuOrupm5TPiaeZyVUVb62dAwVzGaPGan2jh5VJN5w2fj1uVk-2X5wwGCs/s1600/ss+(2014-01-19+at+09.59.56).png&quot; height=&quot;164&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: 14px; line-height: 20.005998611450195px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 20.005998611450195px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: 14px; line-height: 20.005998611450195px;&quot;&gt;Тут сразу бросаются в глаза последние три строчки - это, собственно, и есть перехват. Делает библиотека всё то же самое - мы скармливаем ей адрес найденной фунции, которую нужно перехватить, в её начало дописывается переход (JMP 00112233) на перехваченную функцию, а перехваченная выставляет всё, как было, отрабатывает и возвращает хук на место. Едем дальше:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: 14px; line-height: 20.005998611450195px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWmX93NTj6Bo5dAf_rSt8RjQcWayUr8Y1Y-aAgqONkRk2ZQftjKAEbm99-19iqAQImLkgOuE_xuQ6P7CD1jiSalivHpCz7N4lXUyFaiHPfX_TNaXdHdzWpEalFTPw0Ika-48Hl46HIf5Vg/s1600/ss+(2014-01-19+at+10.03.55).png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWmX93NTj6Bo5dAf_rSt8RjQcWayUr8Y1Y-aAgqONkRk2ZQftjKAEbm99-19iqAQImLkgOuE_xuQ6P7CD1jiSalivHpCz7N4lXUyFaiHPfX_TNaXdHdzWpEalFTPw0Ika-48Hl46HIf5Vg/s1600/ss+(2014-01-19+at+10.03.55).png&quot; height=&quot;285&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: 14px; line-height: 20.005998611450195px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Это - перехваченная DrawIndexedPrimitive, при помощи которой игра будет пытаться рисовать всё то, что мы с вами видим на экране. Я не буду вдаваться глубоко в подробности, нам это нужно один раз, так что приведу примерную суть:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;1. Каждый вызов у нас есть некие данные (Stride и&amp;nbsp;BaseVertexIndex) , которые нам надо узнать и запомнить для использования уже в чите. Они характеризуют тот или иной объект на экране.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;2. Каждый раз, когда игра пытается что-нибудь нарисовать, мы заносим структуру этих данных в массив.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;3. В логгере есть кнопки, позволяющие управлять процессом - менять значения Stride и&amp;nbsp;BaseVertexIndex, выбранные на данный момент будут подсвечиваться зелёным цветом.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;4. Задача - натыкать такое значение, чтобы нужный нам объект(-ты) подсветился(-лись) зелёным. Запомнить цифры.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Скомпилируется всё это дело в DLL, которую надо будет заинжектить в процесс игры (я не парюсь и продолжаю делать это через Cheat Engine). Поддерживаются любые игры, которые рисуют при помощи D3D9.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ВНИМАНИЕ тем, кто запускает игры из Steam (как я, например): В стиме в свойствах игры надо отрубить steam overlay ui, так как он работает точно так же - иначе получим вылет.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ВНИМАНИЕ тем, кто до сих пор не использует MS Visual Studio 2013 (как я, например): Если вам лень ставить 13-ю студию, то просто слейте все исходники и создайте новый проект (DLL). Ему понадобится в свойствах указать путь до include и lib для MS DirectX SDK (полгига которого можно спокойно скачать в гугле), если заругается на отсутствие detours.lib - она лежт в папке проекта.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Результат:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijKM7EshwR7KIxYR9rhm5n2lpBXxixZFdIE8PlXZbb6p2Z1hNjKtNo73Ng_fcvk3RzedOt98-R5_G8U84baQLatVTpIeHy-17wA66X15FP__wDZzy5fBtYgOJX_IQdpmgrP9AnLxbYJrld/s1600/0nfi-Wsy23U.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijKM7EshwR7KIxYR9rhm5n2lpBXxixZFdIE8PlXZbb6p2Z1hNjKtNo73Ng_fcvk3RzedOt98-R5_G8U84baQLatVTpIeHy-17wA66X15FP__wDZzy5fBtYgOJX_IQdpmgrP9AnLxbYJrld/s1600/0nfi-Wsy23U.jpg&quot; height=&quot;252&quot; width=&quot;320&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;А вот и &lt;b&gt;[&lt;a href=&quot;https://github.com/remizovm/KengTrainerEngine&quot;&gt;ссылка&lt;/a&gt;]&lt;/b&gt; на все исходники. На днях будем учить этих инопланетных парней просвечивать сквозь стены. (:&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/1472399224711205485/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/1472399224711205485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/1472399224711205485'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2014/01/blog-post.html' title='D3D: Трагически наступившее &quot;скоро&quot;.'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCI79Hf8q2MqVbYJiAbapQvaijGZbP86M7QMsnRwZ69Qy-xoHyEZQjigQDe1SDayDw_uf0JjnKMxQ4eVwmFcEpuOrupm5TPiaeZyVUVb62dAwVzGaPGan2jh5VJN5w2fj1uVk-2X5wwGCs/s72-c/ss+(2014-01-19+at+09.59.56).png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-3007863226536687502</id><published>2013-08-03T22:36:00.001+04:00</published><updated>2014-08-03T01:37:01.826+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Ассемблер"/><category scheme="http://www.blogger.com/atom/ns#" term="Блог"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Опрос"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>IT&#39;S ALIVE! ALIVE!!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Привет всем, кто это читает! Ещё не забыли моё имя и тему этого блога? (:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Извиняюсь перед всеми, что уже больше полгода не выходит новых видеоуроков - я по самые ноздри загружен на работе и ни на что нет времени. Очень хочется не забивать и с этих выходных, превозмогая усталость и прочие плохие штуки, выпускать хотя бы по одному видео раз в неделю.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Проблема тут только в одном - я сейчас пересмотрел последние видео и мне кажется, что это уже ни черта не обучающий блог, а какая-то фигня. Поэтому я прошу мнений:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;1. Я смотрю последние видео и пробую продолжить от них (d3d, хуки, воллхаки и прочая прелесть на C++). Плюсы я знаю средне, d3d - ещё более средне, так что это будет медленно и, скорее всего, корявенько, но я учусь и исправляюсь.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;2. Мы садимся и с нуля пишем движок для трейнеров на C++. Или на ассемблере. Или на C#. С фичами, которые предложите вы, или до которых не догадаюсь я. Весь код я буду заливать на GitHub, конечно же.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;3. С нуля пишем какую-нибудь простенькую игру на d3d, потом - компаемся отладчиком в её потрохах и понимаем, как и что работает. Ещё более медленный вариант, но сулит много интересного.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;3. Что-нибудь повеселее - то, что вы предложите в комментариях.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/3007863226536687502/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2013/08/its-alive-alive.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/3007863226536687502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/3007863226536687502'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2013/08/its-alive-alive.html' title='IT&#39;S ALIVE! ALIVE!!'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-5584025267116678565</id><published>2012-11-26T04:31:00.003+04:00</published><updated>2014-08-03T01:40:29.470+04:00</updated><title type='text'>Скоро новый урок, а пока:</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Я просто не мог удержаться и не запостить это:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfmcyE5nVRZqs7ktH3piTS22r50gSj2RgHorYeTjCl24lvRcgmZRwqy_TFtypMhIeHwmMXB_IIdBbOdKebI8LFo94tqzlJuSo1jvcJvcMzNryFOi7dsP1MM7enHrOl0VO2ieMWVLeXp6PP/s1600/1353878538524.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfmcyE5nVRZqs7ktH3piTS22r50gSj2RgHorYeTjCl24lvRcgmZRwqy_TFtypMhIeHwmMXB_IIdBbOdKebI8LFo94tqzlJuSo1jvcJvcMzNryFOi7dsP1MM7enHrOl0VO2ieMWVLeXp6PP/s320/1353878538524.jpg&quot; height=&quot;320&quot; width=&quot;260&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/5584025267116678565/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2012/11/blog-post_26.html#comment-form' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/5584025267116678565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/5584025267116678565'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2012/11/blog-post_26.html' title='Скоро новый урок, а пока:'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfmcyE5nVRZqs7ktH3piTS22r50gSj2RgHorYeTjCl24lvRcgmZRwqy_TFtypMhIeHwmMXB_IIdBbOdKebI8LFo94tqzlJuSo1jvcJvcMzNryFOi7dsP1MM7enHrOl0VO2ieMWVLeXp6PP/s72-c/1353878538524.jpg" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-2551596212143423881</id><published>2012-11-24T01:54:00.001+04:00</published><updated>2014-08-03T01:40:36.525+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Взлом игр"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересное"/><category scheme="http://www.blogger.com/atom/ns#" term="Инъекция кода"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>D3D: Пишем DLL-инжектор, но уже на C++</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/FCzeg&quot;&gt;Ссылочка&lt;/a&gt;]&lt;/b&gt; на урок. Разбираем код DLL-инжектора на C++, который я сваял из тестового D3D-приложения.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;А &lt;b&gt;[&lt;a href=&quot;http://adf.ly/FCzWQ&quot;&gt;вот&lt;/a&gt;]&lt;/b&gt; ссылочка на весь проект, выложенная на &lt;b&gt;[&lt;a href=&quot;http://adf.ly/FCzip&quot;&gt;GitHub&lt;/a&gt;]&lt;/b&gt;. Комментарии на английском. Проект будет пилиться вместе с записью уроков, так что можно его считать тестовой площадкой. Для компиляции понадобится MSVS, я использую 2012 Express.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Сейчас буду записывать следующий урок, для затравки - читаем &lt;b&gt;[&lt;a href=&quot;http://adf.ly/FCzbH&quot;&gt;это&lt;/a&gt;]&lt;/b&gt; и &lt;b&gt;[&lt;a href=&quot;http://adf.ly/FCzXq&quot;&gt;это&lt;/a&gt;]&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/2551596212143423881/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2012/11/d3d-dll-c.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2551596212143423881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/2551596212143423881'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2012/11/d3d-dll-c.html' title='D3D: Пишем DLL-инжектор, но уже на C++'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2618609498393487984.post-7782943867519277237</id><published>2012-11-03T01:29:00.000+04:00</published><updated>2014-08-03T01:40:44.440+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cheat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Видеоуроки"/><category scheme="http://www.blogger.com/atom/ns#" term="Обучение"/><category scheme="http://www.blogger.com/atom/ns#" term="Программирование"/><title type='text'>D3D: Пишем DLL-инжектор</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/EImPI&quot;&gt;Ссылочка&lt;/a&gt;]&lt;/b&gt; на урок.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b&gt;[&lt;a href=&quot;http://adf.ly/EImb5&quot;&gt;Ссылочка&lt;/a&gt;]&lt;/b&gt; на компилятор (версия demo для win x86).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;А вот полный код:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;OpenLibrary(0, &quot;kernel32.dll&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;OpenLibrary(1, &quot;user32.dll&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;
#PROCESS_ALL_ACCESS = $1F0FFF&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;#MEM_COMMIT = $1000&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;#MEM_RESERVE = $2000&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;#PAGE_READWRITE = $4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Text$ = &quot;test.dll&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;dllName = @Text$&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;dllNameSize = 8&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;loadLibAddr = GetFunction(0, &quot;LoadLibraryA&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Debug(loadLibAddr)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;
hProcess = RunProgram(&quot;d:\keng_loader\d3d9_lesson0_keng&quot;, &quot;&quot;, GetCurrentDirectory(), #PB_Program_Open)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;pID = ProgramID(hProcess)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;
pHandle = CallFunction(0, &quot;OpenProcess&quot;, #PROCESS_ALL_ACCESS, 0, pID)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;allocAddr = CallFunction(0, &quot;VirtualAllocEx&quot;, pHandle, 0, dllNameSize, #MEM_COMMIT+#MEM_RESERVE, #PAGE_READWRITE)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Debug(allocAddr)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CallFunction(0, &quot;WriteProcessMemory&quot;, pHandle, allocAddr, dllName, dllNameSize, 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CallFunction(0, &quot;CreateRemoteThread&quot;, pHandle, 0, 0, loadLibAddr, allocAddr, 0, 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CallFunction(0, &quot;CloseHandle&quot;, pHandle)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;
CloseLibrary(0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;CloseLibrary(1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Почему на бейсике? Потому что моя задача - объяснить алгоритм работы, а реализация на конкретном языке - дело вкуса. Кому-то ассемблер нравится, кому-то Си, кому-то - C# или Delphi. Не переживайте, в видео всё разжёвано.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://kekekeng.blogspot.com/feeds/7782943867519277237/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://kekekeng.blogspot.com/2012/11/d3d-dll.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/7782943867519277237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2618609498393487984/posts/default/7782943867519277237'/><link rel='alternate' type='text/html' href='http://kekekeng.blogspot.com/2012/11/d3d-dll.html' title='D3D: Пишем DLL-инжектор'/><author><name>keng</name><uri>http://www.blogger.com/profile/04361407615602088080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>