Сейчас на форуме: localhost1, vsv1, asfa, tyns777 (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Си в хакинге
<< . 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение

Ранг: 0.6 (гость), 1thx
Активность: 0.05=0.05
Статус: Участник

Создано: 09 марта 2020 00:35
· Личное сообщение · #1

Здравствуйте, изучаю чистый Си в ВУЗе и дома по книжке "дэвид гриффитс дон гриффитс изучаем программирование на c". Недавно задался вопросом, как часто используют конкретно чистый си для написания хакерских программ и какие программы чаще всего пишут? Очень хотел бы погрузиться во всю эту сферу, попрактиковаться, но не могу найти ни материала по этой теме, ни исходников. Возможно задаю глупый вопрос, но если кто-то что-то может подсказать, то буду очень рад

| Сообщение посчитали полезным: ar2r

Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 17:24 · Поправил: NaSIlnik
· Личное сообщение · #2

morgot пишет:
Это конкретно gcc так умеет, в студии же это все намного сложнее и много нюансов.

В этом случае будет проще написать свой релокатор в 20 строк кода, чем писать весь код в базонезависимом стиле.

PS: вступай и компелируй.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 марта 2020 20:14 · Поправил: difexacaw
· Личное сообщение · #3

NaSIlnik

> потому что в сишный код можно вставлять специальные инструкции процессора

Не не по этому. А потому что каждая по большей части базовая операция транслируется в машинную инструкцию. При этом длина записи куда сложнее чем в кодировке непосредственно асм. По идеи это должно упрощать код, но на деле же треугольные" конструкции двусмысленные делают его не читаемым, поэтому сишка и говяный яп.

Басик с инлайн вставками например --> Link <--.

> в базонезависимом стиле.

64 сама адресация релатив. Но не нужно путать какой то шелл специально собранный и обычный бинарь. Второму нужен загрузчик, что бы настроить в памяти. НТ не линь, сисколов не напихаешь, нужен импорт как минимум и образ для запуска. И вообще о чём речь, шеллы на си не собирают. Перелогись, а то не ясно кто ты.

-----
vx




Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 20:20 · Поправил: NaSIlnik
· Личное сообщение · #4

Интринсики не просто транслируются в машинные инструкции, а ещё и транслируются оптимальнее чем 90% горе-ассемблерщиков способны написать вручную. Компилятор хорошо распределяет регистры и способен сам генерировать загрузку/сохранение XMM/YMM/ZMM переменных.

difexacaw пишет:
нужен импорт как минимум и образ для запуска.

Находим PsLoadedModulesList через PEB да парсим экспорты системных дллок. Делов то.

difexacaw пишет:
И вообще о чём речь, шеллы на си не собирают.

На си собирают в принципе всё что угодно.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 марта 2020 20:23
· Личное сообщение · #5

NaSIlnik

> 90% горе-ассемблерщиков способны написать вручную.

Не нужно только бред про оптимизацию недалёкий затирать, дерьмо там оптимизатор полное. Иногда такие глюки выдаёт.. не удивительно впрочем, автоматика не совершенна.

-----
vx




Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 20:26
· Личное сообщение · #6

difexacaw пишет:
Не нужно только бред про оптимизацию недалёкий затирать, дерьмо там оптимизатор полное. Иногда такие глюки выдаёт.. не удивительно впрочем, автоматика не совершенна.

Это да, с оптимизатором у MSVC порой приходится бороться. Попробуйте интел, он намного лучше.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 марта 2020 20:31 · Поправил: difexacaw
· Личное сообщение · #7

NaSIlnik

> Компилятор хорошо распределяет регистры

Ну ты вначале потести что нибудь на профайл, такое обычно утверждается теми, кто первый раз с сишкой встретился и афигел от нэйтива из за его незнания. Распределение регистров никак на профайл не влияет, а число выборок в память при блокировках, а по большей части вся оптимизация сводится к удалению ветвлений, так как на условиях основная просадка профайла.

> На си собирают в принципе всё что угодно.

И.. что с этим делать..

PS: вступай и компелируй

Добавлено спустя 12 минут
Вот тут посмотри --> Link <--

Даже в элементарных конструкциях нет стандарта, извраты как и вся сишная парадигма. Красиво оно выглядит когда вылизывается за бабки в крупных конторах, а так всегда высер и никакой там нет оптимизации, там не предназначено.

-----
vx




Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 20:57 · Поправил: NaSIlnik
· Личное сообщение · #8

difexacaw пишет:
Распределение регистров никак на профайл не влияет

Влияет, потому что в 32 битном режиме у нас доступно 8 штук XMM/YMM регистров, в 64 битном уже 16; А в AVX512 их стало 32;
Вы пишите сишный код один раз, компилятор собирает для каждого случая по-разному.
Результат хуже, чем если вручную вылизывать много ассемблерных версий, зато очень просто.

difexacaw пишет:
Даже в элементарных конструкциях нет стандарта, извраты как и вся сишная парадигма.

Что предложите в замен?



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 23 марта 2020 20:59
· Личное сообщение · #9

difexacaw пишет:
Даже в элементарных конструкциях нет стандарта, извраты как и вся сишная парадигма

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




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 марта 2020 21:04
· Личное сообщение · #10

rmn

Я не утверждал обратное. Там косячат больше чем в асм, так как кривой синтаксис; если не спец в сишке на ней пишет то это пц. Это вопрос к человеку выше.

-----
vx




Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 21:09 · Поправил: NaSIlnik
· Личное сообщение · #11

В качестве примера использования SIMD вычислений на сишечке - посмотрите код библиотеки FFTW.
Там код векторных вычислений всего один, но собирается в кучу разных вариантов для множества разных наборов инструкций, включая не-интеловские процы.
Преимущества такого подхода перед бесконечным переписыванием одинакового кода в 20ти вариантах слишком уж очевидны.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 марта 2020 21:09
· Личное сообщение · #12

NaSIlnik

> Что предложите в замен?

Кто его знает, весь профайл уходит в IDLE ожидание, на сервисах ос. Критичные по времени функции не особо важно на чём реализовать, если это сишка и не уступает по количеству ветвлений асм, то и она сгодится. Но это довольно редко нужно. Врядле ты пример такой задачи приведёшь. Да и в общем сам алго всё решает, а не вылизывание кода по инструкциям.

-----
vx




Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 21:44 · Поправил: NaSIlnik
· Личное сообщение · #13

Код занимающийся не вычислениями, а управлением - можно писать на чем угодно. Языки высокого уровня предпочтительнее.
Но есть задачи на вычисления, где желательна предельно возможная скорость и на разных машинах. Плюс важна чистота и безбаговость алгоритма.

Сама задача может представлять собой вагон математики, на комплексных числах, векторах, или еще чём-то таком.
На асме вы будете это писать до пенсии, а отладить не успеете.

Из всех ЯВУ для такого подходит только С и немного С++. Вот тупо нет другого языка с таким набором возможностей. Си безальтернативен.

А шеллкоды это ерунда, их можно написать на любом компилируемом языке который не требует обязательного рантайма.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 марта 2020 21:55
· Личное сообщение · #14

NaSIlnik

> На асме вы будете это писать до пенсии

Да не ужели ?

Я только глянув на сишный машкод вижу затыки на профайл. Не делай выводы по себе, ты же ведь ньюби нахватался каких то терминов из гугла. Может пример наконец приведёшь ?

-----
vx





Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 23 марта 2020 22:02
· Личное сообщение · #15

NaSIlnik пишет:
Находим PsLoadedModulesList через PEB да парсим экспорты системных дллок. Делов то.

Действительно, как же легко... сказать какой-нибудь теоретический бред
Nt* функция хукнута и номер лежит в стабе хука? Насрать, находим PsLoadedModulesList через PEB да парсим экспорты, и пофиг что номер сисколла мог уехать куда угодно
Нужны номера от Win32k не на 10ке? Насрать, находим PsLoadedModulesList через PEB да парсим экспорты, и пофиг что там нет имен
Загружать дллки с диска, хранить таблицы системных номеров? Насрать, находим ну вы поняли

-----
В облачке многоточия




Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 22:09
· Личное сообщение · #16

difexacaw пишет:
Может пример наконец приведёшь ?

Уже приводил. Посмотрите FFTW. Это библиотека для дискретного преобразования фурье в вещественных числах, комплексных числах, многомерного преобразования фурье, обратного преобразования фурье (во всех вариантах), преобразованя Хартли и дискретного косинусного преобразования.

Если вы напишете на ассемблере хотя-бы только простое одномерное преобразование Фурье в комплексных числах, так чтобы оно обрабатывало миллиардный массив за минуту - то вы великий Гуру и чудотворец. При условии что ваш код будет работать безошибочно. Это будет примерно как вручную сложить пятиэтажку из отдельных кирпичей, в одиночку и без инструментов.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 23 марта 2020 22:09
· Личное сообщение · #17

Boostyq

Речь была про перемещаемый код, а потом пациент начал вещать про викс реализацию, ничего другого и быть не могло.

Добавлено спустя 1 минуту
NaSIlnik

> Если вы напишете на ассемблере

Есчо раз повторяю вопрос, приведи пример.

-----
vx




Ранг: 1.1 (гость), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 23 марта 2020 22:29 · Поправил: NaSIlnik
· Личное сообщение · #18

Пример чего? Шеллкода на си? Поиска API начиная из голого кода?
procaddr - вот что нагуглилось за две минуты. Правда это для ядра.

Вот ещё нашел. Поиск базы kernel32 без ассемблерных вставок.
Code:
  1. HMODULE
  2. GetKernel32Module()
  3. {
  4.     wchar_t Kernel32Name[] = L"kernel32.dll";
  5.     win32_teb* TEB = (win32_teb*)__readgsqword(0x30);
  6.     win32_ldr_data_entry* LoaderDataEntry = TEB->PEB->LoaderData->LoaderDataEntry;
  7.     
  8.     while (LoaderDataEntry->DllBase) {
  9.         if (CompareMemory(LoaderDataEntry->DllNameBuffer, Kernel32Name, min(LoaderDataEntry->DllNameLength, sizeof(Kernel32Name))) == 0)
  10.         {
  11.             return (HMODULE)LoaderDataEntry->BaseAddress;
  12.         }
  13.         LoaderDataEntry = (win32_ldr_data_entry*)(LoaderDataEntry->LinkedList.Flink);
  14.     }
  15.  
  16.     return NULL;
  17. }

Используется интринсик функция __readgsqword.

Этот и тот исходники с гитхаба мне наверное приснились. Как так, ведь писать шеллкоды на си это ересь и святотатство!

А теперь на закуску - шеллкод на С++ который работает под 32 и 64, без единой ассемблерной вставки.
Шеллкодес может быть кроссплатформенным, кто бы мог подумать что такое бывает!

Прикинь, вызывать API из шеллкодеса можно одной строкой кода, сишка сама сгенерирует всё что надо.
Это особая шаблонная магия С++11. Неприплюснутый си так не умеет, макроассемблер тем более.

Code:
  1. LI_FN(OutputDebugStringA)("hello world");


Обработку таблицы релокаций, чтобы не париться с доступом к данным, найдите сами.

difexacaw пишет:
И.. что с этим делать..

Учить языки.

difexacaw пишет:
ньюби нахватался каких то терминов из гугла

Ага, именно так. Я нахватался терминов из гугла. Ну не хакер я, что поделаешь. Потому и несу всякую чушь.
Но вы наставите меня на путь истинный. Склоняюсь перед вашим величием! Не гневайтесь, о Великий Гуру!

| Сообщение посчитали полезным: ASMiral, morgot


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 24 марта 2020 00:50
· Личное сообщение · #19

Я пропустил, с чего начался весь срач

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 90.1 (постоянный), 91thx
Активность: 0.290.56
Статус: Участник

Создано: 24 марта 2020 00:55
· Личное сообщение · #20

Вообще не понятно, я вначале думала они про нахождение номеров сисколов, т.к. дифексекав написал что это не линукс и сисколов не напихаешь потому что номера нестатичны, а в ответ чел ему запруфал что можно найти модуль без GetModuleHandle, шта?

-----
В облачке многоточия





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 24 марта 2020 01:17 · Поправил: f13nd
· Личное сообщение · #21

Я понял только что ассемблер гавно, потому что в х64 регистров общего назначения больше, чем пальцев на руках. Загибать пальцы на ногах неудобно, по этой причине миллионы мух выбирают си.

-----
2 оттенка серого




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 24 марта 2020 01:26 · Поправил: dosprog
· Личное сообщение · #22

f13nd пишет:
Я понял только что ассемблер гавно, потому что в х64 регистров общего назначения больше, чем пальцев на руках. Загибать пальцы на ногах неудобно, по этой причине миллионы мух выбирают си.

Простые программы, состоящие сплошь из вызовов API, нагляднее и компактнее выглядят на Си.
Код для макроассемблера, с использованием его макро-возможностей, в таком случае мало чем будет отличаться.
И то - в худшую сторону.
Очень удобно также, когда реализация вычислительных задачек на Си выглядит одинаково для разных платформ.
Хорошая вешь, однозначно.
Так что мухи в чём-то правы.






Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 24 марта 2020 01:29 · Поправил: f13nd
· Личное сообщение · #23

dosprog пишет:
нагляднее и компактнее выглядят на Си

А еще я узнал, что разрешающая способность монитора тоже аргумент против ассемблера. А нахватив монитор пошире можно столкнуться с проблемой ширины коврика для мышки, которого может не хватить. Дорогое удовольствие этот ассемблер.

-----
2 оттенка серого




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 24 марта 2020 01:38 · Поправил: dosprog
· Личное сообщение · #24

f13nd пишет:
Дорогое удовольствие этот ассемблер.

Надо пробовать, короче.

Изучает человек Си - и пускай изучает, что в этом плохого?

Просто нужно чётко понимать, что скрывается за любой си-шной конструкцией, в ассемблерном виде.
И наоборот.






Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 24 марта 2020 01:51
· Личное сообщение · #25

dosprog пишет:
Просто нужно чётко понимать, что скрывается за любой си-шной конструкцией, в ассемблерном виде.

В случае со студией невозможно предсказать что там в ассемблерном виде получится. И чтоб не загибать пальцы на ногах в студии есть отладчик, где переменные подписаны и отображаются в соответствии с типом. А потом они идут на форумы, вываливают цэшный семпл и интересуются че у них нифига не работает. Тру-хацкерам не западло так делать.

-----
2 оттенка серого


| Сообщение посчитали полезным: morgot

Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 24 марта 2020 01:53 · Поправил: dosprog
· Личное сообщение · #26

f13nd пишет:
А потом они идут на форумы, вываливают цэшный семпл и интересуются че у них нифига не работает.

Так а что с этим можно сделать? Ничего.
Так было, и так будет. Это нормально.

Или человек видит за си-шными строчками асм-код, или не видит, тогда для него это будет колдунством и непонятной глючной хернёй с интернета.






Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 24 марта 2020 02:04 · Поправил: f13nd
· Личное сообщение · #27

dosprog пишет:
Так было, и так будет. Это нормально.

Недавно один выложил семпл, где забыл цэшный маскирующий бекслеш перед бекслешем. Даже встроенная подсветка синтаксиса и та охерела при виде такого, но его вообще не смутило. Я думаю в дальнейшем так не будет, будет еще комичней.

-----
2 оттенка серого




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 24 марта 2020 02:12 · Поправил: dosprog
· Личное сообщение · #28

ARCHANGEL пишет:
Я пропустил, с чего начался весь срач

Та такое..

f13nd пишет:
Недавно один выложил семпл

Тут современному интересующемуся пиплу плохую службу оказывает интернет,
куда можно проорать о помощи, и, как правило, помощь придёт.
То ли дело 90-е и 00-вые, когда орать было не к кому.
Философия..

--Добавлено--
Помню, как возился с одной отдизасмленной программкой неделю к ряду, вечерами,
и когда уже совсем озверел, она вдуг заработала как надо.
Правда, в том случае интернет вряд ли бы чем-то помог.
)) Чаще всего приходится быть наедине с собственными мульками

