Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
79 9 47

ASM & Reverse engineering №11 /asm/ Аноним 28/01/20 Втр 14:02:45 15847161
image.png (1486Кб, 1000x1000)
1000x1000
image.png (217Кб, 762x540)
762x540
image.png (3397Кб, 1200x1152)
1200x1152
image.png (54Кб, 799x409)
799x409
В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).

Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.

Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.

Книги по RE:
Денис Юричев: "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна! Вот прямая ссылка https://beginners.re/RE4B-RU.pdf
Рикардо Нарваха: Введение в реверсинг с нуля, используя 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 7.2.torrent
2) IDA Pro 7.0.torrent (x64 only, для XP нужно патчить PE + вылеты)
3) IDA Pro 6.8.torrent
4) IDA Pro 5.0 - бесплатная версия для некоммерческого использования
5) Radare 2 - наконец прикрутили гуй, но по прежнему нужна только клиническим, не умеющим в скачивания торрентов, или пользователям альтернативных ОС
6) Ghidra для любителей анальных зондов от АНБ не такие уж они и анальные
7) Остальное

Все книги и статьи Криса Касперски (R.I.P.)
https://yadi.sk/d/CxzdM1wyea4WP или https://rutracker.org/forum/viewtopic.php?t=5375505
+ https://rutracker.org/forum/viewtopic.php?t=272818

Книги по ассемблеру:
"Архитектура компьютера" Э. Таненбаум
Юров В.И: 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/

Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
http://msdn.mirt.net/
http://terminus.rewolf.pl/terminus/
http://geoffchappell.com/
«Внутреннее устройство Windows» интересующего издания.

Документация Intel:
https://software.intel.com/en-us/articles/intel-sdm

Разное:
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/

