Первый пост темы: dedivan Post: #471944 От:06.06.2015 (00:41) 21 августа 1991 года закончился августовский путч в СССР-
24 августа 1991 в центре Киева. Люди приветствуют провозглашение независимости
25 августа 1991 года Линус Товальдс опубликовал ядро Linux Date: 25 Aug 91 20:57:08 GMT
Просто совпадение? Можно быть, но есть еще много других совпадений.
Главное- это одинаковая методика зомбирования адептов Линукса и Нэзалежной.
Линуксоидов в мире точно столько же сколько и укропов- около 1 %.
О чем не спросишь линуксоида- ответ : хто нескаче тотмастдай
Скачай сам или сделай "Неllo world" и посмотри .obj каким-либо вьювером
- и ты увидишь, там нет никаких ассемблерных мнемоник
- только bin, только хардкор 😏
Ты оказывается еще и первый класс не освоил?
Переименуй это .бин в .тхт или .асм и увидишь что там есть.
Нормальный асмовый код.
Я гляжу ты хочешь нахалявку полное образование тут получить?
Для тебя теперь все вопросы будут платные- по ставке обычного препода 20 баксов занятие, раз не хочешь сам книжки читать.
А как же- все, кто имел дело с компами до 90-го года, знают заклинание кода.
Заклинание кода - наука, позволяющая напрямую контролировать машинный код и создавать его из имеющихся в наличии байт. Заклинатели демонов, равно как и их противники - создатели антидемонских программ, а также создатели защит, взломщики кода и многие другие - издавна практиковались в заклинании кода, в искусстве программирования без лишних посредников.
Чтобы научиться заклинать код, нам понадобятся три вещи - ассемблер, Книга Двойных Слов и собственное намерение. Без последнего ничего не выйдет, даже если будут первые два в сколь угодно большом количестве.
Про отражение памяти. У каждого процесса есть свой описатель- он типа большого числа, 256 байт, но расположен в пространстве ядра, а чтобы процесс юзера знал свой номер,он отражается в пространстве юзера. Чтобы юзер видел его и знал свое место.
Как в классике- твой номер шестнадцатый, сиди и помалкивай. Этот номер присваивает програмист, который пишет программу. Это строковая константа- то есть набор байтов с нулем на конце.
Программер может написать такой номер, чтобы при нужном прочтении он был программой вызова ДЛЛки. Что строка, что программа- это всего лишь последовательность байтов.
Там есть одна тонкость- в этом коде не должно быть нулей- ноль должен быть только в конце строчки.
Для этого есть заклинатели кода- низкоурровневые спецы, которые могут писать в машинных кодах.
Это уровень даже ниже ассемблера- уровень опкодов процессора.
Одну и туже работу можно сделать разными командами- вот они и выбирают такие, в которых нет ноликов.
Номер записан, он виден юзеру. осталось запустить его как исполняемый код.
Вот тут уже возникает разница между виндой и линухом. Винда старается прятать реальный адрес этого кода.
Каждая винда по разному его прячет. Линух не прячет. В линухе этот код запускается элементарно.
Он просто методом НЛП программирует юзера, что линух это самая надежная система.
> Переименуй это .бин в .тхт или .асм и увидишь что там есть.
Ха-ха-ха
переименование файла никак не изменит его содержимое
Блин, не ожидал такого 😬 😎 😬🤢
Вот тебе пример .obj - файла (прикреплён),
как не переименовывай его... ну сам увидишь
> Я гляжу ты хочешь нахалявку полное образование тут получить?
> Для тебя теперь все вопросы будут платные-
> по ставке обычного препода 20 баксов занятие, раз не хочешь сам книжки читать.
Да нужны мне такие _преподаватели_, как ты.. -как собаке пятое колесо 😶
Сам бы умные книжки лучше почитал
Эфиродомен Пост: 605856 От 02.Dec.2018 (09:47)
... ну сам увидишь
Вижу- описатель файла вижу- заменить его на бинарный код как написано выше- и он попадет в стек ядра и там его можно будет запустить.
И асмовые команды тоже видно.
А чего ты хотел увидеть?
На данном шаге 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) материалы по этой тематике
- ты утверждал, что для компиляции программы на чистом C
в объектный или исполняемый файл нужен внешний ассемблер (tasm)
- оказалось, нет
Это не про тасм разговор был и тем более не про шестой билдер, это ты это говно притащил- сам его и расхлебывай.
Как расхлебать- скомпилируй (со спрятанным тасмом) с ключом -S, если выдаст ассемблерный файл- то какой то урезанный ассемблер встроен в него.
А если выдаст ошибку- то именно поэтому он и не работает в реальном режиме. Виртуальная поделушка.