Это копия, сохраненная 8 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Книги по RE:
Денис Юричев: "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
Прямая ссылка - https://yurichev.org/b564f46f1c207b2dbc84a2bd4a41ed4c/
Рикардо Нарваха: Введение в реверсинг с нуля, используя IDA PRO https://yutewiyof.gitbook.io/intro-rev-ida-pro/
Введение в крэкинг с помощью OllyDbg https://backoftut.gitbook.io/intro-cracking-with-ollydbg/
https://mega.nz/#!Bc9VVAYC!Vk6CFlW6VIoskLNgDKXbsL6FacDQeOKe6LX92wNicKY Нарваха практический курс по дебагингу
https://www.goodreads.com/shelf/show/reverse-engineering - список книг
Сайты по RE:
http://wiki.yobi.be/wiki/Reverse-Engineering
https://www.reddit.com/r/ReverseEngineering/comments/hg0fx/a_modest_proposal_absolutely_no_babies_involved/
http://www.program-transformation.org/Transform/ReengineeringWiki
http://blog.livedoor.jp/blackwingcat/
https://yurichev.com/blog/
http://wiki.xentax.com/index.php/DGTEFF
https://exelab.ru/
Инструменты для RE:
Дизассемблеры:
1) IDA Pro Torrent Edition 7.2 | 7.0 | 6.8 на выбор. Иногда ограничения версий x86/x64, патчинг, вылеты прилагаются
2) IDA Freeware 7.0 - бесплатная для некоммерческого использования Важные функции/процы/форматы не завезли, саппорт все обращения ксорит побайтово.
3) IDA Home - тем, кто реверсит для хобби 365$ в год, ага. Умеет на выбор PC|ARM|MIPS, обычные и х64. Завезли IDAPython, но забыли Decompiler.
4) Ghidra - главный конкурент IDA Pro, разработка NSA под свободной лицензией. Тормозной Java UI, гипотетические звездно-полосатые анальные зонды в комплекте.
5) Radare 2 | Cutter - консольный + гуй на Qt дизассемблер. Умеет в Ghidra decompiler. Предположительно нужен только клиническим, не умеющим в скачивания торрентов, пользователям альтернативных ОС.
6) Hiew - Hex-редактор и легкий x86|64|arm дизассемблер за копейки. AV-ресечеры текут, вирьмейкеры боятся, поклонники st. Криса грят малаца.
7) Остальное
Отладчики:
1) x64dbg - х86/64 юзерспейс виндовый отладчик с открытым кодом не Olly же в 2020, верно?;
2) WinDbg - родной виндовый дебаггер от MS 32/64 битные приложения, драйвера, анализа аварийных дампов - это все к нему;
Все книги и статьи Криса Касперски (R.I.P.)
https://yadi.sk/d/CxzdM1wyea4WP
https://rutracker.org/forum/viewtopic.php?t=5375505
https://rutracker.org/forum/viewtopic.php?t=272818
Книги по ассемблеру:
"Архитектура компьютера" Э. Таненбаум - https://www.libgen.is
Юров В.И: Assembler http://booksdescr.org/item/index.php?md5=73957AEFEADCB7F0C112DCAED165FEB6
С.В. Зубков: Assembler. Язык неограниченных возможностей.
Randall Hyde: The Art of Assembly Language http://booksdescr.org/item/index.php?md5=9C0F88DC623FCE96A4F5B901ADCE95D3
Сайты по ассемблеру:
Замена почившему wasm.ru- https://wasm.in/ , архив старого сайта https://rutracker.org/forum/viewtopic.php?t=407571 или восстановленный https://vxlab.info/wasm/index.php.htm
https://www.unknowncheats.me/wiki/Assembly
http://asmworld.ru/
https://software.intel.com/en-us/articles/intel-sdm
http://www.nasm.us/doc/
https://sourceware.org/binutils/docs/as/index.html#Top
https://msdn.microsoft.com/en-us/library/afzk3475.aspx
https://conspectuses.blogspot.com/2019/03/fasmg.html
Дизассемблер онлайн:
https://onlinedisassembler.com/
Сборник компиляторов онлайн:
https://godbolt.org/
Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
http://msdn.mirt.net/
http://terminus.rewolf.pl/terminus/
http://geoffchappell.com/
«Внутреннее устройство Windows» интересующего издания.
Документация Intel:
https://software.intel.com/en-us/articles/intel-sdm
Документация AMD:
https://developer.amd.com/resources/developer-guides-manuals/
Документация Arm:
https://developer.arm.com/documentation/
Разное:
Michael Abrash's Graphics Programming Black Book Special Edition http://www.phatcode.net/res/224/files/html/index.html
http://www.phatcode.net/res/224/files/html/index.html
https://www.agner.org/optimize/
http://booksdescr.org/item/index.php?md5=5D0F6DBC1410E10BC489167AFE8192DF
https://www.cs.cmu.edu/~ralf/files.html
https://www.sandpile.org/
http://ref.x86asm.net/index.html
https://pnx.tf/files/x86_opcode_structure_and_instruction_overview.png
http://www.jegerlehner.ch/intel/
Предыдущие:
№9 https://2ch.hk/pr/arch/2019-11-11/res/1439555.html (М)
№10 https://2ch.hk/pr/arch/2020-03-11/res/1499956.html (М)
№11 >>1584716 (OP)
Вкатился
Поподём в список отечественного по и будем пилить заказы от газпром-медиа? А если они не захотят купить? Как-то не очень надёжно спланировано
Нет. Мы с тобой будем пилить DRM систему для Android приложений и игр. Нам передают условно игру на Unity, мы ставим защиту, отдаём аппу разрабу.
Гугл говорит в андроиде встроенный есть. Кому нужна альтернатива? И зачем тогда делать отечественую?
на юниора или на фулл вакансию?
на джуна, если не тролль вопрос
Есть куча бесплатный сервисов, где дело не ограничено кукушкой. Вообщем хз, разве что индусам впаривать.
Я про мануал реверс того, что кукушка сочтёт подозрительным. Типа автоматически любой желающий может бесплатно проверить файлик, а если что-то важное, то можно за денюжку попросить живого человека оперативно взглянуть на этот файл.
Ну gib же предлагает такую услугу. Только у них ещё и свой форк кукушки выдаётся заказчику. Но я надеюсь у меня и без этого взлетит
> Поподём в список отечественного по и будем пилить заказы от газпром-медиа? А если они не захотят купить?
Как работник газпром-медиа скажу - не захотят. Всё уже давно куплено и продано за вас. Тем более в компании сейчас массированные кадровые перестановки произошло, нужных человечков-кабанчиков посадили на высокие должности.
https://careers.kaspersky.ru/crackme/
Отбой. Я передумал. Теперь новая идея. Сделать то же самое, но для андроида. Развернуть андроидную кукушку и сделать публичной. Такой в инете я не нашёл. Похоже моя популярная будет среди независимых ресёрчеров. Принимать заказы на ручной анализ малвари на адроид, а в свободное от заказов время писать статьи. Публиковать бесплатно статьи, а внизу писать, что больше инфы для подписчиков услуги threat intelligence. Как касперский с apt репортами делает. Ну и продавать сигнатуры, хеши, детальный анализ разным антивирусам или крупным компаниям через ресейл партнёров за бугром. Годная идея? Рянок же особо не занят. Хотя спроса на андроид безопасность не много, но тренд на рост есть. Сделает такой стартап меня долларовым миллионером?
О надо попробовать, может еще и на работу возьмут.
только самой активной малвари под андройд всего 5-6 штук наверное,лол
Да и у гибрид анализса и эни рана вроде есть песочницы под ведра
У первого точно
Во второй таске дропер не может создать запустить пэйлоуда, а пэйлоуд не может подключиться к пайпу. От админа запускать пробовал. Есть у кого так же? Как решили?
в касперском даже дроппер нормально написать не могут
Ебал твою мать уебок. Ахах прикольный сайтик да?))) Мудила пидорас блять ещё другие ебики видят эту хуйню и не стыдно даже писать в этот тред. Студентишки зумерки ебучие твари пидорасы каждому ссал в рот
>Есть у кого так же?
У меня все нормально.
>Как решили?
Ставил бряк на CreateProcessW в Terminal.exe. Аттачился к процессу apof.bin. Он запакован UPXом. Расспаковал его и сдампил. Потом уже смотрел в дебагер. Очень простой крякми, но сложнее 3, как мне показалось.
Сильно не бейте если хуйню сделал и можно проще, я ньюфаг пока.
Странно. У меня CreateProcess возвращает ошибку. А какой версии у тебя ида? У меня библиотечные функции сами не задетектились. Даже не стал снимать upx т.к. какой смысл это делать когда процесс даже не запускается. А когда запускаю вручную, то бесконечно пытается подключится к пайпу безуспешно, хотя пайп создан
Действительно в ней всё удобней. Я чёт очковал пользоваться пираткой на случай если в каспер на собес позовут и спросят как решал. Поэтому взял бесплатную, а там фичи до 7.0
Нет. Вторая самой просто показалась. Но даже её ещё не решил. А долго это будет длиться? Судя по лидерборду всего несколько человек всё решили, а длится оно уже почти месяц
https://www.google.com/search?q=отзывы+работа+в+касперском
Начинай сразу с негативных
Не знаю еще одного человека который бы работал в вирлабах и ушел бы оттуда довольный
Я с сюсера тоже проиграл. Джун чисто физически знать про него не может. И вообще это локальный инструмент с соседних форумов, лол.
>>751701
А что-то изменилось разве? Малварь все та же, добавляются лишь слои запутывания, новых ботов никто не пишет, винда(натив) все тоже самое. Какие требование к новичку еще могут быть по твоему?
> А что-то изменилось разве?
Никто такие дебагеры не использует в 2020.
Только анальная IDA Pro указана.
Ring-0, Perl в 2020?
> Никто такие дебагеры не использует в 2020.
Какие такие? WinDbg (Preview) единственный ядерный отладчик.
> Только анальная IDA Pro указана.
Ида универсальный инструмент, аналогам еще расти и расти.
> Ring-0
Сложные атаки с задействованием драйверов никуда не пропали и даже замечен рост в последние годы. LPE/RCE/DOS/ etc, etc также на уровне ядра работают, напрямую или косвенно. Весь натив апи, которым оперирует малварь - это вызовы системных сервисов ядра.
Можно было закинуть конечно владение DBI/EMU фреймворками/движками, но джунам расти до такого.
57 Best Kernel Books of All Time:
https://bookauthority.org/books/best-kernel-books?t=h2s0g7&s=author&book=1977593372
Есть задача найти в UEFI прошивке модуль обработки нажатия F2 для входа в BIOS Setup.
Согласно пик. 1, логично предположить, что он работает или во время DXE фазы или после работы CMS модулей (модуль поддержки совместимости) или после загрузки DXE.
На пик. 2 - файловая система прошивки.
Но проблема не только найти соответствующий модуль, на пик. 3 - дизассемблер SECurity фазы, самой первой. И если fninit, cli - понятно что и зачем на старте, то даже дальше что происходит - непонятно.
Вот функции обработки нажатия, я предполагаю что логично было бы после инициализации модулей совместимости, то есть после возможности отображать картинку на экране, или в каждый исполняемый фрагмент вставить обработчик или же в векторе прерываний от клавиатуры ссылаться на него. Но это лишь догадки.
проблему-вопрос когда-то поднимали челик на exelab.ru (https://exelab.ru/f/?action=vthread&forum=2&topic=26280), но там народ лишь развел руками и примерно указал сторону куда двигаться.
Ссылка на файл - (http://www.lex.com.tw/download/bois/CI770A/CI770AA6.zip)
Как и некто на exelab - не прошу решать, подскажите куда думать.
Пик. 1 открепился, вот он
Хочу попробовать запилить простой верификатор хешсуммы сегментов кода.
Допустим, по tcp я буду получать пакет с шеллкодом который считает хеш какого-то сегмента и отправляем обратно.
Можно ли посчитать в комбайн тайме размеры сегментов? Можно их перечислить, вроде бы, компилятор на своё усмотрение их делает?
Есть ли разница между ос для определения размеров сегментов или начального сдвига?
Как вшить в блоб хеш самого блоба вместе с этим хешем?
> Можно ли посчитать в комбайн тайме размеры сегментов
Нельзя. Нужно модифицировать линкер, либо анализировать файл после компиляции.
> Есть ли разница между ос для определения размеров сегментов или начального сдвига?
Формат файлов PE, ELF, Mach-O, etc.
>>752527
https://exelab.ru/f/?action=vthread&forum=2&topic=26280
http://www.lex.com.tw/download/bois/CI770A/CI770AA6.zip
я как еблэн ссылки в скобки взял
> WinDbg (Preview) единственный ядерный отладчик.
Чего, блять? cdb/ntsd/kd для кого?
> Ида универсальный инструмент, аналогам еще расти и расти.
При этом IDA уже сосет у гидры. HexRays на свежих компиляторах спотыкается и выдает совершенно нечитабельное говно. С AVX вообще пиздец.
> Сложные атаки с задействованием драйверов никуда не пропали и даже замечен рост в последние годы.
Тут надо пользователей пиздить палкой, а не ковырять это говно.
>Какие такие? WinDbg (Preview) единственный ядерный отладчик.
Речь про сиську и олли
первый уже просто не работает в современных системах,второе устарело,тк 32 бит онли
CreateDialogParam, скрин1. После сворачивания-разворачивания имеем скрин2. Что надо добавить в код? Обработку WM_Size?
> Чего, блять? cdb/ntsd/kd для кого?
> WinDbg, NTSD, CDB, and KD all share the same debugging engine, so they share all the same commands. The only differences between them is that WinDbg has GUI interface, NTSD, CDB and KD have console interfaces
А ты не знал еще скажи. Так и живем.
>>752566
Это понятно. В принципе иды и виндбг хватает.
>>752569
Разберешься, когда время придет, основные тулзы для глубокого анализа и автоматизации рабочего процесса.
создавать модальное окно через DialogBoxParam? Вроде, у немодального какие-то дополнительные возможности/плюшки..
Иклезион пишет:"Независимые диалоговые окна дают вам возможность перемещать фокус ввода на другие окна. Пример - диалоговое окно 'Find' в MS Word. Есть два подтипа модальных диалоговых окон: модальные к приложению и модальные к системе. Первые не дают вам переключаться на другое окно того же приложения, но вы можете переключиться на другое приложение. Вторые не дают вам возможности переключиться на любое другое окно. "
Имхо, он пизидит, устарел, т.к. на W7 фокус переключается. Далее он пишет об отлтичиях в сообщении WM_CREATE - тоже устарело. Метод тыка показал, что оба CreateDialogParam/DialogBoxParam получают только WM_INITDIALOG.
п.с. спасибо, сейчас сам разберусь и отпишу..
п.с. от яндекса толку почти ноль, ничего нельзя найти!
> создавать модальное окно через DialogBoxParam
Вообще да. Но можешь продолжать использовать CreateDialogParam. Класс для этого не нужен.
> Имхо, он пизидит, устарел, т.к. на W7 фокус переключается
Что касается system modal - да, устарело еще в 9x. Application modal все еще работают. Например, стандартный диалог открытия файлов, если вызываеть его с правильным OPENFILENAME.hwndOwner будет как раз application modal, т.е., заблокирует твое основное окно.
> WM_CREATE
Не знаю, что именно он там пишет, но вот как раз ради всевозможных WM_CREATE классы для диалогов и регают. Если тебе просто кнопочки, а не выебываться - эти сообщения тебе не нужны, как и кастомный класс.
Короче либо выкинь классы, либо осознай, что DialogProc != WindowProc. В первом для необработанных сообщений нужно возвращать FALSE, во втором - дергать DefWindowProc. Сейчас ты вызываешь DefWindowProc, когда это не нужно (менеджер диалогов от тебя этого совсем не ожидает), и при этом ты еще и проебываешь ее код возврата, который имеет значение для WindowProc. Если напишешь две разных и правильных процедуры - спецэффекты тоже должны прекратиться.
спасибо!!!
всё заработало! Как ты и говорил, после замены DefWindowProc на
.default
mov eax,FALSE
.endc
То есть, выходит, WndProc для DialogBoxParam и для CreateDialogParam абсолютно одинаковы!
Но мастадонт от мира asm'а Iczelion утверждает, что CreateDialogParam ближе к CreateWindowEx, ей требуется DefWindowProc. И.. его примеры компиллируются на masm и правильно работают!
Залил Iczelion на диск , урок №10.
https://yadi.sk/d/gAHUFiB4iQT2mA
Как этот парадокс можно объяснить?!
п.с. может, есть книга, в которой всё это разжёвано?
п.с.2. как ты и сказал, можно убрать (для CreateDialogParam - примера выше) регистрацию класса (он уже предопределён), оставить в WinMain только:
.while GetMessage(&msg, 0, 0, 0)
TranslateMessage(&msg)
DispatchMessage(&msg)
.endw
mov eax,msg.wParam
ret
Похоже, это всё наследие от WindowProc/CreateWindowEx. Для DialogBoxParam и этого не требуется..
Вот тут объяснение с примером си-шного кода:
https://ctf101.org/binary-exploitation/buffer-overflow/
Вот тут 29 байт готовой полезной нагрузки:
http://shell-storm.org/shellcode/files/shellcode-905.php
При сборке бинарника указаны no-stack-protector и execstack. GDB говорит, что полезная нагрузка легла в стек, сохраненный RIP перезаписан - и дальше выполняется /usr/bin/bash симлинк /bin/sh. Но при этом без отладчика этот же пример с этими же входными данными валится в segmentation fault.
Але, я не пони, где моя консоль?
ASLR включен?
Даже если выключен, то границы адресов стэка в GDB != границы адресов стэка при исполнении программы вне его, во многом из-за переменных окружения.
Убедись, что ASLR выключен.
Запусти программу в отладчике через env - gdb /path/to/program
пропиши:
unset env LINES
unset env COLUMNS
После этого команда show env не должна ничего выводить в консоль отладчика.
Продолжай дебажить прогу, найди адрес на стэке, куда хочешь писать шеллкод и вполсдедствие перенаправлять instruction pointer, и захардкодь этот адрес в эксплоит. Должно работать.
добавлю:
Запускай эксплоит следующим образом:
(python exploit.py ; cat) | /path/to/program
Иначе даже корректный эксплоит может крашнуться.
А вообще советую изучить либу pwntools, там есть метод interactive() для этих целей, да и вообще там есть много плюшек, которые упрощают написание эксплоита, засим можно полностью сконцентрироваться на исследовании уязвимостей, а не ебаться с написанием замысловатых эксплоитов, жонглируя потоками в шелле и пихая embedded скрипт на пайтоне/перле/баше каждый раз.
>>755407
ASLR выключен, но адресация действительно различалась в отладчике и без - зааттачился к уже рабоющей программе, посмотрел/изменил перезаписываемый $rip.
Спасибо за советы. Вся эта возня с пайпами, бинарным выводом башем/перлом/питоном, да чтоб порядок байт BE\LE как надо, действительно утомляет - поиграю с готовым фреймворком.
https://www.youtube.com/watch?time_continue=2&v=Cjmdh0tQ_fw&feature=emb_logo
ключевые моменты заблюрены
Анонасы, где найти без блюра?
Ну знаешь, Zydis может и обкатан в x64, а этот диз, используется во всех продуктах bitdefender. У меня как-то больше доверия к крупной аверской конторе, чем к разрабу зудиса, который является обычным Васяном.
>bitdefender
Работал однажды с одним из их сдк для кернелдевелопмента. У них там костыли уровня в скиплист можно добавить конкретную папку чтобы скипать все объекты из этой папки, но нельзя отдельный файл. И в документации (ридми в формате тхт очевидно без разметки и навигации) написано осторожней с этим список, а то в эти папку может спрятаться малварь. Всё максимально низкоуровнево и примитивно на плюсах, но в си стиле написано (и юзерспейс и кернелспей код). Могу ошибаться т.к. доступа к исходникам не было, но судя по самплам и докам всё именно так. Они это писали поверх одного майкрософтовского фреймворка. Оказалось они тупо обернули майкрософтовский апи своими функциями, сделали typedef, пару новых структур и свою инициализацию с деинициализацией библиотеки. А и ещё службу с нуля написали, которая проксировала вызовы из юзерспейса в кернелспейс чтобы все приложения могли кернеловские колбэки вызывать. Мы очень быстро переписали весь полезный функционал и отказались от их решения.
> Оказалось они тупо обернули майкрософтовский апи своими функциями, сделали typedef, пару новых структур и свою инициализацию с деинициализацией библиотеки.
А как надо? Для этого документированный апи и существует. Что за библиотека то?
> А и ещё службу с нуля написали, которая проксировала вызовы из юзерспейса в кернелспейс чтобы все приложения могли кернеловские колбэки вызывать.
Некоторые сервисы можно перенаправить легитимными механизмами. Или там был хук + перенаправление на драйвер?
> Мы очень быстро переписали весь полезный функционал и отказались от их решения.
Т.е своровали фичи?
> А как надо? Для этого документированный апи и существует.
Не знаю. Но большинство их экспортируемых функций были обёрткой вокруг стандартных виндосовских с почти тем же именем и точно такой же сигнатурой. Ничего они не делали кроме того, что свои аргументы передавали в стандартную функцию. Похоже было, что большинство работы они сделали только чтобы вставить аббревиатуру битдефендера в название функции
> Что за библиотека то?
Кажется та что на пике, но я не уверен. Можешь загуглить если вся пдф нужна
> Некоторые сервисы можно перенаправить легитимными механизмами. Или там был хук + перенаправление на драйвер?
Хуков не было. Был какой-то простенький самописный протокол коммуникации поверх дефолтного способа передачи буфера. И в зависимости от данных в буфере драйвер решал какую функцию с какими данными вызвать. Обычно просто на разные события ставились разные колбэки обработчики
>Т.е своровали фичи?
Ну почти. Там почти не было фич. Просто немного модифицировали виндосовкий апи. Мы прямо на этом апи и стали делать. Изначально руководство даже не понимало что они хотят. Отправили смотреть на разные опенсорсные технологии и этот сдк купили. Я тоже не понял что они хотят. Просто отреверсил драйвер, а дальше другая часть команды свой клон писала.
Суть в том, что они продавали либу по сложности пет проекта с функционалом, который и так почти весь в винде был.
>call 7<init_module+0x7>
Но по офсету 7 нелегальная ебуда. Либо я не понял синтаксис, либо скажите пожалуйста чем/как дизассемблировать модульный образ.
Понятно, буду знать, анон.
Оригинальный кусок кода до вызова хука или после выполнять? Как правильно функцию хука вызывать и выходить из неё, чтоб не запарывало стек/регистры?
Смотрел на гитхабе как в либах сделаны хуки, но нихуя не понял. Detour делаю через jmp rax по абсолютному адресу.
"Анализ малвари"
виртуалку, протектор опиши, не знаю.
хотя это не малварь.
малварь - winapi если винда. методы неявного вызова функций, перехвата библиотечных функций и т.п.
зайди на форум реверсеров и почитай статьи как что ломалось и поймешь о чем писать. а о малварях на хакере можно почитать, чтобы понять чем заинтересовать читателя диплома.
Modern malware deobfuscation and analysis.
>>750427
Всё. Теперь новая идея для стартапа. Incident responce по страховке на линукс инфраструктуре для малого и среднего бизнеса плюс threat intellegence. Никаких больше кукушек. Теперь только партнёрство с интеграторами. Каждый раз когда к ним приходит небольшой энтерпрайз закупить серваки циско на 100к долларов они предлагают заказчику страховку от взлома с одноразовой выплатой или рассрочка на год и берут с этого свою комиссию. Я же взамен обещаю бесплатно среагировать и починить инфраструктуру если случится атака один раз в год. Собираю команду из пяти человек и по мере необходимости реагируем на инциденты клиентов, а когда реагировать не надо, то делаем ресёрч и рассылаем threat intellegence. Как вам идея?
>Всё. Теперь новая идея для стартапа. Incident responce по страховке на линукс инфраструктуре для малого и среднего бизнеса плюс threat intellegence. Никаких больше кукушек. Теперь только партнёрство с интеграторами. Каждый раз когда к ним приходит небольшой энтерпрайз закупить серваки циско на 100к долларов они предлагают заказчику страховку от взлома с одноразовой выплатой или рассрочка на год и берут с этого свою комиссию. Я же взамен обещаю бесплатно среагировать и починить инфраструктуру если случится атака один раз в год. Собираю команду из пяти человек и по мере необходимости реагируем на инциденты клиентов, а когда реагировать не надо, то делаем ресёрч и рассылаем threat intellegence. Как вам идея?
Слаженная зондеркоманда пыневиков/вагнерят/ЕНОТов/ветеранов АТО умеющих в пытки утюгом паяльником и избавляться от трупов есть? Знакомые погоны ГДЕ НАДО есть? Без всего этого threat intellegence не взлетит.
>Без всего этого threat intellegence не взлетит.
Не. Это будет customized osint ti плюс внутренний ресёрч для malware driven ti. Типа хеши фейлом взять в разных misp комьюнити, а потом разыскать сами файлы, проанализировать и написать сигнатуры детектирования более продвинутые, чем просто хеши. Такой формат ничего из того, что ты описал не требует
>Не. Это будет customized osint ti плюс внутренний ресёрч для malware driven ti. Типа хеши фейлом взять в разных misp комьюнити, а потом разыскать сами файлы, проанализировать и написать сигнатуры детектирования более продвинутые, чем просто хеши. Такой формат ничего из того, что ты описал не требует
А , ну так епта, добро пожаловать
http://www.consultant.ru/document/cons_doc_LAW_10699/a4d58c1af8677d94b4fc8987c71b131f10476a76/
Полотенце перешагивать будешь?
Во-первых я не буду рассылать вредоносы, а только сигнатуры. А во вторых это обычная практика в индустрии и сомневаюсь, что я окажусь первым, кого за это посадят
>Во-первых я не буду рассылать вредоносы, а только сигнатуры. А во вторых это обычная практика в индустрии и сомневаюсь, что я окажусь первым, кого за это посадят
ТАААК, КАНТРОООЛЬНЫЕ МААААСОЧКИ ШОУ ЧЕРНЫМИ ЧЕЛОВЕЧКАМИ ЕБАЛОМ В ПОЛ, НЕ ДВИГАТЬСЯ СУКА.
@
ЧТО ТУТ У НАС ?
@
ААА ФЛЕШКИ, ХАРДЫ ССДШКИ, ТАК ДЭНЧИК, ЭТО ВСЁ НА ЭКСПЕРТИЗУ. ДА, КОМПЫ ТУДА ЖЕ
@
ОППА,ПРИЗНАКИ ВРЕДОНОСА, НЕ, НУ ЭТО НЕ, ЭТО ДЕЛО СРАЗУ, 272 НАХ ОТКРЫВАЕМ, ТАК ПИШЕМ СОДЕРЖАНИЕ ПОД СТРАЖЕЙ, НИКАКОЙ ПОДПИСКИ.
@
ПРЕСС-ХАТА В ПРЕСНЕ
@
НУ ЧТО ЧЕЛОВЕЧЕК, ЩА ТЫ РАССКАЗЫВАЕШЬ ГДЕ ДЕНЕЖКА ЛЕЖИТ, А ТАК ЖЕ ВОТ РУЧКА, ВОТ БУМАГА ЗАДНИМ ЧИСЛОМ НА ДОЧКУ ПОЛКОВНИКА. И ДА, ТЫ ОСОБО НЕ ДУМАЙ, ИНАЧЕ ЭТА РУЧКА ЕЩЕ НЕ ФАКТ ЧТО ТОЧНО В ДЫРКУ В ТВОЕМ ПЕРДАЧЕЛЛЕ ПОПАДЕТ, А НЕ НА МИЛИМЕТР ПРАВЕЕ
И да, что бы не быть голословным(>>764229):
https://www.bbc.com/russian/news-44151638
А чувачок всего лишь очередной маняавтокад писал.
Угу, до стадии когда у тебя будет что можно вымогать ты не дотянешь, тупо за палку по хакерам хлопнут тебя и дадут условку или пару лет поселка которые ты к суду уже отсидишь в СИЗО.
А чё такого? Всякие чуваки из твитера же темы мутят. Чё я не могу? Реверсом в россии серьёзно на аутсоср только групайби и соцы занимаются. Все остальные подзабили на это направление. Но если для того чтобы закупиться тдс от групайби нужны бюджеты газпрома, то всяким мелком конторам может быть удобней услуга по подписке, которую почти никто не предлагает. И тут появляюсь такой я, который предлагает интегратору купить пакет на 100 секьюрити репортов в месяц написанных вручную опытным реверсером, а интегратор продаёт их в розницу своим заказчикам. Осталось нанять опытных реверсеров и начать поднимать бабки. А? Неужели никто не думает, что идея хорошая?
7.3 - это релиз какой-то группы, которая заморочилась и собрав несколько копий 7.3, вывела общее среднее, которое не содержит отпечатков пальцев. А декомпиляторы они релизить в паблик не собираются, только для своих внутри группы.
А 7.4 - это floating license installer со всеми потрахами. Вот только пароля блеять нету
попробуй ghidra от анб. она просто уничтожает ильфака. там есть все и она кроссплатформенная. правда жаба тяжеловата. только загугли как зонд убрать и не пользуйся с рабочей
Ждем, что покажет 7.4. Мне приходится изредка переносить свою базу на новую версию бинарника программы. И эти козлы любят немного менять порядок полей в классе. Поэтому вот эта фича нужна как воздух
> bochs debugger
Хм, интересно, спасибо. А более классические дебаггеры, хоть GDB, так не могут?
В теории не должны т.к. обычные дебагеры запускают настоящий процесс, вставляет инт3 в кусок исполняемого кода, а потом по одной инструкции смотрят что в процессе исполнения поменялось. А тебе нужен какой-то эмулятор, который без запуска процесса просто скажет какие изменения делает какая инструкция. В r2 ещё кажется такая штука есть. Там кажется даже можно эмалировать код с другой архитектуры. Типа арм шелкод на х64 системе запускать и смотреть что он делает.
Ты просто готовить не умеешь, один бинд F5 видимо только используешь. У меня за 1-10 минут любая функция в неотличимый си код преобразуется.
> Эмулятор, учи мат. часть.
Я за матчастью и пришел. Любой эмулятор? Выше посоветовали bochs и r2, я просто пытаюсь понять, в какую сторону вообще смотреть.
Пиши кастомный эмулятор (правда, если это на CISC архитектуру, то там работы жопой жуй), заодно будет солидный пет-проект в копилку.
Это только процессор эмулирует? Надо ещё чтобы задействованные адреса памяти отображал, инструкции же могут менять содержимое памяти тоже.
процессор 99.9% времени перекладывает числа из регистра в регистр. Без имплементации адресного пространства для эмулируемого процесса ты нихуя не сэмулируешь.
Похоже, ты слабо представляешь как работают эмуляторы. Загугли, пчел.
Не еби мозгу, открывай документацию и читай. Если нужно что-то большее, то гугли DBI.
она хотя бы бесплатная и кроссплатформенная. можно на планшете сидя на унитазе реверсить.
лучше найти дуру в популярном по. это как филосовский камень прям. главное закон не нарушать.
1. куда переехал exelab? Называют "реверслаб" какой-то.. Дайте ссылку, т.к. пробовал reverslab.ru и reverslab.com - нет таких сайтов. Хуяндекс давным давно нихуя не ищёт..
2. что с сайтом purebasic.info? Уже неделю лежит! Хостинг копеечный - 70р в месяц. Не думаю, что денег на оплату нет - скинулись бы (это же не абу..)
>>никуда он не переезжал
теперь это подментованная параша хуже мейлача.. Ссылку давай! На васм тоже сто лет на заходил, с тех пор, как аквила свой сайт просрал со всей личной перепиской..
Да тебе не похуй долбоеб?Кто тебя искать будет?
А если бы и искали,ты думаешь бэдгай бы не выдал твои данные европолу?
мне - не похуй, долбоёба в зеркале поищи. Надеюсь, бэдхуй хотя бы бабла срубил норм. Если в этой конторе ЗП до 500к в месяц, то уж пару зарплат он получить должен был! Для сайта такого уровня, посещаемости и целевой аудитории - это норм. За пару лямов продал дохлый форум)))
один хер - без доверия купленный форум затонет.
охлол, кто-то так и сделал.
анонасы, что скажете насчет софта на exelab? нет ли там троянов?
нормальные ли хэши файлов или вирустотал такое впервые видит?
а если я подумывал, но не решился?
Да, DBI.
КАКОЙ ПАРОЛЬ ОТ АРХИВА С 3 ТАСКОМ, ДОЛГО Я БУДУ ЖДАТЬ, БОМЖИ ОБОСРАННЫЕ?
Я тоже не знаю. Прости. Можешь разрабам написать. Если ответят, то напиши в тред.
>не может подобрать простой пароль
>называет кого-то бомжами
Может тебе ещё решение сказать.Даже на моём сральном ведре крякнулся за минут 10-20.
>>768636
Как то странно время считается, можете чекнуть. Оба варианта на пике были опубликованы спустя 10 мин после регистрации.
В первом варианте задания были опубликованы по отдельности 5 мин + 5 мин и каким-то образом получилось 15 мин. Как будто ко времени с начала реги прибавляется последнее время из таблицы.
Во втором варианте 2 задания были опубликованы сразу за 10мин, а получилось 20 мин. По такой логике получается, что отправлять резултаты лучше по отдельности, быстрее будет. Почему так? Может я ебанулся уже.
>Забей. Никто всё равно не поверит, что ты решил за 20 минут
Причем тут это.
Ну смотри, если я решаю за 24 часа 2 задания. Отправляю 1 решение спустя 12 часов после реги. Спустя 24 часа после регистрации отправляю 2 решение. Казалось бы должно получится 24 часа, но получится 24 + 12 = 36 часов.
А если отправить сразу 2 после 24 часов в результате получится 48 часов.
Так понятней?
На сайте касперского надо указывать ник в 10 чаров из-за того что алгоритм в 3 таске принимает чанк такого размера?
Браво! Браво! Это просто охуительно! В след раз они сами ники будут раздавать: baitosos, exploit_mne_v_zhopu. Красавчики ребята, вот так надо опускать байтопетухов
А что там за задания были? У меня так и не дошли руки зарегаться.
Думаю да. Мне тоже ничего не приходило. Даже после отправки всех решений ничего не приходит.
Обоссы его.
В смысле ПитухОС или в смысле Punix?
Если первый - то стандартный набор из лахты-карманова из конца нулевых-начала десятых когда он еще не работал на пыньку. Жирно, но работает.
Если второй - то там уже нужно по-английски и это надо учиться на форчан в политач.
Потому что пользователь пролобированых в пиндосское образование калькуляторов от техасов никем иным как чистокровным пиндосом быть не может.
>пользователь пролобированых в пиндосское образование калькуляторов от техасов никем иным как чистокровным пиндосом быть не может
это в /zog/
Погоди, ты про пароль от архива или про пароль от самого крякми? Если про архив, то пароль брутфорсится. Пароль от архива: infected
Если про пароль от крякми, то тут хуй знает, что сказать. Просто и без задней мысли дебажишь. Проще тебе решение спалить, алгоритм там очень простой. Насколько я помню там свитч кейс переходы, которые от входных данных не зависят, так вот бери и проходи все переходы, делай пометки.
>infected
А это что-то вроде правил гигиены среди AV-ресерчеров (менять расширения на неисполняемые, пихать в архивы)? Подобный пасс из разряда дефолтных?
Мимо-другой-анчоус.
>infected
Спасибо. Я пробовал, но с первого раза не подошёл и я из ответов в треде подумал, что его брутить надо. А на самом деле скорее всего неправильно ввёл
Да,под архив и в неисполняемые чтобы случайно не запустить на основном хосте малварь,а сам инфектед очень давно используется,вроде с какого-то малварного трекера
>солидный пет-проект в копилку
А хуле его там писатьто. память, стэк-хуек, командная оболочка, регистровый файл.
на Юричева ссылка протухла
Это примитивно. Надо еще мусор удалять, датафлоу смотреть, солверы подключать. Вот и будет что писать.
А еще soft mmu, парсер РЕ/ELF/MACH-O (смотря на какую ОС пишешь), эмуляция ммап/хуки на маллок/аппаратная эмуляция по надобности и дохуя чего прочего, если ты хочешь написать нормальный эмулятор. Ну и JIT можно прикрутить, а там cache и кастомный ассемблер. Да и дебажить это чудо порой непросто.
Так это уже выходит не CPU эмулятор, а целый DBA фреймворк. Ну тогда еще DSE туда прикрутить, program synthesis и перекомпиляцию в blackbox режиме. А что?
Chapter 1: Introduction to Disassembly
Chapter 2: Reversing and Disassembly Tools
Chapter 3: Meet Ghidra
Chapter 4: Getting Started with Ghidra
Chapter 5: Ghidra Data Displays
Chapter 6: Making Sense of a Ghidra Disassembly
Chapter 7: Disassembly Manipulation
Chapter 8: Data Types and Data Structures
Chapter 9: Cross-References
Chapter 10: Graphs
Chapter 11: Collaborative SRE with Ghidra
Chapter 12: Customizing Ghidra
Chapter 13: Extending Ghidra’s Worldview
Chapter 14: Basic Ghidra Scripting
Chapter 15: Eclipse and GhidraDev
Chapter 16: Ghidra in Headless Mode
Chapter 17: Ghidra Loaders
Chapter 18: Ghidra Processors
Chapter 19: The Ghidra Decompiler
Chapter 20: Compiler Variations
Chapter 21: Obfuscated Code Analysis
Chapter 22: Patching Binaries
Chapter 23: Binary Differencing and Version Tracking
Appendix: Ghidra for IDA Users
Кек, это художественное оформление.
Уже хочется украсть почитать.
Chapter 1: Introduction to Disassembly
Chapter 2: Reversing and Disassembly Tools
Chapter 3: Meet Ghidra
Chapter 4: Getting Started with Ghidra
Chapter 5: Ghidra Data Displays
Chapter 6: Making Sense of a Ghidra Disassembly
Chapter 7: Disassembly Manipulation
Chapter 8: Data Types and Data Structures
Chapter 9: Cross-References
Chapter 10: Graphs
Chapter 11: Collaborative SRE with Ghidra
Chapter 12: Customizing Ghidra
Chapter 13: Extending Ghidra’s Worldview
Chapter 14: Basic Ghidra Scripting
Chapter 15: Eclipse and GhidraDev
Chapter 16: Ghidra in Headless Mode
Chapter 17: Ghidra Loaders
Chapter 18: Ghidra Processors
Chapter 19: The Ghidra Decompiler
Chapter 20: Compiler Variations
Chapter 21: Obfuscated Code Analysis
Chapter 22: Patching Binaries
Chapter 23: Binary Differencing and Version Tracking
Appendix: Ghidra for IDA Users
Кек, это художественное оформление.
Уже хочется украсть почитать.
Никто не в курсах?
>Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС
А разве все это уже давно не пишут на С/С++?
Ладно там суперпердольные оптимизации на мкк, но драйвера и аж целые ОС? Ну может пару инлайн вставок, но не от А до Я же.
>find /usr/src/linux -name "*.S" -type f | wc -c
>46727
Это ядро. Ну и так для примера, даже в userspace, в openssl куча имплементаций.
> wc -c
> -c
Кого ты наебать пытаешься? Мы не дети из /s/.
В реальности там около 1к файлов, в которых стартапы и те функции из либц, которые имеет смысл писать на ассемблере (всевозможные memcpy), криптография и эмулятор FPU для x86 не знал, что его еще не дропнули!. Это на 25 семейств архитектур. Всего 10 файлов в драйверах (это пять сотых процента).
В общем, все, как и сказал >>780094, за исключением того, что это не инлайн-вставки (фублядь, ебанутая практика), а отдельные файлы в основном один файл = одна функция.
Почти никто не пишет на асме ОС целиком, даже embedded RTOS не пишут. Из исключений разве что menuet/kolibri, но первый с огромной болью переползал на amd64, а вторая хочет arm, но уже не может.
И никто не пишет на асме драйвера, это не нужно, потому что это ОС предоставляет низкоуровневые функции для работы с железом, а драйвер перекладывает байтики.
Найс подстава лол
На самом деле куски кода на асме есть в бутлоудерах по большей части.
Дрова, допустим, все на сишке, а они составляют примерно 60% от общей кодовой базы, по весьма понятным причинам.
Впрочем, если ты зайдешь на гитхаб Линукса, ты увидишь процент асм кода (1.1%)
Что самое смешное, даже ПЛЮСОВОГО кода, который так ненавидит Торвальдс, больше (1.3%) кек
Асм часто не нужен даже при разработке на голый мкк без ОС типа STM32. Пишешь код на С, компилируешь с флагами оптимизации - профит.
Асм для реверсеров нужен, это да, но в разработке это уже атавизм в 99% случаев.
>А разве все это уже давно не пишут на С/С++?
Мне почему-то кажется, что байтослесари со стажем уже наизусть знают, как гцц/клэнг скопмилит тут или иную хуитку. Так что кроме загрузчика наврятли что-то напишут.
Да нихуя они не компилят, нет магии. Вот когда можно будет четко задать спецификацию компилю, кастомный calling convention, управление регистрами, тогда да. А до сих пор приходится юзать интринсики и реализовывать свои хелперы. Прям какую-то супер логику на асме естественно никто не пишет.
Не нашел у него в блоге/твиттере подобных новостей, можно ссылку, пожалуйста?
Он собирает донаты и одно время искал работу/подработку по соответствующей специфике, но заявлений книги в обмен на деньги вроде не делал.
А какой процессор-то? Шифт может быть медленнее, но при этом короче, поэтому все сильно зависит от архитектуры. Плюс у шифта зависимость по данным от инструкции, меняющей a.
Вот думаю, может перестать быть пиратом и купить лицушную HOME версию, ибо разрабы плагинов кряки/старые версии не поддерживают. Вместо HexRays можно заменить на декомпиль гидры или retdec.
>HexRays можно заменить на декомпиль гидры или retdec
нельзя,ильFUCK запретил использование плагинов для прикручивания сторонних декомпилей
Понятно. Глянул на офф. сайте различия, это пиздец. Кастрированная версия и 100 баксов не стоит, если честно.
Кстати, выше кто-то писал, мол инсталлер от 7.4 версии слили. Есть у кого ссылка?
Ты лучше объясни откуда у тебя появилось желание копаться в чужом дерьме? И почему ты решил сделать это работой и потратить на это единственную жизнь?
Ну так это интересно же, не? Нужны абсолютно все топики cs алгоритмы всякие и тд квинтессенция мира компутеров
Скорее станешь батей постоянно разгадывающим кроссворды и ходячей энциклопедией.
Понял. Спасибо. Получается на время придётся вкатиться в какой-то яп и там работать? Что выбрать тогда? Java или C++? Сказал бы ассемблер но на нём работы нет
В джаву легче вкатиться, работа там проще, сам ЯП тоже проще, чем плюсы.
Если ты ищешь наиболее быстрого вката, иди в веб, анон. Потому что чтобы быть хорошим и востребованным байтоебом - надо не просто быть не тупым, а еще и иметь овердохуя опыта и, главное, искреннюю страсть к этому. Реверсинг, плюсы и прочая байтоебля - это не для вкатышей.
В бэкэнд на джаве идти тогда? Или на шарпе ибо он ближе к плюсам? Реально оттуда вообще в байтоеблю перекатиться? А то хочу именно сидеть с байтами дрочиться, но работа вот вот нужна ибо 3 курс уже, а с вуза без опыта выходить это пиздец
Нифига ты вспомнил... Этож лет 15 назад было.
>Реверсинг, плюсы и прочая байтоебля - это не для вкатышей
Реверсинг это хуйня для аутистов с суженным сознанием, которые живут отстойно и у себя в воображении строят виртуальную карьеру реверсера. Сколько там двачеров разреверсили защиту хотя бы одной современной игры? Даже до поиска бинарных уязвимостей в рашкинских анало-говнетах не развились, чтобы пердолиться на заводике с гостайной по форме доступа. Чистый манямирок и кряканье crackme друг для друга.
>Ты лучше объясни откуда у тебя появилось желание копаться в чужом дерьме? И почему ты решил сделать это работой и потратить на это единственную жизнь?
Он ботан-ноулайфер с комплексами и ему девочки не дают. Для него реверсинг это самоактуализация-самореализация, способ вырасти в своих глазах, т.к. другие способы самоактуализации ему не доступны.
хз, на моем счету уже 4 CVE, 2 из которых во всемирно известном софте, уверен, что здесь такие еще найдутся, хоть и немного. Не вижу в чем проблема, какая разница, если человеку нравится этим заниматься? Вкатываться в это, тем более для зарабатывания денег, это архисложно по сравнению с многими другими отраслями, об этом и было сказано.
Этот подрыв неосилятора.
Какие защиты? Денуво и вмп это примитивное гауно мамонта, которое снимается автоматикой в течении всего периода существования. Про античиты вообще молчу, там уровень антивирусов нулевых.
> Даже до поиска бинарных уязвимостей в рашкинских анало-говнетах не развились
Ну здесь вообще в голосину, сразу видно, что ты не в теме. Учитывая, что именно наши ребята ебут в хвост и гриву индустрию. Тот же Краш, Матросов, да и вообще все ребята, которые организовывают конференции у нас в рахе, куда приезжают шляпы со всего мира. Они настоящие первопроходцы. Там уровень гораздо выше, чем обычная бинарная эксплуатация, что является примитивом.
Это так круто технически, весь это реверс, и так глупо если представить что все труды идут только на то чтобы выложить крякнутый софт на торренты. Компьютерное робингудство.
>Это так круто технически, весь это реверс, и так глупо если представить что все труды идут только на то чтобы выложить крякнутый софт на торренты
У них суженное сознание, как я и говорил. Не могут посмотреть на себя в масштабах мира и развиваться дальше, искать для себя что-то более интересное.
>ядро
Только бутлоудер и архитектурно-зависимые части (реализация прерываний, например), но это 1% от кода ядра. Все остальное пишется на Си (пример - ядро Линукса).
>libc
всего 14% кода на асме, бОльшая же часть кода опять же на Си.
Вывод - асм нужен в узкоспециализированных архитектурно-зависимых местах. Целиком от А до Я крупные проекты на чистом асме не пишут.
Ебать у тебя открытия. ИТТ асм читают и реверсят, а не пишут на нём проекты от а до я.
Да ладно!? Так всегда было между прочим. Даже первый компилятор языка высокого уровня был написан частично на асме, а не полностью.
>Вывод - асм нужен в узкоспециализированных архитектурно-зависимых местах. Целиком от А до Я крупные проекты на чистом асме не пишут.
Ебать америку открыл
Нет. А вот основы incident response, threat hunting, soc analysis стоит знать. Хотя общее развитие никогда не помешает, можешь вечером под пивко коробки на hack the box ломать.
Получится.
Уже можно в обложке заказывать. Правда электронная версия будет доступна только ближе к новому году.
Почему же? Допустим, стоит задача по атаке на софтину, а исходных кодов нет - есть лишь закрытый бинарь.
На рутрекере.
и? Причем здесь пентестинг? Пентестеры атакуют софт/инфраструктуру существующими программами, не вдаваясь в подробности реализации атакуемых программ, реверсеры же анализируют программный код, по надобности восстанавливая алгоритмы программы. Их скиллсеты не пересекаются.
Для простоты понимания - пентестер атакует "вширь", реверсер - "вглубь". Причем скиллсет реверсера позволяет ему находить уязвимости нулевого дня, пентестеры такое делать не умеют, их знания гораздо, гораздо более посредственные.
То есть, пентестер = скрипт кидди? Я бы вот хотел искать 0day уязвимости в софте, а не быть макакой, которая с помощью кали линукса сканит сетку и подбирает эксплойт из metasploit под софтину и CVE, так как в 99% случаев известные всем уязвимости в реальных корпоративных сетях патчатся.
И смысл искать 0дей пентестеру?Только если он блечер и хочет потом зашифровать всем рансомварью
Компаниям по итогу нужен отчет где они проебались,а что делать с зиродеями о которых никто ничего не знает и патча для них еще нет?Разве что в жопу засунуть себе
Мимо
пентестеры не ищут зиродеи, они не располагают нужными для этого скиллами. И да, пентестеры - макаки, по сравнению с ресёрчерами, которые реверсят и фаззят софт, и при наличии дыры, могут написать под нее эксплоит. Пенстестер != ресёрчер. Это определения разных профессий в инфосеке.
Я слышал, что сейчас весь хакинг проводится на уровне сетевых протоколов и бэкенда, а бинарщину залатали целиком и полностью (разве что реверс-инжиниринг и крякание софта сохранились).
Бинарщину не залатают никогда, пока есть программы, написанные на неуправляемых языках программирования (С/С++), а таких программ дохуя и больше. Весь известный софт - операционные системы, драйвера, прошивки, веб-сервера (nginx + apache), куча библиотек - все на Сишке и плюсах написано. Глянь в CVE, любая дыра, получившая CVSS более 7, это бинарщина (немудрено, там импакт больше, чем в любых других видах уязвимостей). Доп. пример - в ядре Линукса нашли около 600 уязвимостей в 2019 году, в ядре винды примерно столько же. Единственное что - порог входа поднялся просто в стратосферу, ибо есть очень много защит, которые нужно уметь обходить. Если в 2007 году можно было на 1 баге в ядре написать, например, джейлбрейк на айос, то сейчас для такой цели нужно зачейнить от 5 до 8 эксплоитов с разными багами, чтобы достичь такого же результата. Хотя справедливости ради стоит отметить, что и информация стала дороже, куда дороже. И еще - защитные механизмы в определенных случаях способствуют взлому (лол, да), так что это вечная игра в кошки мышки. И даже если представить розовый мир с летающими пони, где вся инфрструктура компьютерных технологий написана на Расте, а не С/С++, это все равно было бы актуально, просто ЕЩЁ сложнее. Реальность такова, что современная архитектура железа не позволяет иметь абсолютную безопасность памяти на ВСЕХ уровнях абстракций. Для того, чтобы превратить бинарные дыры в прошлый век, нужен технологический переворот в мире железа, который пока не предвидется.
Нужно ли перед крякингом реального софта решать разного рода CTF-задачи, связанные с переполнениями буфера и форматными строками (со всеми этими запретами выполнения кода в стеке, канарейками и ASLR)? Или достаточно просто понять, как эксплуатируются те или иные уязвимости с разной защитой, прочитав какую-нибудь книгу вроде Shellcoder's Handbook, чтобы начинать работать с софтом промышленного уровня?
Основная проблема вката в эту область - необходимость изучать всю историю с самого начала. Условно, первый задокументированный случай эксплуатации бинарной уязвимости - это червь Морриса, который распространялся по сети благодаря переполнению буфера на стэке в демоне fingerd. Это случилось в 1988 году, формально начиная историю проблем с низкоуровневой безопасностью. Именно поэтому любой hello world бинарщины - это классический stack smashing из девяностых с перезаписью адреса возврата в стэковом фрейме уязвимой функции. С годами придумали немало защит, которые нужно уметь все обходить. ASLR, NX, канарейки есть примерно с 2004 года, они дефолтные, причем как в пространстве пользователя, так и в пространстве ядра. Их, без вариантов, нужно уметь обходить, это база. Но есть еще более современные способы защиты, которые обходить гораздо сложнее. Например, control flow integrity, который усложняет эксплуатацию через code reuse атаки. Более того, есть песочницы а-ля seccomp, которые не позволяют исполнять абсолютно любой произвольный код от лица программы, которая в нем находится. Обойти это можно только если есть дополнительный баг, желательно даже на уровне ядра. Апогей бинарной безопасности в данный момент - мобильные ОС - и Андроид, и iOS. Там, помимо всего прочего, есть криптографическая аутентификация указателей (в iOS точно, в андроиде точно не знаю, но нечто похожее точно есть), вышеупомянутый control flow integrity на уровне ядра и гипервизор ПОД операционкой, который сэндбоксит всё ядро. Именно поэтому на белом (повторяю, тарищ майор, на белом) рынке эксплоитов эксплоит на Андроид в данный момент - самый дорогой, около 2.5 миллионов долларов (удаленное исполнение кода без надобности интеракции жертвы, только чтобы к Интернету была подключена).
С течением времени будут придумывать новые защиты и новые обходы, ибо с С/С++ на другие языки никто ничего не будет переписывать. При этом, на этих языках дохуя нового кода пишется, а сломать что-то в бинарщине очень и очень просто. Совет тут простой как валенок - учить надо все подряд, связанное с низким уровнем. Писать много кода на С и С++, отлично знать ассемблер, уметь в соответствующий тулинг, на ВЫСОЧАЙШЕМ уровне знать кишки операционной системы (Линукс/винда/мэк/андроид на выбор) и иметь определенный склад ума и очень, очень много терпения, ну и участие во всех CTFах подряд будет явно нелишним, главное в правильных категориях участвовать.
Условно, вкат в каком-нибудь 2030 году для новичков будет совсем суровым, им помимо огромного багажа знаний надо будет пройтись по всей истории бинарного инфосека, который формально тянется с конца 80ых.
Основная проблема вката в эту область - необходимость изучать всю историю с самого начала. Условно, первый задокументированный случай эксплуатации бинарной уязвимости - это червь Морриса, который распространялся по сети благодаря переполнению буфера на стэке в демоне fingerd. Это случилось в 1988 году, формально начиная историю проблем с низкоуровневой безопасностью. Именно поэтому любой hello world бинарщины - это классический stack smashing из девяностых с перезаписью адреса возврата в стэковом фрейме уязвимой функции. С годами придумали немало защит, которые нужно уметь все обходить. ASLR, NX, канарейки есть примерно с 2004 года, они дефолтные, причем как в пространстве пользователя, так и в пространстве ядра. Их, без вариантов, нужно уметь обходить, это база. Но есть еще более современные способы защиты, которые обходить гораздо сложнее. Например, control flow integrity, который усложняет эксплуатацию через code reuse атаки. Более того, есть песочницы а-ля seccomp, которые не позволяют исполнять абсолютно любой произвольный код от лица программы, которая в нем находится. Обойти это можно только если есть дополнительный баг, желательно даже на уровне ядра. Апогей бинарной безопасности в данный момент - мобильные ОС - и Андроид, и iOS. Там, помимо всего прочего, есть криптографическая аутентификация указателей (в iOS точно, в андроиде точно не знаю, но нечто похожее точно есть), вышеупомянутый control flow integrity на уровне ядра и гипервизор ПОД операционкой, который сэндбоксит всё ядро. Именно поэтому на белом (повторяю, тарищ майор, на белом) рынке эксплоитов эксплоит на Андроид в данный момент - самый дорогой, около 2.5 миллионов долларов (удаленное исполнение кода без надобности интеракции жертвы, только чтобы к Интернету была подключена).
С течением времени будут придумывать новые защиты и новые обходы, ибо с С/С++ на другие языки никто ничего не будет переписывать. При этом, на этих языках дохуя нового кода пишется, а сломать что-то в бинарщине очень и очень просто. Совет тут простой как валенок - учить надо все подряд, связанное с низким уровнем. Писать много кода на С и С++, отлично знать ассемблер, уметь в соответствующий тулинг, на ВЫСОЧАЙШЕМ уровне знать кишки операционной системы (Линукс/винда/мэк/андроид на выбор) и иметь определенный склад ума и очень, очень много терпения, ну и участие во всех CTFах подряд будет явно нелишним, главное в правильных категориях участвовать.
Условно, вкат в каком-нибудь 2030 году для новичков будет совсем суровым, им помимо огромного багажа знаний надо будет пройтись по всей истории бинарного инфосека, который формально тянется с конца 80ых.
Большое спасибо за развёрнутый ответ.
Vulnerability research != exploit development != red-teaming/pentesting != reverse engineering. Так понятно? А на CTF разные задачи бывают, это зависит от тематики проводимого эвента.
>>801799
> Именно поэтому эксплоит на Андроид в данный момент - самый дорогой
Это самая популярная платформа с высоким уровнем обхвата и своей спецификой, благоприятной для атакующего.
>Это самая популярная платформа с высоким уровнем обхвата и своей спецификой, благоприятной для атакующего.
Да. Но вдобавок, по этой же причине, Андроид очень сложная цель для атаки, если не самая сложная.
Почему в списке книг нет Shellcoder's Handbook?
Потому что. Нужно обновить шапку.
Посоветуйте книги НА РУССКОМ, которые объясняют как находить уязвимости в программах, типо как взламывать ПО, желательно вообще для чайников можно не для чайников, ну и чтобы она была свеженькая, если эт возможно конечно.
свежих нет даже на английском. А вообще, без инглиша ловить нечего, анон, овладеть им гораздо важнее в первую очередь, поверь наслово.
На русском есть Хакинг: искусство эксплойта, только она показывает лишь самые основы без тех средств защит, которые описывал этот господин >>801799. К тому же, нет такой книги, которая научит тебя именно НАХОДИТЬ уязвимости, и быть ее, в принципе, не может. Необходимо поучиться самому разрабатывать софт идентичный тому, что используется широким кругом людей, если уже умеешь - читать какой-нибудь "Совершенный код" Стивена Макконнелла, который даст правильное видение этой самой софтины как системы. Любое место в программе, где происходит получение входных данных извне (пользовательский ввод, сеть, файл, БД) - это потенциальная уязвимость, которую следует исследовать.
Анон выше прав, английский обязателен к изучению в 2020 вообще всем, не только айтишникам, ведь это открывает тебе доступ к глобальному рынку, к сообществам и ценной информации.
Там анон попросил свежую, а она 2008 года. С тех пор появилось с десяток новых защитных технологий, которые надо уметь обходить. Ну и надо уметь их не только эксплуатировать, а еще и находить. Просто втупую читать код/ассемблерный листинг, сугубо вручную реверся всё и вся, заведомо проигрышная тактика. Нужно уметь в большое количество тулинга и уметь писать собственные утилиты для поиска уязвимостей.
Лично я пробовал читать ассемблерный листинг/код, начиная с библиотечных/системных функций, выполняющих то, что я хотел бы атаковать. К примеру, хочу попробовать написать сетевой эксплойт под Apache, атаковав его со стороны клиента - ищу recv() и копаю под нее. В любом случае, ничего у меня не получилось, к сожалению - слишком глубоко пришлось копаться в коде, я так и не нашел целевой буфер, куда данные после приема recv'ом уходят. С реверсом получилось следующим образом: я вскрыл в IDA Pro одну софтину, начал копать с той же recv() и остановился на моменте, куда попросту не ссылается ничего. Наверное, это функция, которая вызывается через указатель, и понять, что ее вызывает, можно лишь с помощью дебага - а вот как работать в OllyDBG я, к сожалению, не смог разобраться (хотя GDB вполне осилил).
>В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер
Насколько быстро напишешь на Ассемблере программу уровня Фотошопа(или хотя бы калькулятор как в винде)?
Почему так сложно сразу? На втором задании сижу не пойму что делать. Нужно восстановить битый PE файл накрытый upx и запустить его. Сделал ресайз секций, распаковал через upx -d, пересобрал таблицу импорта, пофиксил манифест и... и оно нихуя не работает, при запуске импорт не резолвит, хотя в IDA все ок. Что сделать то еще нужно?
Мое почтение за старание, но такой "грубый" подход занимает слишком много времени. Без фаззинга очень сложно искать уязвимости, а все существующие фаззеры медленные, нужно уметь писать свои.
Уровня фотошопа - всей жизни не хватит, такие вещи не пишут на ассемблере. А вот калькулятор можно написать. Ассемблер не для этих задач, короче.
А все разобрался, нужно было еще ASLR отключить.
>Ассемблер не для этих задач, короче.
У него в 2к20 вообще никаких задач нет, от слова совсем.
А реверс инжиринг это не разработка ПО.
Понятно. Надо научиться этому, значит.
> потому что это для школьников,несерьезный уровень
Всяко больше инфы для начинающих, чем во всяких книжках вроде "Искусство эксплойта" - там про обход канарейки, nx и ASLR вполне себе рассказывается.
Что представляют собой эти string literals:
StringLiteral___28631336;
StringLiteral___28558824;
StringLiteral___28517688
И это:
String__TypeInfo->static_fields;
v10->Empty
Куда копать? Шарп после IL2CPP, если что
>несерьезный уровень
Можешь посоветовать источники, которые дают серьезный уровень? Буду очень благодарен.
Просто оставлю здесь, интересно почитать.
TLDR: Особенности процессора связанные со спекулятивным выполнением, позволяют вслепую брутфорсить адресное пространство ядра без крашей.
нет таких источников и никогда не будет, особенно по бинарщине. Эти вещи нужно учить путем исследований, проб и ошибок.
Да что ты говоришь? А бутлоудер ты на чем писать будешь? А шеллкод? Ты в курсе, что 14% кодовой базы glibc написана на языке ассемблера? Да, он САМЫЙ нишевый ЯП, да, в 99% случаев для реверсинга, но у него таки есть супернишевые задачи в разработке.
Кроме асма там только С-- используется.
Нет, только асм.
>колибри
Шёл мимо, увидел Колибри, не смог пройти мимо.
Положняк по Колибри такой: "Эту бы энергию, да в мирное русло".
У Колибри нет будущего, потому что в ней нет изюминки. Вот во времена MS-DOS она бы взлетела, а сегодня это всего-лишь школа и кузница кадров.
При всём уважении к труду разработчиков Колибри.
>Расскажите за профиты знания асма для стартапера-сиппшника.
Не может быть программиста на Си, не знающего хотя бы ОДИН ассемблер.
В этом плане x86 лучший вариант - таки CISC читается в разы легче чем RISC.
ОП первых тредов
>>805628
>Не обозначил имена булевых переменных
>Что-то там гадает
А кто его знает. Я где-то на пятом отвалился, если правильно помню. Тогда я ещё ядро венды реверсил, вот и создал. А сейчас окончательно деградировал, сложно это для меня но получаю больше в 2 раза, лол.
Вот и удивился, что тему развивают, шапку не проебали и прочее.
Иногда я.
Ну извини - не школа, а университет.
Что тебя конкретно интересует? Общих источников нет, это нишевая тема. База - asm x86/arm, С/C++/Python/Rust, cpu internals (include vmx), os internals, static analysis (disasm, control-flow/data-flow analysis, binary lifting, optimization/deobfuscation techniques - MBA theory, recompilation - compiler theory), dynamic analysis (debugging, instrumentation, binary translation), binary instrumentation (static/dynamic), fuzzing theory and tools (SMT solvers, symbolic/concolic execution, program synthesis, hardware-based profiling - PMU, etc), modern os attack surface reduction and mitigations, code reuse attacks and variations, data-oriented attacks, side-channels/hardware attacks and mitigations, итд итд.
Нет, они отсутствуют. Есть outdated книги, которые тебя подведут к азам, но по-настоящему нырнуть можно только запустив руки по локоть в самостоятельный ресёрч.
Оставляйте тележки итт
Есть https://forum.reverse4you.org/c/jobs/6
Создаешь там топик,он постится в https://t.me/r0_jobs
Меньше 200 долларов бюджеты не принимаются
И на ехелаб есть топик
там минимальный прайс это 50 баксов
Конкретно про механизмы защиты от бинарных уязвимостей - то, как определять, какие именно стоят на атакуемом софте и как их обходить. Как мне понять, используется тут ASLR или нет?
От вопросов, подобных заданному тобой, возникает желание распространять софт в искходном коде. Вот без шуток.
Да, с исходниками даже мне работы было бы максимум на полдня.
Подразумевается, что ты выучиваешь язык программирования и идешь работать, получая каждый месяц-два оплату за свой труд. Как в этом плане может быть полезен ассемблер?
>бутлоудер
И что, ты будешь постоянно работать пися бутлоадеры? Так часто телефонов не выпускают, да и Сяоми с Самсунгом для этого нужны 1,5 человека.
>А шеллкод?
За создание и распространение вирусов вообще уголовка предусмотрена. Да и нельзя рассматривать создание вирусов как постоянный и легальный способ заработка.
>что 14% кодовой базы glibc написана на языке ассемблера
Ну написано и написано, что тебе это даёт? Какой профит тебе от этого?
>От вопросов, подобных заданному тобой, возникает желание распространять софт в искходном коде.
Почему?
Опенсорс проекты в основном полное говно, все норм прикладное и ОС-по(Фотошоп, Винда, МАК-ос, Майкрософт Оффис(Ворд, Эксель) - только проприетарное и с закрытым кодом.
>Опенсорс проекты в основном полное говно
А кто сказал open source? EULA, запрещающая распростнять приобретённый исходный код - хорошее решение.
Где тут? Какая ос? Какой софт? Запрашивать данные у ос/через наблюдения.
тут проблема не асм выучить, а наработать хватку и интуицию реверсера, уметь программировать на хорошем уровне, и если ты ищешь дыры - уметь их искать и эксплуатировать. Это очень долго и сложно в виду большого количества защитных механизмов и в целом security awareness разрабов, наряду с тестами, статическими анализаторами до релиза и т.п.
Разрабам не настолько похуй на безопасность, как было было в 90ых, где нахождение и эксплуатация уязвимости требовали от хакера, как ты написал, 30-ти минутного изучение асма и базовые знания программирования. Уже давно все поменялось. Все стало куда интереснее, но сложнее.
Стадия разведки (через тот же nmap - дефолтная процедура) не всегда, а точнее, почти никогда, не дает тебе полную инфу об атакуемой системе, многие вещи завязаны на интуиции и на знаниях множества технологий. Насчет ASLR - этот механизм защиты завезли в 2005 году в Линукс и Винду, в 2006 году в Мэк, отключается только вручную с правами рута. Соответственно, пространство ядра это не обошло стороной, есть KASLR, делающий то же самое, только в адресном пространстве ядра. Это присутствует и в мобильных девайсах, помимо десктопных ОСей, причем мобильные ОС защищены еще больше, чем десктопные, так как там буквально все процессы находятся в сэндбоксах, включая частично даже ядро (есть гипервизор, который ограничивает ядро от произвольных действий), начиная с Андроид 9, про iOS точно не скажу.
Если я хочу набить руку на программировании на языках С, С++ и асм, чем именно посоветуешь заниматься? Писать свою операционную систему? Я потихоньку программирую под микроконтроллеры arm, осваивая их интерфейсы взаимодействия с периферией, но мне почему-то кажется, что там особо много кода не напишешь, тем более с библиотекой HAL. Алсо, как можно изучить кишки ОСей, тоже путем ковыряния, или же стоит прочитать что-то о них? Я читал Таненбаума (сети, ОС, архитектура), знаю большую часть терминологии и понимаю в общих чертах, как работает та или иная технология и куда следует копать, но сейчас не представляю, как выбрать цель для реверса/эксплуатации. Я читаю сейчас RE4B из шапки, понял, как орудовать IDA Pro и x64dbg (а также GDB и radare2), из эксплуатации пока проделывал только переполнение буфера без всяких защит и чтение памяти с помощью уязвимости форматной строки. @фф
Задавайте хотя бы ответы, если нет вопросов.
>Писать свою операционную систему
Неплохой вариант, кстати. Известные ядра, конечно, не переплюнешь, но в образотельных целях написать небольшое ядро - это отличный экспириенс.
>пока проделывал только переполнение буфера без всяких защит и чтение памяти с помощью уязвимости форматной строки
Это необходимая база, но если говорить о реальном мире - все уже стало куда сложнее. Учи паттерны уязвимостей, читай блоги исследователей и участвуй в CTFах. Учись атаковать кучу, не только стэк, учись эксплуатировать TOCTTOU уязвимости (классический пример: состоние гонки), более экзотические, но релевантные уязвимости, вроде type confusion. Находить уязвимости тоже надо уметь, на одном чтении ассемблерного листинга не уедешь.
> паттерны уязвимостей
Не понимаю, что ты подразумеваешь под этим.
> читай блоги исследователей
А какие можешь посоветовать?
> учись эксплуатировать TOCTTOU уязвимости
> type confusion
Про этих чудищ я вообще впервые слышу, за исключением состояния гонки..
На ум приходит только одно: смотреть существующие CWE и попутно гуглить информацию о том, как их атаковать.
И еще хотел узнать.
>Находить уязвимости тоже надо уметь, на одном чтении ассемблерного листинга не уедешь
Как осуществляется этот поиск, если я, допустим, не знаю все CWE (да и было бы крайне затруднительно знать их все, я полагаю), а одно чтение ассемблерного листинга не помогает? Выше ты (вроде) писал про написание собственных фаззеров, но как писать их, если мы заранее не знаем, что в конкретном куске кода (где со стороны сетки приложение принимает данные, или со стороны stdin) могут быть именно такие уязвимости, а не какие-то другие?
>Не понимаю, что ты подразумеваешь под этим.
Я имел в виду примитивы эксплуатации. Например, если программа может войти в определенное уязвимое состояние, ты должен уметь определять то, что ты можешь поиметь с этого как атакующий (примитив на произвольное чтение/запись, возможность использовать указатель, память для которого была ранее освобождена и т.п., примерров достаточно много). Вкратце, если ты вдруг замечаешь что-то неладное, ты должен уметь определять эксплуатабельность, ибо не каждый баг == дыра в безопасности.
>А какие можешь посоветовать?
Всех зарубежных, ребята, работающие в google project zero, самые топовые и имеют дело с наисложнейшими уязвимостями, как в плане поиска, так и в плане их эксплуатации.
>за исключением состояния гонки
Состояние гонки входит в категорию TOCTTOU. Сие расшифровывается как time of check to time of use. Side channel attacks, например, это тоже TOCCTOU, но это аппаратная атака, а не программная.
>>812637
верно, только таким образом можно запрыгнуть глубоко в кроличью нору.
>но как писать их
Ответ один - реверс инжиниринг. Ты должен понимать ДОСКОНАЛЬНО ту цель, которую атакуешь, именно поэтому harness setup для фаззинга может вполне длиться несколько месяцев для серьезных целей. Ну и не забывай про интуицию, такие вещи уже исключительно с опытом приходят.
И заставит ли меня переписывать всё препод, если я буду на линуксе код писать. Как думаете?
сап аноны, норм ли вкатываться в программирование с ассемблера?
> там код с другими регистрами
Дело в другой архитектуре процессора, а не в операционной системе. Разница в программировании на асме под Linux или Windows лишь в системных вызовах.
> Правильно ли я понимаю, что это разность архитектур процессоров (x64 и x32)
Если регистры rax, rbx, rcx, ... то 64 битный intel, eax, ebx, ecx, ... - 32-битный intel, r0, r1, r2, .. - ARM
По сути, тебе придется другие системные вызовы использовать (как минимум один из них - для завершения программы).
я просто насколько понял что в него можно вкатываться поскольку он очень сложный как то так сказали, и с остальными языками будет проще
Честно говоря, не знаю еще ни одного человека, у которого бы получилось вкатиться в программирование с ассемблера. То, что ассемблер сложный - миф, он сложен не сам по себе, а тем, что на нем разрабатывать полноценный софт придется крайне долго.
А, стоп, я выебывался, что мне сейчас придется использовать магическую WriteConsoleA, так а по сути в любом случае, на любой архитекуре, для вывода ты просто находишь команду и передаешь в нее аргументы (через регистры). Я правильно понял?
Вопрос немного не в тему: а как дотошно понять, что происходит при выводе на консоль, то есть при вызове этой команды?
Изучить операционные системы хотя бы в теории, ведь когда ты пишешь софт в юзерспейсе, твоя программа обращается к оси (в твоем случае запрашивает вывод символов в консоль), а она делает всю работу.
А почему это делает ОС, а не я? Ведь код зависит от архитектуры процессора, а не от ОС.
Да
>Разница в программировании на асме под Linux или Windows лишь в системных вызовах.
source и destination переставлениы. Вроде как Intel vs AT&T стили
Можешь и сам. Но для этого тебе понадобится MS-DOS - пишеь по адресу 0B8000 в память, а циферки и буковки сами появляются на экране.
Современные OC не дают прямого доступа к устройствам из юзерспейса. И совершенно правильно поступают.
> source и destination переставлениы
AT&T синтаксис и в mingw-gcc есть. Точно так же, как в линуксе никто не запрещает тебе использовать ключ -Mintel.
>>814528
> Современные OC не дают прямого доступа к устройствам из юзерспейса
Всегда есть выход. Например, /dev/mem в данном конкретном случае (хотя ее активно выпиливают по дефолту).
> Точно так же, как в линуксе никто не запрещает тебе использовать ключ -Mintel.
И что, скушает .asm, сгеренированный в msvc?
Почистишь - скушает, различия в синтаксисе самих мнемоник будут минимальные. А директивы естественно разные у всех.
>>814667
> А правда что если ты знаешь один ассемблер, то ты знаешь их все?
Почти правда. Но у каждой архитектуры свои тонкости: где-то ебнутые режимы адресации, где-то неявные регистры, где-то delay-слоты. Но ты берешь мануал, смотришь общее описание, смотришь режимы адресации, проглядываешь мнемоники за вечер и уже более-менее можешь читать код. Некоторые архитектуры отличаются сильнее (специализированные DSP с VLIW, например), на них уходит больше времени. Но все равно это гораздо быстрее, чем осилять первый в жизни ассемблер.
>>814632
Если бы ты поискал свой вопрос в гугл, а не сюда, то нашел бы ASCII table. Или Unicode table. Или способ кодирования в UTF-8.
>за вечер и уже более-менее можешь читать код
засада в том, что оптимально писать код под разные архитектуры - это сложно. надо знать все эти тонкости, приёмчики, как лучше всего задействовать имеющиеся средства. и вот это всё индивидуально для каждой архитектуры.
228
>Как вкатиться в асм то?
Напорись на баг в системной библиотеке или ОС, расковыривай его, рано или поздно дойдёшь до пошагового ассемблера
На моей материнке был баг в BIOS, из-за которого она не могла нормально работать с большим жёстким диском. Это приводило к невозможности загрузки ОС.
Я написал небольшой workaround на ассемблере, который переназначал кое-какое прерывание и располагался в MBR.
Вот так и вкатился-попрактиковался. Можно ещё ассемблерные вставки пописать для оптимизации производительности критичных участков программ. Тока это надо иметь программу и реальную необходимость.
На всю историю, включая исследование проблемы ушло где-то 2 недели.
А новая материнка стоила 1500 руб. Но я был нищеброд тогда, и у меня было много времени.
Были бы деньги, я б не задумываясь бы купил бы новую мать и закрыл бы вопрос.
Я изучил MOS 6502 ассемблер по книжке, не видев до этого компьютер вживую, только на картинках. Книжка была библиотечная, переводная и посвящалась программированию на ассемблере для Apple I. В принципе, тогда я не изучил ассемблер, а просто понял как он работает. А впервые пощупать удалось в школе на БК-0010Ш. "Пидипишный" ассемблер это масло. Если на нём долго писать, то со временем можно напрямую в машинных кодах писать, настолько он прост. Залить видеопаиять сплошным цветом - как ещё проверить что ассемблер работает?
Затем 8080. Вот это было время. Программы в сотни строк. Это не какой-то там тормозящий Бейсик. Это ассемблер.
Ну а затем 8086, затем защищённый режим 80386, а затем интерес к ассемблеру пропал.
Точно не помню. Или 47, или 48. Где-то так.
https://mega.nz/file/PdhxBSZD#w-O3C-BAMwE4E02qPn_fSdTivILcE8hzk9PeyoXg7wU
magnet:?xt=urn:btih:1a4e5b67060ff2bc8fe2de36a6c265c77f392a0c
https://pixeldrain.com/u/eikufy8J // torrent file
Я сижу на линухе, есть софт под линух чтобы поковырять проги на исходники? знаю про ollydb, но тот только для винды. Как вообще с RE и ассемблером дела обстоят на линухе. Виртуалка есть, но хочется нативного.
На линухе есть Hopper и GDB. Но вообще, линуха - это мир свободного ПО (в том числе и драйверов), которое пишут на основе проприетарщины после реверса.
>который в 2016 году предлагал изучать CVS? Паскаль?
Вероятно ты так же ненавидишь свою первую учительницу, которая учила тебе алфавиту.
Чем плох Паскаль? Да ни чем. То же самое, что и Си.
бля hopper вообще платный сука.
> Что не так с человеком, который в 2016 году предлагал изучать CVS? Паскаль?
Интересно, как тот факт, что он учит паскалю, мешает ему учить программировать на ассемблере? Поссаль предлагается классической российской системой образования, и именно на нем выросло немало программистов (если говорить об академической среде), это не хорошо, но и не плохо.
radare2 - это дизассемблер, а Hopper - это дебаггер. Первое позволяет тебе прочитать бинарный файл, а второе - выполнить его, наблюдая в режиме реального времени за тем, что происходит с регистрами и стеком.
Ок, чем можно заменить тогда платный hopper?
И подойдет ли nasm для изучения, или лучше yasm или fasm. Какой вообще лучше стек выбрать для линуха чтобы вкатиться и изучить? Подскажи плис.
> чем можно заменить тогда платный hopper?
GDB с горлом хватит.
> И подойдет ли nasm для изучения,
Да.
> Какой вообще лучше стек выбрать для линуха чтобы вкатиться и изучить? Подскажи плис.
Вкатиться во что?
Попутный вопрос, где можно заюзать ассемблер? Какое у него практическое применение, и как можно на нем заработать? На высокоуровневых , ну и на си подобных еще можно подянть бабок, а тут? Кроме как пилить всякие шелы.
Не парься. Когда тебе понадобится ассемблер, ты об этом узнаешь. Учить только лишь потому, что это круто - бессмысленно. Вот интерес - это хорошая причина выучить какой-нибудь ассемблер.
Лично я учил его как раз для того, чтобы вкатиться в эксплойты и реверс.
Ну что, пацаны, собираемся для компиляции и доработок? Хотеть встроенную в IDE (VSCode или хотя бы Visual studio community) однокнопочную систему для компиляции отдельных прог и отдельную кнопку сделать заебись собрать готовый ISO.
Покупаешь левую симку, зарегистрированную на какого-нибудь хача, в одной из подпольных контор, и регистрируешься.
Да это понятно. Но всё равно не анонимно.
Тут всё нужно начинать так, чтобы не выпилили. Поэтому никаких гитхабов и анальных телеграмов, трущих посты по DCMA.
Вот черти. И ведь можете собраться. Только зачем? Не надоело быть "левшами", подковывающими механических блох?
А хуй его знает. Понастальгировать, накатить пару патчей и запуститься на собственноручно собранной винде - разве это не кайф?
Впрочем, активности что-то не видно. Утекает только то, что нахуй 99,999% не нужно.
Ну если только на Эльбрус в нативный 128-бит код портируете. :-)
Кстати, конфу в телеге вполне можно создать, только не палиться. Совсем не палиться, чтобы никто не подкопался. Типа исследование. Просто там отбирать людей. А конфа должа быть настолько легальна, что даже ссылки на 2ch в ней бы считались моветоном.
Но всё же я против. Если делать совсем нечего - лучше бы мне помогли.
>Если делать совсем нечего - лучше бы мне помогли.
Думаю, тебе будет помогать не интересно. А что ты делаешь?
Да вот систему команд придумал, а компилятора для неё нет. Собственно помощь заключается в изучении системы команд. Может какие функции полезные кто напишет, пока изучать будет. Вот как-то так.
По радару.
Можно ли им просмотреть двочный всех програм, не обязательно exe файлов.
Как наиболее быстро выучить язык асма, если куча процессоров, архитектур и тд, и разые инструкции. И еще разрядность. Можно ли как-то на асме смотреть системыне вызовы и процесыы на линухе? Но хочется для начала все таки освоить яп асма. Есть варики это сделать быстро.
Какой выучить лучше?
Я в них плохо шарю, с какого начать.
Могу nasm, или лучше под винду? Я вообще хз с чего начать. Я читнул про насм - как бы ниху сложного, знать регистры, как работать с памятью и пару моментов.
Для себя, для развития, ну и чтобы если что шелы пилить. Нуно как-то зарабатывать.
Монетизация различных функций - безгранична, в теории, начиная от дудоса например, или шантажа. Но в целом, мне бы просто начать для общего развития.
Бляяяя.... На, почитай - http://rus-linux.net/MyLDP/BOOKS/zip/hackers-heroes.pdf
Пока не осилишь - не пиши тут.
Спасибо, начал читать. Желание узнать асм - так как вирусология - перспективное направление и продукты на определенных рынках стоят не мало. Да и самому можно юзать тоже.
И еще, что лучше все таки, фасм или насм? Какой язык учить? Там немного синтаксис разный, но у фасма есть 64 бита.
Какая нахуй разница какое расширение у файла...
Возьми блчдь и скачай этот радар
Зачем спрашивать?
Да скачал я, как запустить cutter? Качал гуевину. В оф доках даже нету как запустить софтину, только картинки. Таб тоже не помогает. Сам радар есть - r2, робины и прочее. Вот катер не могу посмотреть, не нашел файлика для запуска.
Разобрался)
Сперва предположил что с помощью управляющих символов как-то она в файле устанавливается, затем после нескольких часов пердолинга с байтодрочерством в hex-редакторе дошло что кодировка походу скрыта от моих глаз где-то еще
Также подметил то что файлы сохраняются по 4Кб размера на диске, хотя они обычно у меня в несколько байтов влазят, я путем гуглинга нашел инфу что это возможно так называемые кластеры которые создаются файловой системой, и у меня вопрос: Как разобрать этот кластер на атомы? Как достать оттуда всю инфу? Где храниться имя моего файла и расширение? Где храниться кодировка файла?
Ни расширение, ни имя, ни указанной кодировки при открытии файла в hex-редакторе нету.
>>814687
Пока в процессе активного пердолинга и прошу бывалых байтослесарей помочь в моем освоении машинного кода
Кодировка может храниться в начале файла как bom https://ru.wikipedia.org/wiki/Маркер_последовательности_байтов
а может и вообще не храниться, просто нужно знать её, чтобы правильно открыть.
С ФС это не связано вообще никак.
Как это может не храниться? Как тогда компьютер узнает о том в какой кодировке открывать файл?
Компьютеру похуй, он читает байты, а байты переводит в символы конкретная программа по реализованной в ней логике.
Для японских игор надо всю систему переводить на японскую локаль и на японсий формат записи времени потому они часто не используют юникод и вместо иероглифов отображается ??????
юникод и локаль это ортогональные вещи
Я четко присвоил переменной numberSign значение 0, сравнил заведомо ложное выражение, сработал флаг jne, потом я сравниваю numberSign с 1 при помощью je, и он, сука, говорит, что они РАВНЫ! Чтоооо?
код:
mov ecx, 1
mov numberSign, 0
mov bl, '1'
cmp bl, '-'
jne convertToNumber
mov numberSign, 1
convertToNumber:
LOOP convertToNumber
cmp numberSign, 1
je changeSign
changeSign:
neg eax; то умножаем его на -1
Извиняюсь, за сбитый код.
mov ecx, 1
mov numberSign, 0
mov bl, '1'
cmp bl, '-'
jne convertToNumber
mov numberSign, 1
convertToNumber:
LOOP convertToNumber
cmp numberSign, 1
je changeSign
changeSign:
neg eax
Я поэтому и спросил, потому что программа работает не так, как ожидается
Я просто свою программу сократил, чтобы блять весь код сюда не вставлять. Но даже такая обрезанная херня не работает, так как надо. Либо я тупой, но укажите где именно
mov bl, '1'
cmp bl, '-'
Потому что ты загружашь в bl переменную которой нет, поэтому там ноль. Потом сравниваешь с переменной которой нет, т.е. с нолем. Джамп не выполняется и mov numberSign, 1
Где моё пиво?
>Почему может не работать je, а вот это cmp bl, '-' может?
Да, бля, КАК ты понял что оно не работает?
Ты даже не сказал что происходит.
На метку changeSing оно не должно перейти, потому что ты сравниваешь 0 и 1, в результате флаг Z не установите и je никуда не перейдёт.
Ты обосрался, кстати. Значение '1' легко помещается в регистр bl. И '1' это не переменная
СУКАААААААААА, я тупой дибил, я забыл, что если флаг не выполняется, то программа просто дальше продолжает работать и соответственно попадает в метку. Спасибо, анон
Так он сказал что в коде чтото меняет значение numberSign на 1. Я подумал что у него je changeSign срабатывает, а не должен срабатывать.
Не бывает. Бывает так: реверсишь, реверсишь, много сделал, инструментарий написал (говно полное), а потом просто смотришь, сколько еще нужно сделать, и думаешь, не дропнуть ли это все нахуй, и не пойти ли в грузчики.
>>819332
> Как тогда компьютер узнает о том в какой кодировке открывать файл
Эвристики. Например, если попытаться декодировать файл как UTF-8, и при этом не попадется ни одного невалидного символа, можно предположить, что это UTF-8. Если попытаться открыть как cp1251, и кириллица будет перемешана с латиницей, то это была нихуя не cp1251, а скорее 1250 или 1252. Кроме эвристик, как уже сказали, есть BOM, а еще можно тупо предположить UTF-8 по умолчанию, или предложить пользователю задать кодировку в настройках.
Я образно
https://tproger.ru/translations/reverse-engineering-basics/
прочитал это.
По сути - советуют и разибрают язык Си. Попутно тупо смотрят код на ассемблере. Все.
Мне интересно в чем суть и какой алгоритм работы в ре. Смотреть код Си в дизассембеле и графы?
На что тогда стоит обращать внимание? Не скрою, я пока слабо понимаю как писать шелы всякие и эксплойты, но для себя интересно. Например, я не понимаю как написать прогу или ее исправить а асме чтобы она каким-то образом сделала то что мне надо. Например, локер, или чтобы тупо вырубало комп, или что-то в этом роде. Хз как объяснить даже. Но как-то так.
>ре
Забавно. Это у кого профессиональная деформация, у меня или у тебя? Всегда знал что PE 'это https://en.wikipedia.org/wiki/Portable_Executable
Просто хочу писать на асм в своем ебучем коледже, потому-что нету там доступа к компьютеру. Как это организовать?
Есть Cxxdroid , там можно использовать инлайн-ассемблер
с синтаксисом GNU
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
https://www.element14.com/community/servlet/JiveServlet/previewBody/41836-102-1-229511/ARM.Reference_Manual.pdf
https://developer.arm.com/documentation/den0024/a/preface
Наивный ты
На деле проприетарщина спиздила овердохуя идей из опенсорса. Единственный явный продукт реверсинга в опенсорсе - это дрова Noveau для видеокарт Nvidia, но это только потому, что нвидия мрази ебаные и в этом плане им похуй на опенсорс от слова совсем, хотя в одночасие они используют ядро Линукса для своих новых железок (нвидия не только видеокарты производит, а полупроводники в целом).
Есть гуй для r2 - Cutter. Весьма годный, там даже декомпиль от гидры есть прикрученный. Отличная замена айде, имхо.
Уже нашел. У них на офсайте есть хорошая документация по радару. Там и консолькой неплохо все делать.
Вероятнее всего тебя интересует архитектура x86.
Ты открываешь официальную документацию Intel по ней. Там расписано всё: все инструкции процессора, регистры, как работать с всем этим хозяйством. В т.ч. там расписаны все машинные коды для инструкций, и их формат.
Штудируй это. Только, боюсь, скорее всего ты надорвёшься. Слишком сложно и муторно.
Я вот сам думал освоить сиё. Хотел написать либу, которая бы во время работы программы генерировала машинный код, исходя из некого высокоуровнего представления, и позволяла его запустить. Очень полезно, когда например юзер задаёт какие-нибудь формулы (как визуализация в winamp), и надо их быстро-быстро обсчитывать. Вроде в природе существуют уже готовые библиотеки для генерации машкодов из ассемблера.
Кроме 86 ещё mips32, armv4, avr и pic младшие, pdp11. Ещё несколько поверхностно.
>когда например юзер задаёт какие-нибудь формулы
>и надо их быстро-быстро обсчитывать
Для такого лучше LLVM IR генерировать, а потом компилировать.
Редактирование самих машинных кодов будет полезно, когда в уже работающей программе надо заменить jump на один адрес в jump на другой адрес или по другому флагу.
я уже близко
ГДЕ ТЫ?
Позанимайся реверсом 10 лет и начнёшь как в матрице видеть за цифрами. А вообще ты совсем что ли ебанутый? Для этого как раз асм и придумали. Я даже в теории не могу представить, нахуя это нужно. Если хочешь что-то ручками пропатчить по-быстрому (нопами, например) - всё равно сначала смотришь дизасм, идёшь на это место в бинарнике, пишеш. Основные оп-коды сами по себе учатся.
https://www.youtube.com/watch?v=7-GTcHZkfCs
Это вот трейсинг и есть? Не пользовался ещё.
Ну про матрицу слишком гиперболизировано - поднять ту же спецификацию по ПНГ или ЖПЕГу то запись там такая что никак уж не начнешь видеть цельную картину - оперативной памяти мозга не хватит чтобы каждый пиксель мысленно сопоставить
Сделал дамп памяти, теперь надо написать простенькую прогу которая найдет в примитивы в памяти. Исследовать этот кусок, найти текст который рисуется прямоугольниками. Найти что именно рисует эти прямоугольники, и заменить на то что нужно.
Сегодня бухаю.
Я решаю разные ситиэфы в категориях эксплуатации и реверсинга, порой подглядываю в райтапы, если знаний не хватает, тем самым заполняя пробелы, но чаще всего дохожу до конечного решения самостоятельно.
Проблема в том, что я могу понять как подступиться к ситиэфу в плане решения проблемы (допустим, если надо найти уязвимость и эксплуатировать ее), но все, что касается реальных программ, вгоняет меня в ступор. Как правильно проштудировать все векторы ввода данных в программу? Если мы говорим о Линуксе, то те же strace/ltrace не скейлятся на крупные программы, я уже молчу о таких монстрах, как браузеры, состоящие из множества программных модулей, порой напрямую друг с другом не связанных. Как правильно делать энумерацию векторов ввода? Выход один - реверсинг наощупь? А если программу нельзя запустить, нужно искать решения в лице эмуляторов? Вопросы мб слишком общие, но я буду рад, если кто-то направит меня в нужное русло и/или попросит конкретизировать каким-либо образом вопрос. Заранее спасибо.
Почему бы просто не посмотреть по библиотечным/системным вызовам?
1110100 1101001 100000 1110000 1101001 1100100 1101111 1110010
Достаточно низкий уровень абстракции?
Морер У.Д. Язык ассемблера для персонального компьютера Эпл. (Apple Assembly Language a course of study based on LazerWare software, 1984) Монография. Перевод с английского И.П. Пчелинцева, К.Г. Финогенова.
(Москва: Издательство «Мир». Редакция литературы по информатике и робототехнике, 1987)
Как вообще можно осилить асм, если там хуева туча диалектов. Как учить какой-то один и под какую задачу? Или вообще похуй?
Унесколько регистров, несколько операций, флаги, условные и беусзловные переходы. запись/чтение в память/изпамяти, вызов подпрограммы и возврат из неё,
Операции сложения и вычитания есть везде. Почти везде есть операции умножения/деления.
Операции AND OR, XOR.
Оперции сдвига в право/влево.
Всё. Ты знаешь ассемблер.
>научному
Малварь - сверхпримитивный софт в 99 процентов случаев,лол
Нет никаких научностей,реверс ботов и малвари в целом = табуретка на уроках труда
>Чтоб понимать чем шелл отличается от бекдора, а троян от руткита
удаленный шелл - доступ к консоли
Бекдор - закладка в коде позволяющая получить доступ через нее
Троян - малварь замаскированная под что-то
руткит - любая программа скрывающая как-то свое присутсвие на компе
Не важно р0/р3
это все гуглится
Не занимайся хуйней,не иди в индустрию торговцев страхом - антивирусов
Там даже платят хуево
А так есть книжка Вскрытие покажет - практический анализ вредоносного ПО
Неплохая
и новых еще поновыходило,может завтра скину в тред ссылки
вскрытие покажет немного старая(2011 год),но в целом там все ок
из нового я хотел скинуть mastering malware analysis,ее недавно еще раздавали всем бесплатно
но она только на англ
Перевод
ps говорят тут 2600 шрифтов
Какой впизду бот? Или это сорт оф подъеб? Дельный совет - ищи спецификацию и читай, там все должно быть вплоть до бита расписано что и куда и как преобразуется
И вот в игре последний слой рисует диалоговое окно вместе с текстом и ее рожей. Хотя сонибляди могли бы сделать слой для текста.....
И вот я хочу найти байты текста в этом слое, чтобы их изменить.
>>824603
>>824613
>>824643
Мне откуда знать блядь какая спецификация, ты же сейчас реверсишь эту хуйню, глянь откуда оно берет и куда, где лежит нужный текст а там разберешься. Я вообще даже не понимаю что тебе нужно
И да представь нахуй - рисовать по 1 пикселю это тоже где-то регламентировано, ведь это происходит на твоем компьютере - буква разбивается на чанки, чанки загружаются в видеопамять и тд. Все эти процессы детально описаны, нужно просто понять что к чему там и как идет, для этого реверс и нужен. Я так понял тебе нужно пилить перевод - так в файл с буквами закинь кириллицу, посмотри что выйдет, ну а дальше по мере поступления проблем решай их
Я тебе говорю об одном ты мне об другом
Это рисуется как графика. Это на диске сохранено как изображение. Нет никакого формата. Они не хотели чтобы их игру перевели. Там еще кроме этого всяких заморочек хватает, типа чтения данных из raw-области диска или тип того.
Первое что приходит в голову - сделать свой перевод аналогично как графику и задудонить туда, пробуй так решай проблемы по мере поступления. И да - изображение тоже формат
Я так и делаю, хочу хоть понять как они вообще туда текст запихали. И вот рассказал что понял пока.
Ебаш дальше, со временем что-нибудь еще поймешь рано или поздно, а потом и цельная картина подъедет
В документе ошибка? 011 Sprite primitive, а в таблице 100
Оказалось что это просто координаты на текстуре, и сначала слово пишется на текстуре, а потом переносится на экран. Бля, это теперь выяснять как буквы попадают на текстуру, вообще хз как это делать.
Чтобы я его прошил в контроллер, убедился что оно работает и дальше по списку команд тыкал сам.
Хочу сделать меню в контроллере при подключении через UART.
Естественно.
>>825353
Спасибо. Разобрался.
https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html
Проблема в том, что все туториалы что я видел, сделаны для тех кто сидит в терминале или ещё какой-то среде. Я вообще не ебу что значит ctrl+[, ^[, ctrl+d как их вводить?
Написали бы 1b5b и вопросов бы не было. Нет, какие-то кодировки наркоманские придумают.
Вот на этом моменте все время застревал.
> Я вообще не ебу что значит ctrl+[, ^[, ctrl+d как их вводить?
Первый байт - escape (0x1b), а дальше вводишь вот эти скобочки квадратные и буковки после них.
Самое в этом смешное это то, что у меня есть доступ к ним и к крос-компилятору Эльбруса. Но нет желания даже попробовать компильнуть их.
Хотя при большом желании портануть и скомпилировать возможно бы смог. Только запустить запустить и отлаживать не на чем. Да и интереса нет.
Проиграл. С таким уровнем знаний, можно разве что - думать, что знаешь ассемблер. Ну и одноклассникам рассказать.
Что там реверсить то? Символы есть, сдк есть, слитые исходники/сдк есть, дебаг сборки есть, windows internals все читали, из инструментов любой на выбор. Тебя что конкретно интересует?
ты пидор?
А а чо? База есть. На этом базисе можно начать писать, а опыт подтянется.
>щас бы пытаться на базе виндового говноядра писать ось
Вообще-то лучшее ядро на сегодняшний день.
Еслм ты этого не понимаешь, что ты делаешь в этой теме?
после слива ядра хрюши стало ясно из каких говен и палок оно соткано, а все удачные места - копипаста из опенсорса) А хули, ось для потреблядей в лице игродаунов и домохозяек, они и так будут жрать говно, даже с телеметрией на борту. Если ты считаешь, что в дриснятке что-то кардинально поменялось - спешу огорчить, мелкософтам давно похуй на шиндовс как на продукт, ибо свою маркетинговую кампанию он уже давно отбабахал, инерции хватит еще на пару поколений потреблядей вперёд.
>Еслм ты этого не понимаешь, что ты делаешь в этой теме?
Реверсинг не существует лишь на одной шинде, маня, проснись. А если брать эксплуатацию уязвимостей, что косвенно связано с этим тредом, то и подавно, ибо подавляющее общее количество компьютеров на планете крутятся на юниксовых ядрах. Помни, что винда доминирует только в десктоп сегменте, все остальное - юниксовые ядра, особенно учитывая тот факт, что в 2к20 году компьютером вполне считается даже сраная микроволновка.
Зачем так много написал? Смысла от этого не прибавилось. Есть ядро NT и оно только обрастало фичами до десятки. То, что ты имеешь смутные представления о ядре NT, это твои проблемы.
>>825774
>Реверсинг
Это тебе кажется что тема про reverse engineering, а фактически "реверс" это небольшой сегомент от "околоассемблерных" задач.
Всем давно известно, что теоретики кроме бредовых теорий ничего не могут.
Я так понял это такой же ЯП как и другие за исключением того что функции и команды в нем отвечают машинным командам процессора и что для разных архитектур разный ассемблер
Так же понял что существуют различные комплиляторы для ассемблера - MASM, FASM, WASM и тд. Разницы пока в них не вижу
Обязательно ли нужно качать какой-то компилятор? Нету ли встроенного - язык процессора все же
>Так все же - как программировать на ассемблере?
Для налача напиши "программу", которая срванивает две строки.
Это буквально несколько команд.
> Нету ли встроенного - язык процессора все же
Внезапно подумалось что ты толстишь для оживления темы. Или реально школьник.
Качай фасм и запускай примеры. Читай документацию фасм, там очень сжато и доступно.
Имей а виду, что fasmg это отдельный проект для поддержки всех архитектур сразу, где для каждой команды каждого ассемблера каждой архитектуры пишется отдельный макрос. Пока не трогай.
Masm не самостоятельный и не универсальный. Только винда.
Wasm вообще для чисто браузерная тема, если что.
Я просто долбоеб который не имеет понятия как там все устроено, ты то этим занимаешься тебе легко, я же не понимаю. При чем тут сравнение строк?
Скачал, сейчас попробую навернуть
>При чем тут сравнение строк?
Юный падаван, я гуру с опытом более 30 лет.
Ты неправильные вопросы задаёшь.
Сильно сомневаюсь в твоих способностях.
Ты умеешь программировать хотя бы на одном языке?
Вот это манямирок.
Писал бывало хеллоуворлды на с++ и js, но серьезного ничего там не делал. Поэтому можно утверждать о том что ассемблер первый яп в который буду серьезно вкатываться, серьезно потому что с самого начала моего интереса к программированию я интересовался наиболее низкоуровневыми яп, но все же не брался их учить потому-что знал что для заработка денежных средств они малопригодны по сравнению с веб-индустрией, сейчас же уже даже не надеюсь на извлечение хоть какой-нибудь прибыли и просто хочу говнокодить для себя попутно ковыряясь во всяких приложениях
Про строки подозреваю что смысл был в том что асм компилятор просто переводит мнемоники и прочую лабуду сразу в машинные коды и поэтому в самом примитивном случае это будет программа которая ставит в соответствие мнемонике некий указанный в спецификации процессора машинный код, вот при чем тут сравнение строк подозреваю
Погромировать умею на уровне хеллоуворлдов, но думаю это вполне поправимо
Говоришь С++. Это плохо. На Си++ можно писать "программы", не понимая что такое указатель. std::string во все поля.
Ладно, есть у меня одна идей - поучить тебя. Но только если ты будешь задавать ПРАВИЛЬНЫЕ вопросы. А на неправильные вопросы я буду злиться.
Какой компилятор у тебя сейчас под рукой?
FASM скачал, для с++ никакого если ты про него да и не хочу я ни на чем кроме ассемблера программировать, незнаю что за правильные вопросы
Судя по тому что я видел в гайдах я тебе не раньше недели эту задачу сделаю
>Судя по тому что я видел в гайдах я тебе не раньше недели эту задачу сделаю
Может быть тебе всё же лучше чем-нибудь другим заняться? Ну там музыка или поэзия?
https://board.flatassembler.net/topic.php?t=15676&view=next
>"реверс" это небольшой сегомент от "околоассемблерных" задач.
И что? Причем здесь понимание того, что ядро шинды, якобы, "самое лучшее"? Ты какую-то хуйню про винду высрал.
И какое, на твой взгляд, ядро лучше ядрв Windows NT?
Нет доблести писать стихи
Это может делать любой
Попробуй-ка на асме чего-нить напиши
А я посмеюсь над тобой
Регистры, инструкци, прерывания
Куда-ж без них? Никуда!
Они покруче сексуального желания
А всякие языки высокого уровня это полная ерунда.
Ха ха ха. Щучу.
>стартовый адрес ROM равен 0x08008000
Странно и нетипичино выглядит стартовый адрес.
Посмотри вот тут, может быть поможет
https://stackoverflow.com/questions/6139952/what-is-the-booting-process-for-arm
Есть гайды, как научиться быстро считать (плюсовать, складывать) в других системах счисления?
Разбираюсь дальше
Самая простая - двоичная. Легко реализуется с помощью логическимх элементов И, ИЛИ, НЕ. Относительно легко.
Даже самый примитивный микропроцессор умеет делать сложение за один такт.
Выяснил, что процессор браслета - Dialog DA14681.
10.2.3 Application start address
SUOTA-enabled applications should be compiled for execution from address 0x20000.
The following lines are already there but it is likely that CODE_BASE_ADDRESS is always set to
0x8000000. This does not work when a bootloader is present. The modification required to
CODE_BASE_ADDRESS is highlighted with red font in Code 20.
> Ты умеешь программировать хотя бы на одном языке?
Юный падаван, я гуру с опытом более 15 лет.
Ты неправильные вопросы задаёшь.
Сильно сомневаюсь в твоих способностях.
Ты хотя бы одного человека обучил в своей жизни?
Прямо в архиве есть пример Hello world с объявлением строки.
Вообще, изучи скачанный архив, там и примеры на разные темы, и инклуды, и исходники.
Примеры запускаются из коробки.
А додика этого не слушай, ассемблер самый простой язык. Как только поймёшь суть, дальше сможешь все сам.
>Dialog DA14681
Я бы на твоём месте распарсил OTP, если всё перепробовал и ничего не получилось. Затем бы уже исходя из этой информации смотрел бы дальше.
А зачем его искать? Он в каждой Windows есть.
Но по правде говоря в "десятке" он говяный. В "XP калькулятор был удобнее с точки зрения систем исчисления.
Все равно не понимаю. Попробовал ввести 0x0 как стартовый адрес, а 0xE0000000 - как последний (вдруг получится найти что-то похожее на ассемблерный код в огромной куче дерьма), тоже ничего не вышло. У меня такое ощущение, что у меня совершенно не хватает знаний в этой области, но я не могу понять, каких.
Вскрыл прошивку как обычный бинарный файл, без выбора архитектуры. Получилось следующее, лол. Строковые ресурсы IDA Pro обнаружил, а что-то опознал как инструкции Intel.
Я читал всего Таненбаума (правда, это было больше года назад), в общих чертах помню принципы работы вычислительной техники, но, тем не менее, многого не знаю.
Да я методом тыка буду пробовать. Знаю я писарей этих форумных.
Покажи hex-dump начала файла прошивки.
Компьютерные сети, Архитектура компьютера, Современные операционные системы. Я преувеличил, конечно.
В вузе немного проходили триггеры, счетчики и озу, но как-то наотъебись и абстрактно. Там сложение выглядело так безо всяких разрядов.
Лол, не уж то в ВУЗах настолько поверхностно преподают? Что ты там вообще учишь?
Не зарывайся вглубь сразу, не пытайся охватить и понять всё. Это практика, как и в любом другом деле.
Один по вирус тоталу первый раз был в 2013, второй в 2014.
Версии и метаданные совпадают.
Хэши не совпадают.
Файл с поздней датой не может быть настоящим 100%.
Что нужно сделать чтобы понять есть ли там малварь?
Скан никаких вирусов не выдает.
Я бы для начала сравнил два файла в Neo
мимо ньюфаг
Нажимай F7 после того как ida остановится на первой инструкции.
запустите в песочнице по типу app.any.run или hybrid-analysis
Единственное,что люди потом смогут скачать ваш файл оттуда при наличии регистрации там,но раз файл уже закачан на вирустотал и ему более 6-7 лет,то я думаю вас это не волнует
В шапке гайд есть на русском по ида
Обязан.
>совету анона
А ты слушай его больше.
>Не уж-то настолько тяжело писать хеллоуворлд на чистом ассемблере?
Сам суди
Сужу, вроде как экспортируется процедура _write которая делает всю работу, ну и где тут расписан чистый ассемблер? Заместь тебя все написали а ты просто это используешь, высокоуровневое программирование какое-то
Переведите на ассемблер
>вроде как экспортируется процедура _write которая делает всю работу
Дергает системный вызов ядра. Оборачивает всякой требухой.
Вот, например, прямой вызов функции ядра
https://stackoverflow.com/a/51482519
>ну и где тут расписан чистый ассемблер?
А какой степени очистки тебе нужен? Могу показать несколько способов "Hello world" без ОС на голом железе.
Это невалидный код. Это может быть заголовком, данными или зашифрованным кодом.
Упс. 16-битный режим.
Кажется я понял для чего эта процедура, похоже если я изменю буквы, то эта процедура запишет в память неправильные данные.
Извини(те), это было так давно, что 16 битный режим уже забылся окончательно.
Ха, так это же "Hello world" через прерывания BIOS.
Моё почтение к >>827626
>>827664
http://shell-storm.org/online/Online-Assembler-and-Disassembler/
Тогда я возьму уже переведенный вариант, где обошли эту ебалу, и буду там менять буквы. Щаа
Дано: огромная программа
Требуется - узнать максимальное количество путей, через которые программа получает ввод (командная строка, сеть, файлы - все подойдет) и повесить хуки на те функции, где ввод начинает обрабатываться. Речь идет о Линуксе, но на больших программах ltrace/strace - гемор тот еще. Какие подводные? Без кропотливого реверсинга и интуиции никак? Мне интересно могут ли такие вещи быть найдены эффективно и относительно быстро, используя преимущественно динамический анализ.
На Винде у тебя нет прямого доступа ни к чему, в этом суть защищённого режима процессора, поэтому любое действие через вызов библиотек user, kernel и других.
Итак, у тебя выбор из 4 путей:
1. Писать вручную PE (.exe) файл из структур, вручную прописывать все его секции, вручную строить stdcall вызовы, что кстати есть там в примерах.
Потянешь все это со старта? Нет, иначе бы давно сам разобрался.
2. Если хочешь программировать без внешних функций, программируй бутсектор. Но даже там без биоса много чего не сделаешь, например не прочитаешь флешку.
Тебе придется сразу изучить как работает реальный режим, как вычисляется адрес, как работают прерывания, изучить функции биос, изучить распределение адресного пространства.
Нагугли архив старого wasm.ru там есть статьи на эту тему. Все мы когда-то по ним игрались с реальным режимом процессора.
Потянешь? Флаг в руки.
3. Надуть губки и сказать лол, да вы все тупые хуйню мне советуете. И тогда я обязательно возьму в руки соску и буду разбираться, что лялечка хочет и почему начала плакать. Вместо того чтобы задавать конкретные вопросы как взрослый человек.
4. Наконец-то запустить долбанный пример, где пользовательский код написан на чистом ассемблере и красиво отделен от системной хуйни, и который ты сможешь за один час полностью понять и от которого сможешь дальше отталкиваться, либо в сторону 1), либо в сторону решения своих задач.
Сходу написать что-то на ассемблере без библиотек невозможно для новичка.
Примеров в фасме много, есть минимальные без макро, есть и .com под командную строку (.dos совместимую), где каждый байт пишешь сам.
Подсистем несколько бывает. Есть минималистичный дос, есть защищённый 32 битный режим, есть 64 битный и несколько специальных.
Выбери одно и изучай примеры.
Всё, разобрался на 98,5%(вдруг подводные). Эта процедура рисует спрайт буквы из кода на диске. Осталось написать упаковщик, мне оч .сложно и долго.
Мой первый ромхак прост)
> но на больших программах ltrace/strace - гемор тот еще.
Вывод пропусти через самописный фильтр, отловишь то, что тебе надо.
Фильтр пиши на простых примерах - отдельно по файлам и по сети.
Коомандная строкка тут немного другим боком. Просто считай что этот путь получения информации существует по уммолчанию.
Вот анон дал чистый hello world - >>827626
Вотт анон расписал довольно неплохо >>827709
И вот две подпрограммы для Helloworrld - ввод строки и вывод байта непосредственно в последовательный порт для экзотического процессора.
Как минимум ещё не показали пример с записью по адресу 0xb8000 на PC/XT
Это я понимаю, проблема состоит в другом - вызовы то можно увидеть в простыне от strace, но как понять где в коде самой программы это происходит? Я-то хочу повесить хуки, а для этого нужно знать адреса тех функций, где это все начинается, чего l(s)trace не дают, показывая просто последовательность вызовов библиотечных/системных вызовов.
Схоронил, буду разбираться что там к чему. А куда именно эти символы выводятся? В консоль? Смущает этот порт
>А куда именно эти символы выводятся? В консоль?
В последовательный порт. Условно там три провода - земля, TX, RX.
Вывод попадает в терминал на компьютер.
Начнем с того, что пример для ARM процессора, если не ошибаюсь.
Все, я больше не участвую. Сам очевидно ты ничего не будешь делать, поэтому и объяснять нет смысла.
Пусть тебя тянут другие.
Мимо
>как понять где в коде самой программы это происходит?
В интернетах для решения твоей задачи предлагают скачать исходники strace и добавить к выводу адреса.
Ну а что? Как вариант, если всё перепробовал и ничего не получилось, то может получиться.
>Начнем с того, что пример для ARM процессора, если не ошибаюсь.
Не, это самоделка в ПЛИС. Система команд оригинальная.
Ок, спасибо. Я пока наворачиваю документацию по FASM'y чтобы инструкции там понять, в ида дизассемблировал хеллоуворлд который в examples, там подключилась библиотека kernel32.dll, придется и ее дизассемблить чтобы посмотреть как эти функции работают, скачал интеловскую документацию на мой процессор, буду архитектуру еще разбирать, спецификацию РЕ читал и hex-дамп .ехе'шников смотрел(из-за того что в редакторе открывал послетали файловые ассоциации, еще пол часа потратил в реестре все восстановить). Аутизмом занимаюсь полнейшим надеюсь что-то из этого выйдет
Прям оригинальная, не микроблейз? Интересно, для чего понадобилось свою систему делать, если не секрет?
Вы вот все высокоуровневые такие - пытаетесь зацепиться за стандарты, найти похожий системы и какбы посмотреть под другим углом. Я не согласен с таким подходом, просто знайте. Из этого ничего хорошего не выйдет. Надо сразу брать цель и решать её.
Это долгая история. Была необходимость добавить некоторый аппаратный блок в любой существующий CPU, был поход на https://opencores.org/projects и анализ разных процессорных ядер. В результате пришлось принять трудное решение делать оригинальное процессорное ядро.
Я не знаю никакого высокоуровневого языка, ассемблер первый из всех япов для меня пока
Это отлично, не углубляйся в теорию, решай больше практических задач. Просто совет. Мне когда надо будет PE-заголовок, тогда и разберусь с ним, к примеру.
Чтобы понять функции виндовс, нужно читать документацию на winapi.
kernel32 реверсить нет смысла для этого.
Я не нашел ссылок на wasm.ru архив, поэтому закинул на диск.
Открой и почитай, там много интересного в том числе найдешь и уроки по win32, и PE.
Тут же можешь скачать документацию на основное win32api.
https://drive.google.com/folderview?id=1Pk9j_vXs_pqAkQy7QyI4KqFftcSQw0sq
Что если первый то С не могу знать
Привет, а можешь подсказать, чуть более подробно как решал?
Пытаюсь сам раздуплить, но чето не могу зарешить, если гайд какой-то дашь, буду благодарен
Можешь помочь со вторым таском?
Пытаюсь потрениться на нем, но нифига внятного не получается.
1. Инструкция - это опкод или опкод+операнды(0 или несколько)?
2. Команда - это тогда что? То же самое, что инструкция?
3. Что значит принцип хранения данных и инструкций (программ) в одной памяти? В чем разница? Как я понял, (данные) - набор осмысленной, но бесполезной без задействования программ, информации. А (программа) - набор инструкций, приказывающих процессору выполнять определенные действия и работать с этими данными. И в зависимости от интерпретации машинного кода одно и то же условное f5 f3 e9 может быть считано и как слово хуй, и как инструкция? Я правильно понимаю? А как компьютер тогда понимает, как интерпретировать это? В контексте программы?
Извините, если тупость написал, у меня уже каша в голове из терминов.
>А как компьютер тогда понимает, как интерпретировать это?
У проца есть указатель на адрес с командой/инструкции.
>у меня уже каша в голове из терминов.
FFFFFFF нахуй идут термины
Эти термины придумали специально чтобы сделать из программирования ёбаное сектанство. Никчёмные, прыщавые уёбки напридумывали терминов и обмазываются ими. Поэтому ничего хорошего в этой ёбаной стране нет.
насмотрелся авгна
>Объясните мне.
>
Инструкция это код операции и операнды, что по сути почти одно и тоже, поскольку операнды зачастую есть часть инструкции.
Команда то же самое что и инструкция.
Код и данные могут быть физически в одной памяти, а могут быть в раздельных. Например, ГАРВАРДСКАЯ АРХИТЕКТРА подразумевает что код и данные разделены. У устройства разные шины для считывания код и считывания данных. Обшая память для инструкция и данных называется Фон Неймовская архитектура.
> И в зависимости от интерпретации машинного кода одно и то же условное f5 f3 e9 может быть считано и как слово хуй, и как инструкция? Я правильно понимаю?
Да.
> А как компьютер тогда понимает, как интерпретировать это?
Если выборка происходит по счётчику команд, то это код, любой другой вариант - данные.
Ничто не мешает установить счётчик команд на данные и процессор "сойдёт с ума".
480x360, 3:01
>Тип nil — это тип с единственным значением, nil, основная задачакоторого состоит в том, чтобы отличаться от всех остальных значений.Lua использует nil как нечто, не являющееся значением, чтобы изобразить отсутствие подходящего значения.
Это же сектанство. Я пытался читать это, чтобы понять скрипты который написал этот ёбаный сектант. В итоге мне это не понадобилось от слова совсем. И Я ПРОСТО ПОТЕРЯЛ ДОХУИЩА ВРЕМЕНИ!! А всё оказалось намного проще.
Это указатель с точки зрения языков высоко уровня.
В машинном коде это всё предельно просто - записываешь число (адрес) в регистр, читаешь или пишешь память по этому адресу.
И это прочитанное значение в свою очередь может быть использовано как адрес. Будешь списки реализовывать - поймёшь.
Спасибо!
>зачем было выдумывать десятки заумных алгоритмов
>Нах эти все супер шифры
Ты пишешь другу зашифрованное сообщение:
Вечером футбол, возьми пива, зайду в гости.
Потом говоришь жене: Вечером пойду к другу смотреть футбол.
Она тебе: Будете пить пиво.
И ты думаешь: она может читать мою зашифрованную переписку? Или она догадалась?
Чтобы быть уверенным что это просто совпадение нужен надёжный шифр(в идеале - идеальный). Ну и ещё чтобы инфа не попала третьим лицам.
А объяснить эту концепцию просто нереально. В итоге быдлан думает: я боюсь потому что мне есть что скрывать. Остаётся придумывать отмазки на ходу.
Я про кодировки спрашивал, если записка будет на арабском, она один хуй не сможет прочитать. Я к том что если юзать малоизвестные кодировки, то нахуй вообще эти алгоритмы шифрования нужны.
Я не знаю. Как угадывать, тролинг это или тупость?
Почему не сможет, она так сказала? Ну пиздец......
Ещё вот так можно объяснить. Если можно зашифровать просто, и можно зашифровать в 2 раза лучше. Почему нужно выбирать первый вариант, если можно выбрать второй?
Всё. Больше не буду развивать тему. Сорян.
> Инструкция это код операции и операнды
Инструкция - это более высокоуровневая сущность. Например, в x86 ты можешь 89 c8 и 8b c1, но выполняться физически будет одна и так же операция. Инструкция задает поведение, опкод - лишь способ записи.
>>828867
> Я к том что если юзать малоизвестные кодировки, то нахуй вообще эти алгоритмы шифрования нужны.
Сколько ты таких кодировок назовешь? Ну пусть пару тысяч, хуй с ним. То есть любой дебил сможет один раз их все собрать и написать скрипт, который за 2^11 попыток (за доли секунды) декодирует то, что ты там нашифровал. На самом деле и без прямого перебора можно тупо статистикой вскрыть, но похуй. При этом если ты воспользуешься любым сколько-нибудь серьезным шифром, то на перебор потребуется уже 2^64 попыток, даже если шифр совсем говно.
Кодировка это алфавит для компьютера. У каждой буквы есть номер, как в языке, так и в кодировке.
Если ты знаешь, что текст написан на русском, то нет никакой сложности например узнать код буквы А потому что она самая часто встречающаяся.
Сколько не меняй ее код, она всегда будет самая часто встречающаяся.
Перевод естественных языков это гораздо более трудная задача чем просто замена, ее до сих пор до конца никто не решил.
Так что компьютер не сможет перевести на арабский сообщение.
При слове "арабский алфавит" меня начинает трясти. Их письменнность основана на лигатурах, а правила для лигатур зашиты глубоко в шрифтах. Легче защиту на игрушке сломать, чем распарсить лигатуры из шрифта и на их основе построить список глифов. Это боль боль боль боль боль боль.
А почему именно из шрифта? У них что, нет какой то одной стандартной кодировки?
Почему нельзя составить список соответствия лигатур и исходных символов?
> У них что, нет какой то одной стандартной кодировки?
Снаружи, на уровне Unicode, она стандартная. А вот внутри уже ад - в зависимости от позиции буквы она может отображаться разными спосбоами. Так же её вид может отличаться от того, какая или какие буквы стоят перед ней. То есть в алфавите это одна буква, а отображаться она может разными глифами.
Будет ближе к выходным
И шапку обновить не забудьте
Потому что даже в 32 битном сегментация никем почти не используется.
Все сегменты в Винде настроены на 4 ГБ.
Сегментация же вроде как придумана была чтобы больше памяти на маленьких регистрах адресовать. Подвид косвенной адресации можно сказать.
Если 64 бита регистры, то можно без всяких сегментов адресовать терабайты ОЗУ.
Мне было в свое время интересно, почему винда не использует больше 4 ГБ в 32 битном режиме, если у нее есть PAE специально для этого придуманный?
Спасибо за ответ. В документации пишет что основная причина ввода сегментов - это повышение надежности программ: размещение программы в отдельных сегментах предотвращает к примеру роста стека в код или данные и соответственно перезапись им последних. Насколько сейчас эта проблема актуальна?
Вместо этого сделали защищённый режим. Теперь при загрузке можно заполнить целую структуру, в которой записаны параметры памяти, и процессор сам будет следить чтобы задачи не лазили в чужую память.
Винда и Линукс работают в 32 битном защищённом режиме, но 32 битный бывает и не защищённым, это отдельный механизм.
Сегментные регистры остались, но в защищённом режиме они имеют совсем другое значение.
В Википедии подробности.
> интел отказались от сегментации памяти?
Потому что страничная организация целиком покрывает все потребности. А поддержка совместимости добавилы бы больше проблем, чем преимуществ.
> основная причина ввода сегментов
Основная причина, по которой интел в 286 решили притащить в защищенный режим именно сегменты — это то, что страничную трансляцию они позволить себе еще не могли. Все эти прогулки по таблицам страниц дорого обходятся. А защищенный режим уже хотелось. Вот и слепили, как получилось. А как только получилось это говно выкинуть — выкинули. Не без помощи амд, конечно.
Да, обязательно.
Конечно. Сначала лучше на С/C++ что-нибудь пописать, если еще не. Потом куришь архитектуру компьютера. Потом язык ассемблера не ассемблер, епт, win32 api желательно, потом уже RE.
Это хорошая игра.
>Ставить на виртуалку дос?
Да. Безусловно. Будет прямой доступ ко всему железу. О чём можно только мечтать.
Но есть нюанс. Ставь FreeDOS но ни в коем случае не MS-DOS.
>Ghidra
Как это говно хотя бы запустить? В репозитории нашёл только DevGuide.md с какой-то ебической инструкцией, где предлагают наставить всякого говна, затащить пол люнупсы и эклипс в придачу. Там что, нету тупого бинарника, который можно запустить двойным щелчком мыши?
В теории можно, но это долго и муторно - перегеть процессор. Понадобится года три его греть, после того как термопаста высохнет. Других способов нет.
>Как это говно хотя бы запустить?
Возьми vpn и скачай билд с ghidra-sre.org (амеры заруливают запросы с русских ip на 403).
Дальше запуск ghidraRun, батник или шелл на выбор.
У его процессора вестимо. А скорее у оси, потому как сейчас процессор без 64-бита можно найти только на компе, спрятанном лет 5 назад в кладовку.
Бросишь через 15 минут.
крч таненбаум как-то частями освятил, но пропасть между ос и железом осталась. че некст фундаментальное про ос можно почитать?
Построй пзушку в майнкрафте.
Современные операционные системы Танненбаума описывают все аспекты операционных систем.
>про сисколы [syscall]
Традиционно на старыъ компьютерах системные вызовы осуществлялись через инструкции прерывания. Это позволяло сохранить контекст вызывающей программы. Затем добавились новые расширения для системных вызовов, но пока ты не поймушь суть системных вызовов, лучше не лезть в дебри.
>>833592
Двачую. Он не вдумчиво читал.
Я остановился на половине книги, где про виртуализацию, все никак не могу дочитать.
>Это позволяло сохранить контекст вызывающей программы.
Программное прерывание прежде всего позволяло не привязываться к точке входа в системный вызов. Оно было универсальным на любой версии ОС.
>я выкупаю что такое прерывания для проца, но не понимаю как прерывания обрабатывает ос. типа проц может номер прерывания сопоставить с началом функции, а ос че как вобще постоянно мониторить прерывания програмно.
Не позорься. ты НЕ ПОНИМАЕШЬ КАК РАБОТАЮТ ПРЕРЫВАНИЯ.
Пока не поймёшь - не возращайся.
хорошо ладно извините
Прерывания на то и прерывания, что их мониторить не нужно. Они вызываются сами, когда какой-нибудь блок типа usb даст процессору соответствующий сигнал.
Нажал кнопку - процессор все бросил, вызвал функцию - ос, которой принадлежит эта функция, сделала все что нужно и вышла из прерывания - процессор продолжил там где остановился.
так да, и если аппаратно понятно как это может работать, то в случае с прерываниями для ос не понятно.
т.е. если программа напрмер пишет чето в порт для прерывания, то окей, понятно как это можно быстро поймать и обработать, но если сама ос обрабатывает какие то прерывания, то не понятно
ой бля я крч дебич, не выкупаю, почитаю, мб пойму.
но тип апаратные прерывания мега понятные, а как ос обрабатывает исключения и напимер такую хуйню как int 3 или int 21h не понятно. ну типа как вызвать прерывания в программно если их не пониторить??
Программные прерывания точно так же работают, просто сигнал даёт не внешний модуль а команда int.
Команда int - процессор бросил эту ветку - вызвал что там по номеру и так далее, потом вернулся и дальше пошел исполнять то что после int.
Для программы которая вызывает прерывание, отличие от обычного вызова минимальное.
внешние прерывание значение, проц может его сопоставить с массивом функций обработчиков. для внешнего хардварного прерывания есть ножка, при наличии на которой сигнала проц ищет функцию обработки.
а с программными, ну окей, проц исполнил инт, пошел искать че делать ровно так же, но как ос получает сигналы и чето делает пока не выкупаю. крч пропасть между хардваре и ос. я не могу обяснить толком че мне не нрав в этой схеме, но как-то мутно непонятно
А у XP скоро будет.
ОС не получает сигналы. ОС просто пишет адрес своего обработчика (или дескриптор в защищенном режиме x86, но похуй, все равно адрес) в массив адресов/дескрипторов, процессор просто берет номер прерывания (похуй, любого, что хардварного, что программного), просто читает из этого массива адрес по индексу и передает управление туда (ну там контекст сохраняет, другие прерывания запрещает - это само собой). Просто тупо делает call far (плюс-минус особенности защищенного режима). Механизм настолько одинаковый, что в реалмоде тебе нужно прикладывать усилия, если ты хочешь как-то отличить call far адрес_обработчика от int номер_вектора от IRQ с тем же вектором.
В UEFI чексуммы и подписи. В биосах чаще всего были только чексуммы. В любом случае, нужно патчить как минимум проверку в прошивалке или шить, подключившись программатором напрямую. Но для разлочки меню в UEFI часто можно без всего этого обойтись, узнав переменную, которая активирует меню и выставив ее через шелл. Загугли "uefi setup_var" без кавычек.
Вот это техподдержка.
>я выкупаю что такое прерывания для проца, но не понимаю как прерывания обрабатывает ос. типа проц может номер прерывания сопоставить с началом функции, а ос че как вобще постоянно мониторить прерывания програмно. мутная хуйня какая-то.
Сисколлы в лялексе реализованы через программное (его еще называют синхронным, так как происходит в так процессора, в отличие от аппаратного) прерывание. Есть такая штука, как ABI (Application Binary Interface), по конвенциям которого вызываются функции, сисколлы, используются определенные регистры для, например, возврата значения из функции и т.п.
ВНИМАНИЕ! Нижеперечисленное релевантно только касательно архитектуры x86_64.
По ABI, перед вызовом сисколла заполняются соответствующие регистры (в х86-64, например, в rax записывается дескриптор обработчика системных вызовов), когда все соответствующие регистры заполняются, вызывается программное прерывание через инструкцию syscall (int 0x80 в 32-битной версии). Тем самым, вызывается обработчик прерывания, дескриптор которого сигнализирует ядру, что данное программное прерывание - это сисколл. Через регистр rax ядро выясняет какой именно сисколл вызвался, но а другие регистры содержат аргументы сисколла. Сам код сисколла находится в пространстве ядра, поэтому происходит context switch между пространством пользователя и пространством ядра, чтобы CPU смог исполнить привелигированный код. После выполнения кода сисколла, происходит context switch из ядра обратно в юзерспейс.
первоочередной целью этого изучения является удовлетворение собственного интереса
С хелло ворлда.
спасибо, добряк, хорошего тебе дня
Не не выпускают, а не впускают. Именно штаты чего-то их захейтили. Типа они без лицензии что-то реверсили и их копирайтеры засудили. Или что-то похожее. Может закладки или уязвимости искали. Я вообще не в курсе. Сейчас в акронисе говорят толпа таких работает.
Бляяя, cd-rom psx это АДЪ, никто не знает как он работает, это блять живой организм. Почти две бессонные недели убил на поиск решения, а решение оказалось простым(тоже с чтением сектора). Прокрастинация работает даже если чтото делаешь.
ОП треда - коммунист
Но не стал, а то ведь проткнутое ничтожество не сделает то что должен сделать. Потому что коммунист.
Умеешь делать перекаты? А то оп-хуй-коммунист повесился. И что? Нам теперь на асм забить и учить высокоуровневые языки?
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
https://2ch.hk/pr/res/1837856.html (М)
Перекат посвятил fasm, а также шизику с копированием строки.
Это Бро
>Почти две бессонные недели убил на поиск решения, а решение оказалось простым(тоже с чтением сектора). Прокрастинация работает даже если чтото делаешь.
Нифига себе, если ты убил две бессонные недели, и это называется прокастинация, то страшно подумать на что ты способен когда поборешь прокастинацию.
Решение с сектором красивое, потому что простое.
Мои наблюдения, как новичка. Чтобы побороть прокрастинацию нужно понимать, что неправильные действия это тоже результат. После того как сделаешь кучу ненужной работы, понимаешь что нужно сделать. И какбы вся проделанная ненужная работа становится не такой уж и ненужной, потому что без этой "ненужной" работы я бы не узнал нужную работу.
Но всё равно это ебёт - хуля я такой никчёмный, почему сразу не догадался что надо делать вот это, это же очевидно, зачем понаделал столько всего ненужного.
Чтоб находить твой недотред из навигатора в шапке.
Попросите мода добавить
>Почитай Microsoft EULA.
Та эта хуйня и юридически ничтожно, по прецендетному СШАшному праву можно всё реверсить, если чисто. Просто Майкрософт, похоже, настолько крупный зверь, что им похуй вообще на всё. Делают что хотят по праву сильного. Так-то их хуйню реверсить законно.
Это копия, сохраненная 8 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.