Предыдущие:
№8 https://2ch.hk/pr/arch/2019-08-15/res/1406213.html
№9 https://2ch.hk/pr/arch/2019-11-11/res/1439555.html
№10 >>1499956 (OP)
Аноним 28/01/20 Втр 20:06:39 15850532
перекатился
Аноним 29/01/20 Срд 01:27:01 15852303
Sexas
Аноним 30/01/20 Чтв 10:58:50 15860194
Аноним 31/01/20 Птн 10:33:56 15867855
ss (2020-01-31 [...].png (30Кб, 774x352)
774x352
Господа, может кто-нибудь опознать, что это за странная FAT-подобная хрень? Некоторые байты совпадают с ожидаемыми для BPB, но непонятный алфавит в середине не вписывается никак и никуда. Может кто сталкивался?
Аноним 31/01/20 Птн 11:03:18 15867926
>>1586785
Ещё смущают, конечно, что поля Volume Label и System Identifier идут в двух копиях друг за другом.
Аноним 31/01/20 Птн 17:06:30 15871277
>>1586019
Хрена он старый стал. Валил же молодым-шутливым.
31/01/20 Птн 18:42:00 15872168
>>1587127
Это еще 18-ый год, представь какой он сейчас..
После выхода гидры наверное вообще лысеть начал.
Аноним 02/02/20 Вск 13:19:29 15891679
image.png (2604Кб, 1728x1080)
1728x1080
https://niemand.com.ar/2020/01/
Этот же пчелик >>1583238 потрошит XignCode3 античит так понимаю, какое-то древнее решение для таких же древних корейских ММО-дрочилен..
02/02/20 Вск 16:44:41 158933410
1574188915523.jpg (84Кб, 1000x1024)
1000x1024
Аноним 02/02/20 Вск 17:30:37 158940311
>>1589334
Что не так? Код линейный все перед глазами, не нужно лазить джва часа по ебаным хедерам и изучать архитектуру проекта.
Аноним 03/02/20 Пнд 02:58:49 158997512
Господа. Как добавить свою кнопку в сторонний интерфейс (лучше вкладку)? Обрабатывать вызов думаю при помощи proxy dll
Аноним 03/02/20 Пнд 06:06:47 158999413
>>1589167
Не понял, он что просто взял их драйвер и сразу же закинул в иду? Разве он не должен быть хоть как-то обфусцирован? Тем же VMP накрыть можно было.
Аноним 03/02/20 Пнд 20:48:27 159085214
>>1584716 (OP)
А есть ли какой-нибудь набор ассемблеровских задач с автоматической проверкой аля тимус? Не обязательно на русском.
Аноним 05/02/20 Срд 10:18:37 159210115
Аноним 06/02/20 Чтв 17:48:30 159347716
Кто-нибудь разворачивал песочницу для анализа малвари? Хочу в итоге получить что-то типа any.run или hybrid analysis.
Аноним 06/02/20 Чтв 17:51:34 159348317
https://pastebin.com/bS5LH78h

diff между двумя сишными программами, вторая из которых вычисляет разность квадратов буквально — aa - bb, а первая — по формуле сокращенного умножения (a + b)(a - b). При профилировании не удаётся обнаружить разницу в быстродействии.
Почему?
Читнув стаковерфлоуца, я естественно нихуя не понял деталей, но по всей видимости современные процессоры просто очень быстро умножают (за 1 такт вроде). Это верно? И если да, как это реализуется в двух словах?
Аноним 06/02/20 Чтв 22:38:04 159380618
>>1584716 (OP)
Что за тихий ужас на втором скрине?
Аноним 06/02/20 Чтв 23:59:53 159388919
>>1593806
Гидра же. Оп - хуй засланец фбр. В следующем треде вернем идочку в шапку.
Аноним 07/02/20 Птн 00:55:19 159390920
>>1592101
На последнем БлэкХате АНБ-шные разрабы в своем докладе явно дали понять, что открытая лицензия - это не щедрость, а способ приучить к их поделию новых реверсеров ясен перец за счет потенциальных IDA юзеров, ну и халявные коммиты от комьюнити, вместо попыток догнать иду за свои деньги.
>>1593806
Анализ какой-то малвари в гидре, насколько я помню.
Вместо Эдди в шапке также должен был быть сэмпл в IDA, но Абу-поделие наебало меня с превьюхами, так что сорян.
Так-то я не фанат NSA, просто в этой области кроме софта от алчного Ильфака и подсматривающего дяди Сэма альтернатив не видно.
07/02/20 Птн 01:02:55 159391221
>>1593909
> приучить к их поделию новых реверсеров
У меня глаза вытекли от одного скрина. Как реверсить без глаз?
Аноним 07/02/20 Птн 08:16:26 159400222
>>1593483
>При профилировании не удаётся обнаружить разницу в быстродействии.
А gprof что говорит?
Конечно не эксперт, но в твоем листинге вроде все как ты и описал:
- в первом случае вычли/сложили, результат перемножили;
- во втором оквадратили и вычли;
Аноним 07/02/20 Птн 12:03:18 159412023
>>1593912
Это тактика USA чтобы обезоружить наших реверсеров
Аноним 07/02/20 Птн 12:56:21 159415624
>>1594002
>но в твоем листинге вроде все как ты и описал
Я об этом и говорю. Во втором два умножения, но он не медленнее первого (умножение — это ведь цепочка сдвигов и прибавлений к аккумулятору?).
А в асм я полез только чтобы удостовериться, что это не компилятор выёбывается и оптимизирует. Кстати, а таки почему он не оптимизирует математику? Ладно сегодня, допустим суперскалярные процы, но ведь в восьмидесятых при работе с какой-нибудь криптографией разложение по формулам сокращенного умножения на уровне компилятора могло здорово выручить. Вероятно где-то в более высоких флагах оптимизации это есть.
Аноним 07/02/20 Птн 14:18:29 159420925
>>1594156
Хм.. Наверняка я не правильно понял, что именно ты хочешь, но может быть эта табличка окажется полезной? Там всякие latency, throughput, потраченные uOps-ы для разных инструкций под кучу архитектур:
https://uops.info/table.html
Аноним 07/02/20 Птн 18:17:01 159441726
>>1593483
Я мимокрокодил и не эксперт, но во-первых в современных cpu несколько alu (4?), т.е. у тебя могут параллельно считаться (a x a) и (b x b) потом складываться, аналогично (a+b) (a-b) и потом перемножаться, в обоих случаях по времени будет 1 сложение и 1 умножение.
Во-вторых, там какая-то магия побитового унможения в столбик, вроде бы. Что такое бинарное умножение в столбик? Это сумма сдвинутых на 1 бит копий одного множителя, на соответствующий бит из другого множителя.
Пример из вики
    1011
    1110
========
    0000
   1011
  1011
 1011
========
10011010
Как это делается в схемотехнике? Сдвиг это очень просто, подключаешь выход проводом к следующему входу сумматора, а умножение на 1 или 0 будет просто маской пропускать или не пропускать ток.
Аноним 07/02/20 Птн 18:47:18 159445327
>>1594417
>во-первых в современных cpu несколько alu (4?), т.е. у тебя могут параллельно считаться (a x a) и (b x b) потом складываться, аналогично (a+b) (a-b) и потом перемножаться, в обоих случаях по времени будет 1 сложение и 1 умножение
Тут да.
>там какая-то магия побитового унможения в столбик, вроде бы
Я ведь так и сказал "цепочка сдвигов и прибавлений к аккумулятору".
Но всё равно что такое один раз сложить и что такое сложить n раз, где n - количество единиц в одном из множителей. И это у тебя ещё пример несложный, а что если у нас 0000ffff * 0000ffff, где будет охуиллиард carry скапливаться в одном разряде (и потому не получится всё проссуммировать без хранения промежуточных результатов)? Но так или иначе, концептуально я вижу возможность это реализовать, а раз я вижу, значит видят и инженеры.
Короче зависит от архитектуры, если это какой-нибудь спектрум или восьмибитная приставка то мы говорим бизнес.
Аноним 08/02/20 Суб 03:20:27 159498028
>>1594417
> Во-вторых, там какая-то магия побитового унможения в столбик, вроде бы
Не совсем так. Есть алгоритмы слегка быстрее (Бут тот же), их и используют. И да, все считается в железе и параллельно, места на кристалле требуется много, поэтому в древних чипах умножения могло не быть вообще.
Аноним 08/02/20 Суб 11:40:14 159510829
>>1594980
Ну я говорю не эксперт, с ходу не нагуглил какие алгоритмы используются. Бут может и не используется, он же для каких то доисторических мамонтов. К тому же написано, что он выполняет 2-3 цикла. А анон писал, что вроде за 1.
Аноним 09/02/20 Вск 01:24:44 159595830
Ананасики, хочу вкатиться в реверсинг и поиск уязвимостей в прошивках (мобилы и прочая эмбедщина). Есть годные источники для сабжа, желательно на английском, офк?
Аноним 09/02/20 Вск 11:13:11 159611131
Аноним 09/02/20 Вск 14:05:25 159619632
>>1596111
В шапке ни слова о прошивках
Аноним 09/02/20 Вск 19:43:48 159653133
Как сохранить текущее состояние потока с последующей возможностью восстановления? Все регистры, все флаги итд.
Аноним 09/02/20 Вск 19:44:34 159653234
>>1596531
Ах да забыл уточнить. Без использования прерываний и каких-либо системных механизмов.
Аноним 09/02/20 Вск 19:48:25 159653735
О, годная тема треда, задам вопрос здеся. Пишу компилятор с нуля, направьте в какую-нибудь конкретную спеку, как сгенерить простейший debug инфо для gdb. Читал оф. "документацию" про дварфы-стабсы, в целом это понятно, но блджад нигде не написано конкретно, как бинарно должен выглядеть дебуг-файл. Если смотреть на высеры из-под gcc то это что-то типа coff файла, но секции в нём некорректные, заполнены хуйней-малафьей. Помоги, анон.
Аноним 09/02/20 Вск 19:51:40 159654336
>>1596537
Пердоль свой формат, даже у майкрософт подобные вещи не документированы, что уж говорить про линь.
Аноним 09/02/20 Вск 20:13:15 159658537
>>1596543
Чот нет желания пилить свои редакторы и дебаггер, но видимо таков путь, штож.
Аноним 10/02/20 Пнд 12:59:51 159713038
Что, помимо написания драйверов, можно еще делать на АСМе?
Поступил в универ, начали изучение ассемблера. Так интересно мне еще никогда не было. Хочу дальше копать в этом направлении, только надо понять чем можно будет заниматься по итогу за ежемесячное денежное вознаграждение.
Аноним 10/02/20 Пнд 15:18:58 159728239
>>1597130
Офк ничем, в 2020 асм нужен максимум реверсерам. Учи джава скрипт и не выебывайся.
Аноним 10/02/20 Пнд 16:46:50 159734840
>>1597130
В драйверах ты максимум используешь ассемблерные вставки, бОльшая часть кода драйверов написана либо на Си, либо на С++ (если говорим про юникс-подобные системы, то на Си).

На асме пишут только бутлоудеры и архитектурно-зависимые подчасти операционных систем. В подавляющем количестве случаев байтоебством занимаются на си и крестах а хипстеры еще и на расте, а так асм для реверсинга нужен, и то не всегда нужно читать чистый асм, так как есть декомпиляторы
Аноним 10/02/20 Пнд 17:05:01 159736441
>>1597282
Да ты охуел? Вот мне например понадобился свич контекста. И как мне его без асма пердолить? >>1596531 - кун. Помогайте давайте.
Аноним 10/02/20 Пнд 19:01:55 159743542
>>1596531
Так руками же. mov [state.rax],rax и так далее. pushf/pop [state.rflags], fstsw, fnstcw, fnstenv, stmxcsr вот это все. Никакой магии не существует. Системные механизмы делают точно так же.

С другой стороны:
> Вот мне например понадобился свич контекста
У тебя есть те самые системные механизмы. Те же фиберы в винде, SetThreadContext, через исключения еще можно сохранять/восстанавливать. В сишечке setjmp/longjmp тоже за тебя уже написали. Интринсики опять же. Писать на асме не так уж и нужно хотя на асме все же приятнее - весь контроль у тебя, и делать что-то странное - проще.
Аноним 10/02/20 Пнд 19:03:55 159744043
>>1597130
Компиляторы, щито ещё.
Аноним 10/02/20 Пнд 19:04:25 159744144
Т.е. не на самом асме, а со знанием оного.
Аноним 10/02/20 Пнд 19:36:42 159745945
image.png (24Кб, 466x679)
466x679
>>1597435
> Так руками же
Тогда rsp сломается, мне его тоже сохранить нужно. Можно конечно его вычислить, но как то плохо попахивает такой код (пикрил). Или и так пойдет?

> У тебя есть те самые системные механизмы
Часть регистров затрут же. Да и ходить в ядро слишком накладно. Исключения хороший вариант, но тоже дорого.
Аноним 10/02/20 Пнд 19:40:01 159746146
>>1597435
> Те же фиберы в винде
Вот в эту вещь тоже не въезжаю. Это вообще что? Сколько читал в про эти волокна, так и не понял что это такое и как их использовать.
Аноним 10/02/20 Пнд 20:44:06 159750747
>>1597459
> Тогда rsp сломается, мне его тоже сохранить нужно
Как сломается? Ты его изменишь, да, но при восстановлении все вернется, как было.

> Или и так пойдет?
А зачем в стек-то? Ты же собрался переключать контекст, так и храни его отдельно.

> волокна, так и не понял что это такое и как их использовать
Эта штука как раз для переключения контекста (есть еще user-mode scheduling, но оно тяжелее). Фибер - это выделенное место под контекст и выделенный собственный стек, больше там нет нихуя. При переключении (SwitchToFiber) с фибера на фибер текущий контекст сохраняется в стейт первого фибера, из стейта второго фибера загружается новый контекст (т.к., это включает rsp, то и стек переключается). Все происходит в юзермоде, достаточно быстро. Можно делать, например, корутины: https://nullprogram.com/blog/2019/03/28/
Аноним 10/02/20 Пнд 21:37:01 159755948
> Эта штука как раз для переключения контекста
Значит это то, что мне нужно, но насколько я понял, у фиберов нет интерфейса для модификации контекста?

Что-то я запутался совсем. Мне нужно сохранить контекст во время вызова моего колбека системой, далее передать управление на мой обработчик с указателем на структуру сохраненного контекста, проанализировать контекст возможно модифицировать и восстановить его. Как это правильно реализовать?

Аноним 10/02/20 Пнд 22:30:10 159761449
>>1597559
> нет интерфейса для модификации контекста
Нет. Ну точнее, у тебя есть указатель на структуру, но она хоть и известна, но не документирована.
> Мне нужно сохранить контекст во время вызова моего колбека системой:
Ааа, ну ты все правильно делаешь тогда, тогда можно и в стек. Или можешь систему заставить делать это вместо тебя (через SEH или VEH - классика): https://pastebin.com/raw/CFWb3aXw
Аноним 11/02/20 Втр 18:53:06 159841650
image.png (500Кб, 606x801)
606x801
Подскажите, плиз, что можно почитать толкового про малварь и ее вивисекцию кроме пикрелейтед?
Аноним 11/02/20 Втр 22:42:58 159871651
Ку, реверсач. Чем могут быть опаснее дыры в прошивках, чем дыры в обычном софте? Какие подводные?
11/02/20 Втр 23:13:48 159878652
Аноним 11/02/20 Втр 23:20:21 159879553
>>1598786
То бишь, дыра в софте в пространстве пользователя == дыре в прошивке, которая под ОС крутится? Вопрос в разнице опасности и импакта от эксплуатации таких дыр.
Аноним 11/02/20 Втр 23:32:28 159880554
>>1598786
Спасибо тебе большое.
11/02/20 Втр 23:37:13 159881355
>>1598795
>То бишь, дыра в софте в пространстве пользователя == дыре в прошивке, которая под ОС крутится?
где я это сказал или хоть что-то подобное?
>Вопрос в разнице опасности и импакта от эксплуатации таких дыр.
Их тяжелее фиксить,затрагивают большее кол-во машин,и могут приводить к более сильным последствиям
Ты такой ответ хотел получить?
Аноним 11/02/20 Втр 23:50:03 159883356
>>1598416
Learning Malware Analysis, Monnapa K.A
Learning Malware Cookbook

>>1598795
Допустим есть дыра в прошивке их там и так дохера, что дальше то? Такой баг энивей удаленно не проэксплуатировать. Баги нужно искать в кривых вендорских тулзах, которые имеют доступ к прошивкам, SMM и прочему.
Аноним 12/02/20 Срд 01:14:11 159890057
>>1598833
Почему удаленно не эксплуатировать? А если это прошивка сетевой карты?
Аноним 12/02/20 Срд 01:35:27 159892058
>>1598716
> Чем могут быть опаснее дыры в прошивках, чем дыры в обычном софте?
Заставить юзера обновить прошивку (или даже просто обновить прошивку) может быть гораздо сложнее, чем обновить софт на обычном девайсе.
Аноним 12/02/20 Срд 18:25:16 159941959
Я правильно понимаю, что установка брейкпоинта в произвольном месте выполняется путём записи int 3, с последющим откатом на предыдущее значение?
Аноним 12/02/20 Срд 18:49:26 159944560
Кароч всё, прочитал.
Аноним 12/02/20 Срд 23:45:11 159977361
>>1599419
> с последющим откатом на предыдущее значение
Да. Но с проверкой, что int3 воткнут именно отладчиком. А еще есть, например, debug-регистры. В них можно просто записать адрес и ничего не патчить.
Аноним 13/02/20 Чтв 00:54:46 159986862
О, заебок, наконец-то мой говноекзешник стал валидным и может показывать меседжбокс, это прогресс. Всем спосибо, кста дебаггер https://x64dbg.com/ пиздатый, можно в шляпу добавить.
Аноним 13/02/20 Чтв 22:50:50 160094463
Кстати про int3
Сейчас экспериментирую со службами. Просто так в иде их не запустить. Нужно установить и атачить дэбагер. А чтобы она в нужном месте остановилась перед атачем приходится вставлять туда бесконечный цикл. Можно ассемблерной вставкой инт3 туда впихнуть и чтобы дэбагер сам потом с нужного места запустился? Как такая вставка будет выглядеть в msvc?
Аноним 14/02/20 Птн 04:01:30 160116664
>>1600944
> Можно ассемблерной вставкой инт3 туда впихнуть
Можно. DebugBreak(), или можешь напихать всяких int3 или ud2, но разве студия научилась в ассемблерные вставки для 64-битного кода?

> чтобы дэбагер сам потом с нужного места запустился
Существует вот такой говнокод, который в 2020 требует множества мелких правок перед использованием: https://pastebin.com/raw/9jZUPfae
Аноним 14/02/20 Птн 14:21:50 160154565
Ананасики, всем хэллоу уорлд. Тут есть аноны, которые разрабатывали прошивки (на си или крестах - не суть важно)?
Хочу вкатиться в разработку прошивок для умных девайсов и прочей имбэдщины (не спрашивайте почему я такой ебанутый, просто люблю лоу лвл, и к тому же, у меня в стране это востребовано, поэтому голодным не должен остаться).
Что посоветуете почитать? Насколько нужно быть матерым в железе? А то я из мира софта, а о железе знаю только названия нескольких интерфейсов вроже uart, spi, i2c, jtag... Я так понимаю, что разработка прошивок - это 85% времени втыкания в datasheet девайса, под который пишется прошивка, но тем не менее, хочу какой-нибудь мало-мальски структурированный источник информации по сабжу. Ну и имеются в виду прошивки, которые крутятся на борде c процессором, а не без оного (слышал, что есть разница, ибо там, где нет проца, все пишется на fpga или верилоге, могу ошибаться).
О себе вкратце - студентота, знаю Си, кресты, немного внутренности Линукса (и вообще Линукс няшка, да, я линуксоид), асм х86 и немного знаю асм ARM, имею опыт в базовом реверс-инжиниринге. Ну и сети, алгоритмы, структуры данных, офк, тоже.
После энного кол-ва опыта обязательно захочу вкатиться в безопасность прошивок (реверсинг и эксплуатация). Но без опыта в разработке оных, я полагаю, смысла сразу прыгать в инфосек сей отрасли не имеет смысла (или я ошибаюсь?), поэтому и прошу о помощи.
Дай наука здоровья всем, кто ответит.
Аноним 15/02/20 Суб 03:30:31 160230266
image.png (104Кб, 960x965)
960x965
Смотрите какая сочная вакансия в др. веб появилась. А я все боюсь на вакансию джуна ковыряльщика малвари откликнуться. Так никто и не узнал, какую они вилку предлагают?
Аноним 15/02/20 Суб 04:47:10 160232267
Аноним 17/02/20 Пнд 10:55:18 160496168
Собственно, как детектить изменения в переменной из юзермода с помощью прерываний? Я вполне могу чекать её бесконечным циклом раз в секунду, но это глупо и неинтересно.
Я бы даже не спрашивал, но тяжело самому доки найти.

Если что, делаю это из исходника на крестах, который потом компилируется и хукается через одну библиотеку. В распоряжении адрес глобалки и куча функций в неё пишут, не одна к сожалению.
Аноним 17/02/20 Пнд 16:20:47 160529969
>>1604961
Установить hardware breakpoint на write event по адресу. Загвоздка в том, что их нужно ставить на каждый поток отдельно, максимальное количество брекпоинтов - 4.
Аноним 17/02/20 Пнд 16:25:08 160530470
>>1604961
>>1605299
Ах да, хэндлить желательно через VEH выше анон скидывал код, код STATUS_SINGLE_STEP вроде как.
Аноним 17/02/20 Пнд 16:38:00 160533071
Ну что, БАЙТОСЛЕСАРИ, как вам работается на ЗАВОДЕ? С премией за отлизывание ануса в совковому деду-пердеду в месяц чистыми хоть 500$ выходит?

А мы тут вашего залетного КУЗЬМИЧА в кружок отпепепетушили, принимайте пополнениезабирайте назад.

>>1605269 →
>>1605259 →
>>1605243 →
Аноним 17/02/20 Пнд 19:07:09 160552172
js.jpg (55Кб, 429x582)
429x582
>>1605330
> измеряет результат выражения, которое даже сраный v8 осиляет выкинуть за ненадобностью
> не знает, что каждый первый компилятор в состоянии сам заменить % степень_двойки на & (степень_двойки - 1)
Аноним 17/02/20 Пнд 20:06:25 160556973
>>1604961
>>1605299
> максимальное количество брекпоинтов - 4
Существует еще вариант c PAGE_GUARD/PAGE_NOACCESS:
- ставим странице, содержащей интересующую переменную флаг PAGE_GUARD;
- ловим STATUS_GUARD_PAGE_VIOLATION (при этом ОС сама сбрасывает PAGE_GUARD), обрабатываем доступ, как нам нужно, взводим TF, продолжаем выполнение;
- ловим STATUS_SINGLE_STEP, обрабатываем значение переменной после доступа (если нужно), возвращаем PAGE_GUARD (если это была наша GUARD_PAGE, а не сама программа в них играет, и не ОС стек расширяла), чтобы продолжать и дальше ловить доступы, продолжаем выполнение.

Это гораздо медленнее, чем вариант с hardware breakpoints, потому что у нас два исключения на один доступ. Мы работаем на уровне страниц, поэтому у нас обязательно будут false positives, тысячи их. Мало того, если переменная невыровненная и пересекает границу страницы, приходится манипулировать сразу двумя страницами, что не прибавляет коду ни читаемости, ни быстродействия. Ну и для стабильной работы всего этого придется повозиться, особенно при попытке сделать это внутри процесса через VEH, а не через отладчик. Но за неимением лучшего юзермодные отладчики под виндой примерно такое и делают.
Аноним 17/02/20 Пнд 21:22:12 160571674
>>1605569
Ага. Вроде уже столько лет прошло, а механизмы все те же. Скорее бы уже к виндебагу гипервизор прикрутили с хупер-бряками, вот это годно будет.
Аноним 17/02/20 Пнд 21:31:47 160574075
>>1605569
>>1605716
Tetrane такую годноту уже реализовали. Правда стоит дохуя, 4к бачей в год.
https://www.tetrane.com/#technology
https://blog.tetrane.com/2019/11/12/pe-parser-crash.html
Там еще в бложике можно почитать разбор разных CVE с помощью данного инструментария.
Как раз выше кто-то интересовался, как уязвимости в бинарях ищут. Вот примерно так.
Аноним 17/02/20 Пнд 22:48:40 160588376
>>1605716
> Вроде уже столько лет прошло, а механизмы все те же
Да есть и новые, с инструментированием и вот этими вашими гипервизорами. Это просто я старый.
Аноним 18/02/20 Втр 15:49:57 160652077
Почему в 64битах нет аналогов пушада и попада?
Тип экономически невыгадно столько битов сразу в стэк пихать?
Аноним 20/02/20 Чтв 13:12:19 160897578
изображение.png (90Кб, 846x504)
846x504
Аноним 22/02/20 Суб 20:07:33 161173679
Вот как блять находят ТАКИЕ дырки?
https://daniel.haxx.se/blog/2016/10/14/a-single-byte-write-opened-a-root-execution-exploit/

Она была незамечена с 2003 года, блять.
Тупо скрипты+фаззинг на сильном компе в стэнд бае и после краша после Х времени разбор оного? Вручную такое найти - это же блять совсем анриал
Аноним 23/02/20 Вск 03:25:35 161222480
>>1611736
Санитайзером такой баг скорее всего можно отловить. Вот посмотри: https://www.youtube.com/watch?v=NlfZG2wTPZU
Там еще пару видосов про фаззинг и поиск багов должно быть. Собсна 4-5 лет назад можно было руками ловить, ибо дыр реально было много, но теперь уже лавочку прикрыли.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов