LINUX.ORG.RU

Поясните за c++

 ,


0

4

Здарова всем. Решил поставить Linux. Просто потому что хочу и всё. Дело вот в чем: я немного балуюсь с с++, нравится делать всякие трейнеры, читы, ну это для души, так сказать.

Офк когда пишу, юзаю функции winapi. Для инжекта длл, для поиска процессов, экстернал чтения/записи в память этих процессов и т.п. А как это все устроено в линуксе я не знаю даже приблизительно. Там ведь даже как таковых .dll нет, есть что-то похожее, со своими особенностями. Крч, расскажите, как обстоят дела с программированием на плюсах под Linux. Меня интересуют глобальные отличия в принципе написания программ. Ну т.е. в линуксе тоже надо писать подобие .dll (.so вроде), так же искать процессы, выбирать нужный и инжектить в него ту же dll. Или нет? Просто я даже представить пока что не могу, че там и как.

ПС гуглить умею, если хотя бы подскажете, в какую сторону - буду благодарен.



Последнее исправление: p1cador (всего исправлений: 2)

Гугли в сторону учебника по программированию и по C++.

erfea ★★★★★
()
Ответ на: комментарий от p1cador

Принцип тот же. Можно динамически подгрузить какую-нибудь библиотеку с помощью переменной окружения LD_PRELOAD.

Типа, LD_PRELOAD=./imsuperhacker.so /usr/bin/csgo

Это если я тебя правильно понял, но, скорее всего, нет ©

annerleen ★★★★☆
()

как обстоят дела с программированием на плюсах под Linux

Отлично

Меня интересуют глобальные отличия в принципе написания программ.

Есть.

ПС гуглить умею, если хотя бы подскажете, в какую сторону - буду благодарен.

На знаю что такое инжект процессов, но наверное имеет смысл начинать отсюда.

Нет, ну правда: какого ответа ты ожидаешь на вопрос «глобальные отличия в принципе написания программ.»? Курс лекция?

Точечные вопросы ищутся очень легко, так как Линункс изначально создавался программистами для программистов.

Kroz ★★★★★
()

Если интересно что-то куда-то инжектить, то тебе стоит полистать phrack, там есть пару толковых статей по созданию руткитов.

anonymous
()

в какую сторону

как это все устроено в линуксе я не знаю даже приблизительно.

В сторону изучения POSIX и LSB, чтобы иметь представление о работе линукса и вообще UNIX-подобных систем.

Unicode4all ★★★★★
()

Крч, расскажите, как обстоят дела с программированием на плюсах под Linux.

Плюсы платформеннонезависимы, потому с ними дела обстоят как и везде.

Меня интересуют глобальные отличия в принципе написания программ ... подобие .dll (.so вроде) ... искать процессы ... гуглить умею, если хотя бы подскажете, в какую сторону - буду благодарен.

Нет, не умеешь. Ты же и так знаешь ключевые слова по которым нужно искать.

anonymous
()

Я пишу программуси на Qt для win/lin, честно скажу что до определенного момента особенной разницы даже не вижу. Ты задаешь вопрос про Linux будто это инопланетная ОС с Нибиру, на деле же это во многом похожая на форточки система.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Нет, это совершенно не похожая на мастдай система. Просто Qt-шники заботливо огородили таких дурачков от особенностей ОС программными интерфейсами Qt.

anonymous
()

Все тоже самое, dll называются so, VirtualProtect называется mprotect, только смысл внедрять, если есть исходники.

ilovewindows ★★★★★
()
Ответ на: комментарий от anonymous

про прям «совершенную непохожесть» можешь рассказывать своей бабушке, хотя да - отличия есть да еще какие

I-Love-Microsoft ★★★★★
()

За С++ тебе никто, кроме С++, не пояснит.

bvn13 ★★★★★
()

dll нет

Да, есть .so. Динамически подключить ее в прогу теоретически возможно.

Меня интересуют глобальные отличия в принципе написания программ

man make

narkoman228
()
Ответ на: комментарий от I-Love-Microsoft

на деле же это во многом похожая на форточки система

Тебе нужно к поням на твоей аве. Что у вантуза от *nix вообще есть, кроме вложенных каталогов?

narkoman228
()

трейнеры, читы
как это все устроено в линуксе

никак - игор нет.

anonymous
()
man ld.so | grep -C 20 PRELOAD
pon4ik ★★★★★
()

LTMGFY:

ПС гуглить умею, если хотя бы подскажете, в какую сторону

по диагонали и в другие стороны:

ltmgfy://Дреппер «„Как писать разделяемые библиотеки“

задание со звёздочкой: про поломанную совместимость с версионированными символами в glibc, см. например в вики генты про „миграцию на новый glibc с новым ABI“, и вопрос на понимание, почему после этого мир желательно пересобрать заново. почитай сюда же про случаи, когда ABI glibc таки ломается (например, когда в memmove перекрываются области, был момент когда ABI сломали и старые программы некорректные переставали работать).

ещё читай книжку (гугли в интернетах) „linkers and loaders“, там про это подробнее.

но на бытовом уровне тебе это не нужно: хватит LD_PRELOAD.

ещё читай про LSB, ABI и бинарную совместимость (кроссдистрибутивную сборку)

anonymous
()

LTMGFY:

ПС гуглить умею, если хотя бы подскажете, в какую сторону

по диагонали и в другие стороны:

ltmgfy://Дреппер «„Как писать разделяемые библиотеки“

в целом, DLL это немного не то, что „разделяемые библиотеки“: „разделяемые библиотеки“ это PIC-код, перемещаемый и релоки при загрузке (см. исходники ld.so  — загрузчика ELF-ов в Linux, или похожий загрузчик эльфов с .so-шками в BeOS/Haiku — там он проще, понятнее, но более неправильный).

DLL-ки обычно отображаются по одному адресу, не перемещаемые (обычно) и не экспортируют данные, а только код (отсюда см. забавные костыли про „версионированные символы“ в разделяемых библиотеках).

в cygwin и msys2 есть замечательный костыль под названием dll-rebase или как-то так из за этого вот, из-за того что DLL это недоделанные „разделяемые библиотеки“.

[**] задание со звёздочкой: про поломанную совместимость с версионированными символами в glibc, см. например в вики генты про „миграцию на новый glibc с новым ABI“, и вопрос на понимание, почему после этого мир желательно пересобрать заново. почитай сюда же про случаи, когда ABI glibc таки ломается (например, когда в memmove перекрываются области, был момент когда ABI сломали и старые программы некорректные переставали работать).

ещё читай книжку (гугли в интернетах) „linkers and loaders“, там про это подробнее.

но на бытовом уровне тебе это не нужно: хватит LD_PRELOAD.

ещё читай про LSB, ABI и бинарную совместимость (кроссдистрибутивную сборку)

anonymous
()
Ответ на: LTMGFY: от anonymous

грубо говоря, dll-rebase это аналог prelink в линуксах

только с костылями, потому что на DLL есть свои ограничения

anonymous
()
Ответ на: комментарий от anonymous

ещё вот тут есть пара полезных ссылок

Linux execve processing (at LWN) [2015]

Linux syscall processing (at LWN) [2014]

а по теме — ну попробуй поставь себе SteamOS и собери что-нибудь себе с учётом ABI, LSB и т.п. кроссдистрибутивно с LD_PRELOAD

anonymous
()
Ответ на: комментарий от anonymous

ещё см. про hotpatching

ну и агнера фога почитай про calling conventions, abi, c++

anonymous
()
Ответ на: комментарий от anonymous

грубо говоря, dll-rebase это аналог prelink в линуксах

prelink уже сам по себе костыль, куда уж более костыльнее. А вообще ТСу лучше посмотреть на System V Application Binary Interface после статей Drepper'а.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.