Оно помогает осознать в полной мере



| Сообщение посчитали полезным: Dr_Braun

Ранг: 0.6 (гость), 1thx
Активность: 0.06=0.06
Статус: Участник

Создано: 24 марта 2020 05:16
· Личное сообщение · #29

difexacaw пишет:
ты же ведь ньюби нахватался каких то терминов из гугла


Вот тут я ваще упал со стула
ньюби он где? на этом форуме?
дедовщина какая-то, схватил тряпку салага!
вы нас ночью бить не будете?





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 24 марта 2020 09:47
· Личное сообщение · #30

Не будь нубом! Сочини термины сам, чтоб тебя никто не понял!

-----
2 оттенка серого




Ранг: 19.5 (новичок), 8thx
Активность: 0.050.08
Статус: Участник

Создано: 24 марта 2020 10:28
· Личное сообщение · #31

f13nd пишет:
В случае со студией невозможно предсказать что там в ассемблерном виде получится.

Вы про Visual Studio?
Там кстати есть удобный дизассемблированный листинг (Отладка - Параметры - Включить отладку на уровне адреса - Показывать дизассемблированный код).
Далее ставим точку останова, жмём Alt+8 и переходим на вкладку Дизассемблированный код.
Да, конечно без подсветки и более расширенных символов смотрится всё это достаточно скудно, но свою задачу отрабатывает в полной мере.


<< . 1 . 2 . 3 . 4 . >>
 eXeL@B —› Вопросы новичков —› Си в хакинге
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати