Post:#471944 Date:06.06.2015 (00:41) ... 21 августа 1991 года закончился августовский путч в СССР-
24 августа 1991 в центре Киева. Люди приветствуют провозглашение независимости
25 августа 1991 года Линус Товальдс опубликовал ядро Linux Date: 25 Aug 91 20:57:08 GMT
Просто совпадение? Можно быть, но есть еще много других совпадений.
Главное- это одинаковая методика зомбирования адептов Линукса и Нэзалежной.
Линуксоидов в мире точно столько же сколько и укропов- около 1 %.
О чем не спросишь линуксоида- ответ : хто нескаче тотмастдай
На данном шаге g++ выполняет свою главную задачу — компилирует, то есть преобразует полученный на прошлом шаге код без директив в ассемблерный код. Это промежуточный шаг между высокоуровневым языком и машинным (бинарным) кодом.
Используя флаг -S, который сообщает компилятору остановиться после стадии компиляции, получим ассемблерный код в выходном файле driver.s:
Чего непонятно?
Можно использовать другой флаг -О, тогда включится включится ассемблер и получим бинарный.
Но ассемблерный файл всегда является промежуточным результатом компилятора.
Или будешь спорить, что компилятор может сразу бинарник делать без ассемблера?
Эфиродомен Пост: 605864 От 02.Dec.2018 (13:09)
У кого-то ещё есть сомнения в том, что .obj - формат - двоичный, а не текстовый ?
Ты ещё скажи, что и .exe - тоже текстовый файл, о учитель учителей
Любой набор кодов есть текст.
"0-1-0-1..." тож текст, знаки и символы.
А вот это
есть "отражение памяти"(цы) прописанное не пойми кем
Основной твой "посыл" мне понятен и с интересом отслеживаю, хоть и не в теме жутких подробностей, начал в этом ковыряться в конце 80-х и забросил по весьма призёмлённым причинам.
дед, C-компилятор
> выдает промежуточный ассемблерный файл
отнюдь не всегда, а только по запросу.
Выдает и создает - разные понятия. Создает всегда как промежуточный результат. А выдает по запросу.
Это основной принцип всех компиляторов с яву.
Если сомневаешься- перемести файл tasm.exe в какую нибудь временную папку и попробуй скомпилить без него.
Есть еще новые системы у мелкософта- они создают промежуточный байт код- но это примерно то же самое.
di_mon Пост: 605508 От 28.Nov.2018 (19:15)
Переводим процессор в режим реальных адресов.
mov eax,cr0
and al,0feh ; Сбрасываем бит PE.
mov cr0,eax ; Процессор перешёл в режим реальных адресов.
И всё- нет никакой защиты.
А ну-ка, Дед, проделай-ка такой хакинг из юзерспейса в Linux на практике. Ждём с нетерпением! Только повторяю, от имени обычного пользователя, а то рутом и дурак сможет. Root он на то и root, что ему всё позволено.
Matroskin Пост: 605999 От 03.Dec.2018 (18:25)
Ждём с нетерпением!
Нифига себе у тебя терпелка-12 лет уже разговор идет, а ты еще до сих пор не понял как это делать. Другие за это время два вуза заканчивают, а ты еще тэги в обычном форуме не можешь расставить правильно, а другие вон файл переместить не могут, чтобы компилятор не нашел его.
Еще раз- по слогам.
1-Это делается только в линухе. Понятно? Не в винде, как некоторые пытаются тут примеры привести.
Почему только в линухе-
В линухе общий стэк юзера и ядра. Это позволяет юзеру знать адрес строки , где записан идентификатор- номер его задачи.
В винде стеки разделены. и юзер не знает по какому адресу в памяти ось записала эту строчку.
2- этот номер обычно создает компилятор, но может задать его и сам программер. Но при этом может задать такой номер- что его двоичный код будет точно соответствовать коду нужной тебе программки- там всего 256 байт на все про все выделяется.
3- этот код- номер программы ядро размещает в своем пространстве ядра, и в стеке ядра виден адрес начала этого кода.
Нужно только попросить ядро запустить задачу с этого адреса. Код уже находится в пространстве ядра- и выполняется с привилегиями ядра.
4- чтобы твой код был похож на идентификатор- нужно писать его как строковую переменную- с ноликом на конце, и чтобы ни одного нолика не было внутри кода. Для этого нужно писать код даже не просто на асме, а в машинных кодах. Но он должен выполнять те же функции. что и написанный выше код на асме.
Как это делается - раньше знали если не все, то многие.[ссылка]
Кстати обрати внимание- раньше сайт wasm был в домене ru , но кому то не понравилось, что эти знания были доступны всем, и сайт грохнули. Теперь он в индии живет- индийским программистам пока разрешено это знать, при условии что они еще и русский язык знают.
Эфиродомен Пост: 606029 От 04.Dec.2018 (02:44)
(среда - Borland C++ Builder 6)
Что ты хвостом вертеть начал, подозрительно похоже на поведение всех иуд.
У тебя на картинке видно Builder 5.5 , а 5.0 последняя версия, которая поддерживает реальный режим , шестерочка уже совсем другая песня.
А линухе работает гнутый си совместно с гнутым ассемблером, чтобы можно было в реальном режиме работать . Без ассемблера там делать нечего.
ибо есть скопцы, которые из чрева матернего родились так; и есть скопцы, которые оскоплены от людей; и есть скопцы, которые сделали сами себя скопцами
А это вообще песня:
В прошлом веке магия кода пользовалась почтением, а ремесленный подход к программированию, которым грешат многие нынешние адепты, был не так распространён. В те времена заклинание кода было популярно, особенно среди заклинателей демонов. Таинственные маги древности обладали невероятными на взгляд современного обывателя способностями
> Что ты хвостом вертеть начал, подозрительно похоже на поведение всех иуд.
Сам ты иуда, а точнее, обманщик.
А может, и иуда
> У тебя на картинке видно Builder 5.5 , а 5.0 последняя версия, которая
> поддерживает реальный режим , шестерочка уже совсем другая песня.
Если ты имеешь ввиду отосланный тебе ранее пример gp.obj ,
то это именно оригинальный файл из поставки BCB6 без установленных сервис-паков.
Если не веришь - можешь посмотреть сам, что находится в этом пакете.
Во-вторых, речь о конкретной версии какого-либо компилятора тут не велась.
Если для тебя это что-то меняет, вот тебе свежескомпилированный BCB6 .obj
от HelloWorld (прикреплён), там хоть и прописана иная версия компилятора (5.6),
но принципиально ничего не меняется
- ни следа ассемблерных мнемоник, как его не переименовывай.
Любое твоё утверждение в этом разговоре опровергнуто
- включая и то, где ты говорил об обязательной необходимости наличия tasm
для успешной компиляции.
Уж извини, устанавливать пятую или ещё более ранние версии Билдера,
дабы тебе потрафить, я не буду.
Такая же ситуация и практически со всеми остальными
хоть сколько-нибудь современными C-компиляторами
(точно могу сказать о BCB5, BCB4, BCB3, VC 2..6, VS2012, VS2017,
xlC(не помню версию), WatcomC ver. 9 - ver.11, SymantecC 6 и тд и тп)
- при компиляции программы на чистом С в обьектный или же в исполняемый файл
им не требуется наличие внешнего ассемблера.
> а другие вон файл переместить не могут, чтобы компилятор не нашел его.
это ты обо мне ?
Что-то я сомневаюсь, чтобы компилятор нашёл tasm32.exe, перемещённый
из C:\Program Files (x86)\Borland\CBuilder6\Bin\ в C:\Misc\TT\,
при том, что C:\Misc\... в PATH отсутствует.
и вот ещё что
> Еще раз- по слогам. 1-Это делается только в линухе. Понятно?
Итак, по-слогам :
- ты утверждал, что .obj - файл содержит ассемблерные мнемоники - оказалось, нет
- ты утверждал, что для компиляции программы на чистом C
в объектный или исполняемый файл нужен внешний ассемблер (tasm)
- оказалось, нет
- твоё утверждение о том, что linux - операционка,
которая разрабатывалась для студентов - ложь,
об этом недвусмысленно высказался Торвальдс
- твоё утверждение о том, что можно легко выполнить произвольный код
в linux из пользовательского режима - также ты не сумеешь осуществить,
несмотря на найденные тобою на wasm.ru(.in) материалы по этой тематике