Вы видите копию треда, сохраненную 5 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Книги по 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)
Ещё смущают, конечно, что поля Volume Label и System Identifier идут в двух копиях друг за другом.
Это еще 18-ый год, представь какой он сейчас..
После выхода гидры наверное вообще лысеть начал.
Этот же пчелик >>1583238 потрошит XignCode3 античит так понимаю, какое-то древнее решение для таких же древних корейских ММО-дрочилен..
Что не так? Код линейный все перед глазами, не нужно лазить джва часа по ебаным хедерам и изучать архитектуру проекта.
Не понял, он что просто взял их драйвер и сразу же закинул в иду? Разве он не должен быть хоть как-то обфусцирован? Тем же VMP накрыть можно было.
А есть ли какой-нибудь набор ассемблеровских задач с автоматической проверкой аля тимус? Не обязательно на русском.
diff между двумя сишными программами, вторая из которых вычисляет разность квадратов буквально — aa - bb, а первая — по формуле сокращенного умножения (a + b)(a - b). При профилировании не удаётся обнаружить разницу в быстродействии.
Почему?
Читнув стаковерфлоуца, я естественно нихуя не понял деталей, но по всей видимости современные процессоры просто очень быстро умножают (за 1 такт вроде). Это верно? И если да, как это реализуется в двух словах?
Что за тихий ужас на втором скрине?
Гидра же. Оп - хуй засланец фбр. В следующем треде вернем идочку в шапку.
На последнем БлэкХате АНБ-шные разрабы в своем докладе явно дали понять, что открытая лицензия - это не щедрость, а способ приучить к их поделию новых реверсеров ясен перец за счет потенциальных IDA юзеров, ну и халявные коммиты от комьюнити, вместо попыток догнать иду за свои деньги.
>>593806
Анализ какой-то малвари в гидре, насколько я помню.
Вместо Эдди в шапке также должен был быть сэмпл в IDA, но Абу-поделие наебало меня с превьюхами, так что сорян.
Так-то я не фанат NSA, просто в этой области кроме софта от алчного Ильфака и подсматривающего дяди Сэма альтернатив не видно.
> приучить к их поделию новых реверсеров
У меня глаза вытекли от одного скрина. Как реверсить без глаз?
>При профилировании не удаётся обнаружить разницу в быстродействии.
А gprof что говорит?
Конечно не эксперт, но в твоем листинге вроде все как ты и описал:
- в первом случае вычли/сложили, результат перемножили;
- во втором оквадратили и вычли;
Это тактика USA чтобы обезоружить наших реверсеров
>но в твоем листинге вроде все как ты и описал
Я об этом и говорю. Во втором два умножения, но он не медленнее первого (умножение — это ведь цепочка сдвигов и прибавлений к аккумулятору?).
А в асм я полез только чтобы удостовериться, что это не компилятор выёбывается и оптимизирует. Кстати, а таки почему он не оптимизирует математику? Ладно сегодня, допустим суперскалярные процы, но ведь в восьмидесятых при работе с какой-нибудь криптографией разложение по формулам сокращенного умножения на уровне компилятора могло здорово выручить. Вероятно где-то в более высоких флагах оптимизации это есть.
Хм.. Наверняка я не правильно понял, что именно ты хочешь, но может быть эта табличка окажется полезной? Там всякие latency, throughput, потраченные uOps-ы для разных инструкций под кучу архитектур:
https://uops.info/table.html
Я мимокрокодил и не эксперт, но во-первых в современных 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 будет просто маской пропускать или не пропускать ток.
>во-первых в современных cpu несколько alu (4?), т.е. у тебя могут параллельно считаться (a x a) и (b x b) потом складываться, аналогично (a+b) (a-b) и потом перемножаться, в обоих случаях по времени будет 1 сложение и 1 умножение
Тут да.
>там какая-то магия побитового унможения в столбик, вроде бы
Я ведь так и сказал "цепочка сдвигов и прибавлений к аккумулятору".
Но всё равно что такое один раз сложить и что такое сложить n раз, где n - количество единиц в одном из множителей. И это у тебя ещё пример несложный, а что если у нас 0000ffff * 0000ffff, где будет охуиллиард carry скапливаться в одном разряде (и потому не получится всё проссуммировать без хранения промежуточных результатов)? Но так или иначе, концептуально я вижу возможность это реализовать, а раз я вижу, значит видят и инженеры.
Короче зависит от архитектуры, если это какой-нибудь спектрум или восьмибитная приставка то мы говорим бизнес.
> Во-вторых, там какая-то магия побитового унможения в столбик, вроде бы
Не совсем так. Есть алгоритмы слегка быстрее (Бут тот же), их и используют. И да, все считается в железе и параллельно, места на кристалле требуется много, поэтому в древних чипах умножения могло не быть вообще.
Ну я говорю не эксперт, с ходу не нагуглил какие алгоритмы используются. Бут может и не используется, он же для каких то доисторических мамонтов. К тому же написано, что он выполняет 2-3 цикла. А анон писал, что вроде за 1.
В шапке ни слова о прошивках
Ах да забыл уточнить. Без использования прерываний и каких-либо системных механизмов.
Пердоль свой формат, даже у майкрософт подобные вещи не документированы, что уж говорить про линь.
Чот нет желания пилить свои редакторы и дебаггер, но видимо таков путь, штож.
Поступил в универ, начали изучение ассемблера. Так интересно мне еще никогда не было. Хочу дальше копать в этом направлении, только надо понять чем можно будет заниматься по итогу за ежемесячное денежное вознаграждение.
Офк ничем, в 2020 асм нужен максимум реверсерам. Учи джава скрипт и не выебывайся.
В драйверах ты максимум используешь ассемблерные вставки, бОльшая часть кода драйверов написана либо на Си, либо на С++ (если говорим про юникс-подобные системы, то на Си).
На асме пишут только бутлоудеры и архитектурно-зависимые подчасти операционных систем. В подавляющем количестве случаев байтоебством занимаются на си и крестах а хипстеры еще и на расте, а так асм для реверсинга нужен, и то не всегда нужно читать чистый асм, так как есть декомпиляторы
Так руками же. mov [state.rax],rax и так далее. pushf/pop [state.rflags], fstsw, fnstcw, fnstenv, stmxcsr вот это все. Никакой магии не существует. Системные механизмы делают точно так же.
С другой стороны:
> Вот мне например понадобился свич контекста
У тебя есть те самые системные механизмы. Те же фиберы в винде, SetThreadContext, через исключения еще можно сохранять/восстанавливать. В сишечке setjmp/longjmp тоже за тебя уже написали. Интринсики опять же. Писать на асме не так уж и нужно хотя на асме все же приятнее - весь контроль у тебя, и делать что-то странное - проще.
Компиляторы, щито ещё.
> Так руками же
Тогда rsp сломается, мне его тоже сохранить нужно. Можно конечно его вычислить, но как то плохо попахивает такой код (пикрил). Или и так пойдет?
> У тебя есть те самые системные механизмы
Часть регистров затрут же. Да и ходить в ядро слишком накладно. Исключения хороший вариант, но тоже дорого.
> Те же фиберы в винде
Вот в эту вещь тоже не въезжаю. Это вообще что? Сколько читал в про эти волокна, так и не понял что это такое и как их использовать.
> Тогда rsp сломается, мне его тоже сохранить нужно
Как сломается? Ты его изменишь, да, но при восстановлении все вернется, как было.
> Или и так пойдет?
А зачем в стек-то? Ты же собрался переключать контекст, так и храни его отдельно.
> волокна, так и не понял что это такое и как их использовать
Эта штука как раз для переключения контекста (есть еще user-mode scheduling, но оно тяжелее). Фибер - это выделенное место под контекст и выделенный собственный стек, больше там нет нихуя. При переключении (SwitchToFiber) с фибера на фибер текущий контекст сохраняется в стейт первого фибера, из стейта второго фибера загружается новый контекст (т.к., это включает rsp, то и стек переключается). Все происходит в юзермоде, достаточно быстро. Можно делать, например, корутины: https://nullprogram.com/blog/2019/03/28/
> Эта штука как раз для переключения контекста
Значит это то, что мне нужно, но насколько я понял, у фиберов нет интерфейса для модификации контекста?
Что-то я запутался совсем. Мне нужно сохранить контекст во время вызова моего колбека системой, далее передать управление на мой обработчик с указателем на структуру сохраненного контекста, проанализировать контекст возможно модифицировать и восстановить его. Как это правильно реализовать?
> нет интерфейса для модификации контекста
Нет. Ну точнее, у тебя есть указатель на структуру, но она хоть и известна, но не документирована.
> Мне нужно сохранить контекст во время вызова моего колбека системой:
Ааа, ну ты все правильно делаешь тогда, тогда можно и в стек. Или можешь систему заставить делать это вместо тебя (через SEH или VEH - классика): https://pastebin.com/raw/CFWb3aXw
А прошивки это надо понимать не софтвейр?Нахуй ты этот вопрос вообще задал?
>>598416
https://github.com/rshipp/awesome-malware-analysis#books
+ на @R0_Crew много чего полезного кидается
То бишь, дыра в софте в пространстве пользователя == дыре в прошивке, которая под ОС крутится? Вопрос в разнице опасности и импакта от эксплуатации таких дыр.
Спасибо тебе большое.
>То бишь, дыра в софте в пространстве пользователя == дыре в прошивке, которая под ОС крутится?
где я это сказал или хоть что-то подобное?
>Вопрос в разнице опасности и импакта от эксплуатации таких дыр.
Их тяжелее фиксить,затрагивают большее кол-во машин,и могут приводить к более сильным последствиям
Ты такой ответ хотел получить?
Почему удаленно не эксплуатировать? А если это прошивка сетевой карты?
> Чем могут быть опаснее дыры в прошивках, чем дыры в обычном софте?
Заставить юзера обновить прошивку (или даже просто обновить прошивку) может быть гораздо сложнее, чем обновить софт на обычном девайсе.
> с последющим откатом на предыдущее значение
Да. Но с проверкой, что int3 воткнут именно отладчиком. А еще есть, например, debug-регистры. В них можно просто записать адрес и ничего не патчить.
Сейчас экспериментирую со службами. Просто так в иде их не запустить. Нужно установить и атачить дэбагер. А чтобы она в нужном месте остановилась перед атачем приходится вставлять туда бесконечный цикл. Можно ассемблерной вставкой инт3 туда впихнуть и чтобы дэбагер сам потом с нужного места запустился? Как такая вставка будет выглядеть в msvc?
> Можно ассемблерной вставкой инт3 туда впихнуть
Можно. DebugBreak(), или можешь напихать всяких int3 или ud2, но разве студия научилась в ассемблерные вставки для 64-битного кода?
> чтобы дэбагер сам потом с нужного места запустился
Существует вот такой говнокод, который в 2020 требует множества мелких правок перед использованием: https://pastebin.com/raw/9jZUPfae
Хочу вкатиться в разработку прошивок для умных девайсов и прочей имбэдщины (не спрашивайте почему я такой ебанутый, просто люблю лоу лвл, и к тому же, у меня в стране это востребовано, поэтому голодным не должен остаться).
Что посоветуете почитать? Насколько нужно быть матерым в железе? А то я из мира софта, а о железе знаю только названия нескольких интерфейсов вроже uart, spi, i2c, jtag... Я так понимаю, что разработка прошивок - это 85% времени втыкания в datasheet девайса, под который пишется прошивка, но тем не менее, хочу какой-нибудь мало-мальски структурированный источник информации по сабжу. Ну и имеются в виду прошивки, которые крутятся на борде c процессором, а не без оного (слышал, что есть разница, ибо там, где нет проца, все пишется на fpga или верилоге, могу ошибаться).
О себе вкратце - студентота, знаю Си, кресты, немного внутренности Линукса (и вообще Линукс няшка, да, я линуксоид), асм х86 и немного знаю асм ARM, имею опыт в базовом реверс-инжиниринге. Ну и сети, алгоритмы, структуры данных, офк, тоже.
После энного кол-ва опыта обязательно захочу вкатиться в безопасность прошивок (реверсинг и эксплуатация). Но без опыта в разработке оных, я полагаю, смысла сразу прыгать в инфосек сей отрасли не имеет смысла (или я ошибаюсь?), поэтому и прошу о помощи.
Дай наука здоровья всем, кто ответит.
/ra/
Я бы даже не спрашивал, но тяжело самому доки найти.
Если что, делаю это из исходника на крестах, который потом компилируется и хукается через одну библиотеку. В распоряжении адрес глобалки и куча функций в неё пишут, не одна к сожалению.
Установить hardware breakpoint на write event по адресу. Загвоздка в том, что их нужно ставить на каждый поток отдельно, максимальное количество брекпоинтов - 4.
А мы тут вашего залетного КУЗЬМИЧА в кружок отпепепетушили, принимайте пополнениезабирайте назад.
>>1605269 →
>>1605259 →
>>1605243 →
> измеряет результат выражения, которое даже сраный v8 осиляет выкинуть за ненадобностью
> не знает, что каждый первый компилятор в состоянии сам заменить % степень_двойки на & (степень_двойки - 1)
>>605299
> максимальное количество брекпоинтов - 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, а не через отладчик. Но за неимением лучшего юзермодные отладчики под виндой примерно такое и делают.
Ага. Вроде уже столько лет прошло, а механизмы все те же. Скорее бы уже к виндебагу гипервизор прикрутили с хупер-бряками, вот это годно будет.
>>605716
Tetrane такую годноту уже реализовали. Правда стоит дохуя, 4к бачей в год.
https://www.tetrane.com/#technology
https://blog.tetrane.com/2019/11/12/pe-parser-crash.html
Там еще в бложике можно почитать разбор разных CVE с помощью данного инструментария.
Как раз выше кто-то интересовался, как уязвимости в бинарях ищут. Вот примерно так.
> Вроде уже столько лет прошло, а механизмы все те же
Да есть и новые, с инструментированием и вот этими вашими гипервизорами. Это просто я старый.
Тип экономически невыгадно столько битов сразу в стэк пихать?
https://daniel.haxx.se/blog/2016/10/14/a-single-byte-write-opened-a-root-execution-exploit/
Она была незамечена с 2003 года, блять.
Тупо скрипты+фаззинг на сильном компе в стэнд бае и после краша после Х времени разбор оного? Вручную такое найти - это же блять совсем анриал
Санитайзером такой баг скорее всего можно отловить. Вот посмотри: https://www.youtube.com/watch?v=NlfZG2wTPZU
Там еще пару видосов про фаззинг и поиск багов должно быть. Собсна 4-5 лет назад можно было руками ловить, ибо дыр реально было много, но теперь уже лавочку прикрыли.
>>1611822 →
Цель всех этих махинаций-сборка под конкретный процессор(чтобы с avx и sse).
Да, теперь хакерам/исследователям желательно уметь писать софт под определенные нужды и под определенную прогу, чтобы искать дыры.
Но соль в том, что дыры всегда будут, лол. Я про ошибки, связанные с памятью, что происходит только на уровне системного программирования (ибо всякие ваши джавы и пиздоны иммунны к переполнениям, только если не сам интерпретатор имеет подобную ошибку). Даже если мы представим манямирок, где раст заменит си и кресты в их сферах применения, все равно много низкоуровневого кода, написанного на расте, требуют использования unsafe, что возвращает проблемы с ошибками работы с памятью. Замкнутый круг. Вдовесок, математически и логически невозможно написать софт, который будет со 100%ой вероятностью определять исполняется ли другая программа корректно или нет, это доказал Алан Тьюринг еще в 1936 году - проблема остановки, кому интересно. И это не открытый вопрос ака есть ли равенство между классами P и NP, а доказанная невозможность. Равно как невозможно доказать, что 2 + 2 = 5, потому что это математически неверно.
Так что, от исследователей теперь требуется знание писать сложные, умные и специфичные фаззеры. Решить эту проблему раз и навсегда не получится никогда, но усложнить - да. Что и произошло, собственно, за последние лет 15.
Ага, ругается на всякие pointer32 и signed char[4] pad. Ну то есть вообще ад, декомпилятор даже массив не может нормально объявить.
Ну конечно не получится, ведь ядра этих систем написаны в бородатые девяностые на сях. Вон даже этот мужик говорит, что у них там аж целых 5 млн. исходных файлов. Вообщем ошибок хватит на всех.
>>1611822 →
Легче с нуля переписать.
>McSema
Из беглого обзора на Хабре я понял,что оно запускается на де факто виртуалке. Мои требования-сборка под ту же архитектуру,но со своими параметрами компиляции(чтобы можно было включить все доступные для моего процессора инструкции).
>а ты можешь
Могу. Но это будет бессмысленный срач, если разбирать не на примерах. Завтра постараюсь отписать сюда со всеми исходниками.
>легче с нуля переписать
Ну вот представь, что я таким образом исполняемый файл игрушечки для дебиловы перекомпилировал,и у меня выигрыш в FPS/памяти/обращениях к диску около 10%. Вынесем за скобки все DRM и античиты. Такие гигантские проекты вроде игровых движков если и переписать с нуля, то к окончанию работы код будет устаревшим и никому не нужным. Так что такой себе вариант.
>Ну конечно не получится, ведь ядра этих систем написаны в бородатые девяностые на сях. Вон даже этот мужик говорит, что у них там аж целых 5 млн. исходных файлов. Вообщем ошибок хватит на всех.
Дело не только в легаси. Дело и в новом коде. Пока код пишет человек, ошибки были, есть и будут. Умудряются уже писать эксплоиты под ошибки в код на педеРАСТА, о чем ты, анон. Системное программирование, где ты дрочишь память напрямую и жонглируешь указателями - это априори дыра в безопасности, по определению. Чем дальше по сложности от хэллоуворлда уходит софт Х, тем выше шанс бага, причем ебашит оно по экспоненте. И здесь нет никакого окончательного решения, можно только усложнить взлом, на случай если находят дырку, но избежать багов полностью - нельзя. В вебе даже, блять, есть куча багов. Они другого плана, но там даже фреймворки слабовато спасают. Как находили sql injection и xss, так и находят, и будут находить, лол. При этом на таком уровне дыру задетектить куда проще, нежели в бинаре. Короче, это вечная война, вечная игра в кошки-мышки.
10% взяты наобум же, нужно проводить исследования. К тому же оптимизации могут затрагивать одновременно разные части программы вроде ввода/вывода и расчётов,складываясь.
Да и не такой уж маленький показатель,если минимальный fps поднимется с 24 до 27. Оверлокерам такой результат по нраву
> Ага, ругается на всякие pointer32 и signed char[4] pad. Ну то есть вообще ад, декомпилятор даже массив не может нормально объявить.
Декомпилятор никак не сможет понять какие оптимизации были применены. Декомпиляция выше асамблера не детерминирована.
Что можно и нужно писать на асм в 2020 году? Понятно что изучение асм дает буст к пониманию архитектуры процессора. Но как практический инструмент асм пригоден для чего то?
Бутлоудеры, часть кода прошивок, маленькая архитектурно-зависимая часть кода ОСей, шеллкоды - это если мы говорим о НАПИСАНИИ кода на языке ассемблера.
Не думай, что тебя возьмут на работку, если ты знаешь только асм, там вагон других навыков нужен. Короче, он нужен только эмбедщикам и реверсерам, и то как вспомогательный, а не основной, инструмент.
Лол, ты даже машинными кодами вряд ли сможешь рулить конвейером и порядком выполнения инструкций.
https://m.habr.com/ru/post/309796/
лол
Гипервизоры забыл. Самое ходовое сейчас.
> Не думай, что тебя возьмут на работку, если ты знаешь только асм, там вагон других навыков нужен.
В Dr. Web и прочие малварские конторы берут на стажировку, нужно только знать ассемблер.
Лет 40 назад давал, а сейчас у тебя в процессоре еще процессор, со своим микрокодом где запрограммировано как же процессор будет складывать.
Это для сложных инструкций. Никто не будет микрокодить сложение.
дело вкуса
хуйню полную платят
40-70к(70 в пике)
проще в малварщики пойти,со сраного криптолокера можно за пол дня столько сделать при условии что он пишется за вечер под бутылку пивка
просто люблю читать блоги АВ компаний и сделал такой вывод
а что майору?по какой статье можно сесть за слова о том что какие-то преступники хорошо зарабатывают?
и в каком моменте хуйня?Видел отчеты макафи,сентентала и прочих?
Много чего нашить можно просто к словам. Ты в коме был что ли? Там вон за твиты с угрозами отъезжают на 5 лет, а ты за малварь агитируешь еще так нагло. Ну и в треде реально сидят майоры, если что, я уже говорил что были инциденты.
угрозы силовикам и малварь все таки разное,а на пк у меня из нелегального максимум ида крякнутая.
и я не агитирую за малварь,я агитирую за то чтобы не проебывать жизнь учя ОСЕНБЛИР и работая потом за 40к,уж лучше тогда в программисты
про инцеденты подробнее можно?
Зачем тебе ида раз ты такой ненавистник ассемблера? И в треде зачем сидишь, а?
> про инцеденты подробнее можно?
Набутылили анона, я уже писал.
асм и реверс для души.Реверсить в удовольствие и сосать хуй на однообразной работе за 40к это разные вещи
Подробнее это не повторить сказанное,а,например,дать пруфлинк или хотя бы обьяснить че там этот анон просил сделать
> Допустим, я отреверсил в иде приложение, все красиво, все читабельно, вдруг выходит обновленная версия этого файла, как по-быстрому применить все изменения из первого файла во второй? Не заново же мне пердолить переименования итд.
Отвечаю на вопрос из прошлого треда. BinDiff - позволяет сравнивать файлы и переносить символы из одной базы в другую.
Что мешает снять флаг PAGE_NOACCESS через VirtualProtect?
Ничего не мешает. Возможно заблочить доступ через политику, но это для всего приложения, а не для конкретной части.
Оказывается Hyper-V блокирует работу прочих гипервизоров. А говорили, что они будут совместимы и вложенность обещали.
В винде PAGE_GUARD используют, чтобы стек комитить, и разработчики решили, что не хотят путаться при отладке. На самом деле это фактически одна хуйня, им просто заняться нечем. Лучше бы браузер писали.
пользуясь случаем передаю привет hardee
Ты бы лучше рассказал, где ты это взял. Я вот вижу ebfe90 (jmp $; nop) в начале, чтобы никто не мог с этого случайно загрузиться. Еще вот этим "непонятным алфавитом" (просто возрастающая последовательность байтов начиная с 0x80) просто нахуй затерли BPB, а потом еще флипнули некоторые биты. И еще по 0x00e4 явно какие-то офсеты или даже скорее адреса в памяти. Выглядит как образ фирмвари какой-то, которому зачем-то придали сходство с FAT. И подозреваю, что это сделано специально для того, чтобы ты спросил попытался смонтировать, не смог и отъебался от файла.
https://redodepts.livejournal.com/
Шалом! Многие читатели спрашивают, неужели можно кинуть элиту андеграунда и спокойно тратить шекель. Наш ответ - нихуя подобного. Наши люди доложили о поимке известного кидалы ВОЛОДИЯ (он же володуа, володя, вовка, вова_пассив_1992). Моар инфы по гиперлинку http://mvd.ru/news/show_92517/
> Выглядит как образ фирмвари какой-то, которому зачем-то придали сходство с FAT. И подозреваю, что это сделано специально для того, чтобы ты спросил попытался смонтировать, не смог и отъебался от файла.
Это и есть кусок файла фирмвари для одной узкоспециализированной железки за поллимона. Есть большое желание найти какой-нибудь дебажный интерфейс, консоль, UART, ещё что-то. В дампе есть строки, характерные для отладочного вывода, так что он скорее всего есть. Знаю, что железка работает на процессоре Blackfin, больше пока ничего непонятно. Опыта в таком просто нет совсем.
>Это и есть кусок файла фирмвари для одной узкоспециализированной железки за поллимона
Прошивка рентгеновского DOSM0T?рового оборудования?
> UART
Так это... фоткаешь плату, идентифицируешь чипы, какие сможешь, тыкаешься осциллографом, страдаешь. Что тебе прошивка-то даст? Номер ноги там не написан.
> Что тебе прошивка-то даст?
Да я понимаю, что в этом вопросе мало что.
А так с год назад, копаясь в прошивке другой, чуть менее дорогой железки, я обнаружил мастер-пароль. Да, во всей линейке устройств того производителя была отдельная пара логин/пароль, нигде не упомянутая и неотключаемая, и разумеется, дающая админские права. С учётом того, что многие девайсы торчали вебмордой в интернет, можно было наворотить дел. И, к сожалению, мне не удалось поиметь с этого ничего, дело было не в айтишной сфере, а производитель начал вежливо мне угрожать. Впрочем, мне очень понравился сам факт того, что я нашёл реальную дыру, через которую можно было заовнить тысячи устройств.
С работы, очевидно. У меня там много всякого. К сожалению, деталей дать не могу, даже по маркам. Это оборудование закупает 2.5 компании на всю страну, диванон будет мгновенный.
>Это оборудование закупает 2.5 компании на всю страну, диванон будет мгновенный.
Вот ты и спалился, Иван.
Привет,ами.Как поживаешь?
Как грамотно вкатиться в RE игр, античитов? Бля, чисто мысленно балдею с такой хуйни, что можно взламывать приложухи, которые другие ребята криптят.
Есть база асм-а, опыт написания читов для кс-гей на плюсах. Но что касается реверс - просто нереально приступитЬся, хуй знает за что хвататься, в том плане что видишь дамп от Иды, видишь декомпилированные функции и хуй знает че делать, т. К. нихуя не понятно.
В закрепе есть книжки, только вот чекаю их и или неинтересно (=просто) или совсем пиздец конечная(=сложно).
Оно нужно для дебаггеров или это охуенно важно для дальнейших этапов компиляции?
Античит нагнёт тебя, а ты так и не сможешь спрятать от него свой говнокод.
Рано тебе игры реверсить, книга в шапке обязательна к пониманию от и до, читай, пиши код, изучай выхлопы популярных компилей, пользуйся отладчиком.
Правда ли, что реверсом можно убить молодость?
Нет, с современными тулзами и определенными навыками реверс не занимает много времени.
Вот этот ни разу кресты с шаблонами и десятью уровнями наследования не реверсил.
Это ты видимо не реверсил, шаблоны в понятный ассемблерный листинг разворачиваются, а виртуальные таблицы содержат метаданные. Высокоуровневые абстракции волшебным образом исчезают во время компиляции бинаря.
>виртуальные таблицы содержат метаданные
Это ты про RTTI? Так это не всегда есть и в большинстве случаев отрубается.
Ну вот и получается, что в итоге на виртуальную таблицу 1 xref на весь дамп, и то в конструкторе каком-нибудь и все. В итоге все функции вызываются в виде call qword ptr [rax + 0x228]. Никаких ссылок, нихуя нет и что делать то бля.
> шаблоны в понятный ассемблерный листинг разворачиваются
Да? Точно не в два десятка разных листингов?
> Это ты видимо не реверсил
Я реверсил. Выходит несколько месяцев на средненький бинарь, сколько ты его не автоматизируй. Можно ли реверсом убить молодость? Да на него жизнь убить можно!
>>631888
> RTTI? Так это не всегда есть
Да, лежат там какие-нибудь Exception и YobaException, и больше нихуя.
Еще вопрос: не является ли для вас реверс бегством? Ведь если человек чем-то занимается, то это или его хобби, или способ заработка. Для чего вам такое хобби, если можно писать свой продукт?
хз, я и пишу код, и реверсю(шу?), одно другому не мешает, а даже взаимодополняет.
Значит ты не знаешь сам чего ищешь в бинаре. С отладчиком абсолютно любой энтрипоинт раскручивается за вечер-два под пивко.
Скорее всего, анон о реверсинге судит по всяким там CTF. Или патчит защиту уровня if (not_registered) exit(1).
>>632410
> Значит ты не знаешь сам чего ищешь в бинаре
Ты не поверишь, я там код ищу. Много кода, который нужно восстановить. Например, парсер какой-нибудь проприетарной БД, у которой файлы состоят из битовых потоков чуть более, чем полностью, а бинарь примерно настолько же состоит из множественного наследования. И
> за вечер-два под пивко
я даже свеого кода столько не напишу, а ведь чужой еще и реверсить нужно.
Ай блять не пизди давай про эту десятиэтажную бизнес логику. Все по итогу сводится к подобному:
> if (not_registered) exit(1).
Вообщем не можешь ты в динамический анализ, видимо сидишь строго в дизасме и ковыряшь все подряд.
Сижу ковыряю бинарь сейчас, есть небольшой misunderstanding:
mov esi, 1
mov edi, 0x64
call sym.imp.calloc
mov edx, rax
mov rax, qword [ptr]
.......
Собсна, что имеем - вызываем calloc, который должен вернуть указатель на массив размером 64 байта (каждая ячейка = 1 байт). По конвенции, в х84-64 значение вызванной функции помещается в регистр rax. Отлично, здесь мы видим, то rdx копирует указатель на этот массив, но дальше нет никакой переменной, которая может хранить этот адрес! То бишь, он есть только в регистре rdx & rax, дальше там есть инструкции, где сравнивают их значения, а потом идет прыжок в какую-то пизду и все. Такое ощущение, что в сорце (у меня его нет) там каким-то раком вызвали calloc, не присваивая возвращаемый указатель ни к какому указателю, который хранил бы это значение. Втф?
быстрофикс
Забейте, я кусок обоссаного и никчемного дауна, там была матрица (указатель на указатель) и возвращаемый каллоком указатель хранился в первой ячейке массива указателей.
>Windows Kernel Programming
На либгене - http://libgen.is/book/index.php?md5=FC1B8E9F80B656B33B75371C5CADF6A9
Вроде даже местный антон и залил.
Это можно как-то использовать?
Эта функция не соответствует дефолтным THISCALL, STDCALL, CDECL. Она очень маленькая. Знает кто-нибудь что с ней не так?
Не без остатка. 7 на 16 в k-ой ты на f не поделишь никак
На пике три функции. __stdcall это, два параметра, возвращает первый. Никаких отклонений не вижу.
>>635237
Хотя... ret 4 то я и не заметил. Что-то странное, напоминает возврат структуры через скрытый указатель, но даже в этом случае было бы ret 8. Первый аргумент - это какой-то this? Что за бинарник, компилятор?
> очень хочется с ней взаимодействовать
Ты всегда можешь сделать динамические или статические трамплины (адаптеры) и ни о чем не думать.
>>635296
Это бинарник CS:GO сервера, в частности главная динамическая библиотека, где и происходят все главные вычисления. Пытался вызывать ее самостоятельно, делать хуки (Pre, Post), но итог краш процесса. Вряд ли делая PreHook ret имеет значение, если только Post, так что дело скорее всего в аргументах.
Эта функция должна принимать указатель на игрока (this) то есть она в классе определена и возвращать так же указатель на структуру одного вектора.
Такая проблема только на линуксе, на винде было все хорошо, когда тестировал, но надо сервак на линукс ставить и такая проблема возникла
Загрузить в регистр R16 число 15, сложить его с 25 и результат поместить на вершину стека. Поместить по адресу 020h внутренней памяти данных младшую десятичную цифру результата, а по адресу 021h – старшую.
Код: https://pastecode.xyz/view/40f84dbc
Оно почему-то зацикливает хз помогите а то пизда
Лол. Короче, это стандартный thiscall (он же cdecl) линуксовый. В линуксе, в отличие от винды, между ними разницы нет. Второй аргумент на скрине в IDA - это this, для него (как и для всех обычных аргументов) вызывающая функция чистит стек. Он был бы первым, но в функции есть и необычные аргументы. Чтобы вернуть структуру (не указатель, а саму структуру по значению), вызывающая функция передает скрытый указатель на буфер первым аргументом, а вызываемая функция пишет туда результат и возвращает этот же указатель в eax еще. И вот его-то в линуксе чистит ret 4 (в винде такой хуйни нет). Поэтому ты просто пишешь как на твоем пике, собираешь линуксовым гцц, и оно само заработает как надо, никаких соглашений указывать не нужно.
Вот исходник: https://pastebin.com/raw/gj2Lw8Bn (собирать в линуксе g++ file.cpp -s -m32). Давай ты, как самый умный, соберешь, загрузишь a.out, нажмешь F5 и покажешь нам скриншот, как оно все правильно там угадало. Вот я тебе даже файл собрал: https://files.catbox.moe/aczyg0.out
Возможно на асме написан. Возможно частично
>Декомпиль гидры выдает несусветную вырвиглазную дрисню от такого пердимонокля
Хохлохакер тебя похакел
И я правильно понимаю, что ось определяет только стэкпоинтеры и rip, а дальше - дело за бинарником?
>что происходит между точкой входа и мэйном
Инициализация CRT, переменных окружения и т.д.
>почему эти две вещи - не одно и тоже
Компилятор вставляет свой main в котором производит необходимую инициализацию и передает управление на твой
Мне, быдлостуденту непрограммисту, строчящему высеры своему научруку на Си, захотелось приобщиться к языку сверхбогов, великому ASM писать планирую под amd64. Но нагуглить годных гайдов чтобы с разбором плюсов и минусов разных диалектов, ide, аппаратных архитектур и в то же время "сделайте А, установите В, напишите С..." как-то не получилось в глаза ебусь и лень, да...
Собственно прошу вас, о великие Гуру, наставить меня презренного на путь истинный, путь освобождения от богохульного ООП и высокоуровнего греха с меня нихуя, сами знаете
Introduction to 64 Bit Intel Assembly Language Programming for Linux Ray Seyfarth
Я по этой книжке ассемблер изучал, раньше тоже тока выскоуровневые языки знал и ООП. По идее там все с нуля, но мне в универе про микропроцессоры рассказывали, так что хз возможно надо что-то знать чтоб её читать. Там первая проблема с которой встретишься, это то что код с абсолютными адресами(то есть например адрес который формируется отступом от data секции) не компилится/линкуется в gcc. Надо будет погуглить почитать stack overflow x86 раздел. По сути можно будет указать либо параметр -fPIE в gcc или что-то подобное или прочитать про position independent код и сразу его писать. Но это чтобы со стандартной библиотекой си слинковаться. Можно по идее писать код с абсолютными адресами и линковаться не через gcc а с помощью ld, там экзешник сгенерит с любым кодом, но придется системные вызовы юзать вместо функций си.
Снимаю пакер с ELF бинаря (уверен на 99.999999%, что я нашел ОЕР) путем приземления на распакованный код. Делаю дамп через gdb, но он, сцука, не запускается потом в отладчике и при исполнении сегфолтится. Нужно ручками править таблицу символов или есть более универсальные дамперы, которые сделают это за меня? Повторяю, речь идет о Линуксе и elf бинарях, соответственно.
>Windows Internals, Part 2, 7th Edition
>Published 7/6/2020
Что за хурма, на май же вроде переносили?
Винда быстро меняется, каждые пол года мажор апдейты, не успевают видимо реверсить.
push bp
mov bp, sp
Это захуй вообще нужно? Мы так готовимся к вызову call?
Я все время хуею с этого НУЛЯ. Читаю Брюса Эккеля по си++, а там хуяк и блять кое-что на ассемблере показывается. Читаю книгу по ассемблеру там блять все на си++(при том что я программист си++(не мамкин)). Такое вот "С НУЛЯ"
Ну ебанарот
Ну есть же нормальный изкаробочный https://flatassembler.net/ и нормальный последовательный мануал к нему https://flatassembler.net/docs.php?article=manual
SSE инструкции, встроенные функции.
Насчет шеллкодинга на юникс-подобных осях - какой синтаксис асма лучше юзать для написания шеллкода? Или похуямба? Заранее спасибо.
естественно машинные коды.
nasm
Тут все просто: используешь vim - пиши на gas с AT&T, чтобы окружающие сразу могли все про тебя понять. Если проблески разума есть, то gas умеет в интел. Для остальных придумали nasm/fasm. Последний в разы удобнее, когда тебе нужно ебать не только инструкции, но и байтики.
https://torus.company/9f0911c0a4bb7d20eb8bab286a2c109fa85c44c6/
Господин Юричев перед новым годом затеял переезд и теперь раздает книгу с нового домена.
Плюс, также он организует обучение в стиле FOSS, вдруг кто-то заинтересован:
https://yurichev.com/news/20200405_teaching/
нахуй сагаешь
https://x64dbg.com/
>В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).
скажите, а как эти знания у нас окупаются? знать-то надо дохрена...
niqaque
тут просто сидят аутисты которым это кайф
ну ок,может окупится если ты малварщик/0д рисерчер
на этом все.Если процесс удовольствия не доставляет,то просто забей
Окупаются, в долгосрочной перспективе (~5 лет). Если хочешь быстрого результата, то иди в js тред.
Ну так средний жс-ер за эти 5 лет успеет стать синьйором-помидором, завести трактор, поработать в гуглах-хуеглах и пойти пилить свой стартуп забив на программирование.
Ты серьёзно считаешь, что среднюю программерскую зп (пока ты не станешь совсем звездой РЕ) можно назвать окупаемостью вложения в виде 5+ лет?
>Ну так средний жс-ер за эти 5 лет успеет стать синьйором-помидором, завести трактор, поработать в гуглах-хуеглах
А средний чиновник за это же время успеет залезть в карман к народу, средний ФСБшник или судья - набрать взяток. И что?
>забив на программирование.
Если твоя мечта - забить на программирование, зачем ты лезешь в этот тред, где люди пруцца от тематики?
>Ты серьёзно считаешь, что среднюю программерскую зп
Ты обосрался, придумывая образ собеседника и опровергая его выдуманные тобой мотивы.
>(пока ты не станешь совсем звездой РЕ
Детектирую закомплексованного недоноска, которому нарциссическое общество внушило, что он должен чего-то там добиваться, стать звездой, а не просто получать кайф от процесса.
>можно назвать окупаемостью вложения в виде 5+ лет
Мамкин экономист, с такими мыслями ты ошибся профессией. Задумайся о карьере чиновника
>А средний чиновник за это же время успеет залезть в карман к народу, средний ФСБшник или судья - набрать взяток. И что?
Нормально съехал с темы.
>Если твоя мечта - забить на программирование, зачем ты лезешь в этот тред, где люди пруцца от тематики?
17-ти летний мамкин максималист, ты ещё многого не знаешь о жизни. Например того, что за n лет работы (не ковыряния в залупе по вечерам, а работы по 8 часов в день), ты заебёшься и перегоришь, не важно, насколько тебе сейчас по приколу дрочить значения регистров в дебаггере.
>Детектирую закомплексованного недоноска, которому нарциссическое общество внушило, что он должен чего-то там добиваться, стать звездой, а не просто получать кайф от процесса.
Детектирую ребёнка, с которым родители ещё не успели поступить вот так >>654954 и он живёт в иллюзиях о ебле байтов. А ведь скоро захочеться понюхать живой бабской письки и ещё через пару лет наступит экзистенциальный кризис, как и у всех мамкиных максималистов.
>Мамкин экономист, с такими мыслями ты ошибся профессией. Задумайся о карьере чиновника
Для карьеры чиновника нужно правильное происхождение (лол), сейчас же не 90-е, возможности закончились.
>А ведь скоро захочеться понюхать живой бабской письки и ещё через пару лет наступит экзистенциальный кризис, как и у всех мамкиных максималистов
А, понятно, ты омежный девственник, которому не дают. Надеешься привлечь бабу деньгами. Зря надрываешь свою розовую попку, потому что ебля и любовь бесплатны для нормальных людей. Переплачивают только омежные лохи типа тебя. Если природа не наделила тебя умом, то хотя бы отрасти гордость. Ну родился ты с потребностями и амбициями льва в теле червя. Другого тела у тебя уже не будет. Прими это и живи втакой какой есть, переплачивающий омежка.
>А для чего вообще зарабатывать много денег?
Для того чтобы нормально жить, лол. Нет такой мерки много/мало, есть такая мерка: тебе на все хотелки хватает и ты счастлив, либо ты ебаный бомж, которого постоянно пилит изнутри необходимость оплаты хаты/отсутствия денег даже на жратву итд.
>К тому же в современном обществе чем больше зарабатываешь, тем больше долгов
Общество пидорах в СНГ — не современное. У нас деньги появились пару десятилетий назад, и все как ебаные макаки не понимают зачем они нужны.
>В советское время было проще.
Одно дело, одна страна, одни штаны.
Ого как у тебя горит, нищеброд. Аж на стену лезешь от нужны, ватная пидораха. Вот только я благодаря интересу к компам работаю джавистов и занимаюсь реверсингом в качестве хобби и собираюсь поступать в платную математическую аспирантуру для удовлетворения интереса и амбиций, а ты находишься на уровне скота, который даже JS осилить не может.
Вышка байтоебства - это разработка эксплоитов. С их слов, 10-40 часов в месяц вполне хватает, чтобы зашибать под лям баксов в год.
Убогий, у тебя от сидения на двачах совсем мозги поплыли и критика к себе пропала? Ты выше написал, что даже JS осилить не можешь и спрашиваешь о том, сможешь ли заработать в реверсе. И теперь ты, убожество, не осилившее язык для даунов, пытаешься толсто тралеть, наивно полагая, что аноны забыли содержание твоих предыдущих постов.
мне программирование на жсе не доставляет удовольствия,мне неинтересно это и все,что мне делать?
Мне неинтересно сосать хуи начальнику и РАБотать.
А потом все эти шутки про пятницу,кредитный фокус,псевдоумные разговоры на хабрах.Друг,зачем оно мне?Мне нравится жить и получать удовольствие от процесса,удовольствия от жизни.А выбирать осознанно путь самой обычной РАБоты,только в профиль...Ну,такое как по мне
Я может что-то не понимаю,в силу возраста,но мне на жизнь пока хватает.Сижу крякую софт,разбираю малварь,помогаю людям и мне норм.Я правда не понимаю зачем тратить 10 часов на неинтересную РАБоту за зп пусть даже 300-400к.На что их тратить и когда?
мимо >>654976 >17-ти летний мамкин максималист
юпд,я не против если тебе нравится js и делать сайтики.каждому свое,меня просто это не заводит совсем
мне сложно заниматься чем-то долго и тем более ближайшие лет 5-10 по 8 часов в день,5 дней в неделю.
пизденку не нюхал,да и не очень тянет,если ты хочешь спросить про это
экзистенциальный "кризис" уже есть,но вообщем-то как я слышал выход из него это занятие любимым делом.
Ведь все эти штуки со среднем и эксзистенциальным кризисом выходят когда человек в 30 лет осознает что его жена,успешная карьера с зп 300к,дети и форд фокус ничего не значат и ничего не стоят.А жизнь то уже на половину прожита и вспять время не вернуть
если я где-то не прав,пожалуйста не тролль,я все таки путь жизни себе выбираю сейчас
Во-первых, работай на чём хочешь. Тут поинт не в том, что всем надо идти в жс-макакены, а в том, что есть реальность.
Во-вторых, всем похуй что тебе интересно. Вопрос в том, что мамкин борщик со временем кончается, и нужно эту мамку уже самому содержать и самому за всё платить, это и есть реальность из первого пункта. Нету, блядь, понятия "гнаться за деньгами" итд, есть понятие "улучшать своё существование". Ты либо живёшь в залупинске с быдланами в обоссаном хруще, либо в ламповом европейском городке. Либо ешь гречку с хуйцами, либо нормальные продукты и ходишь по заведениям.
В-третьих, когда встанет вопрос о самостоятельности, какой у тебя шанс не пойти работать на завод/продаваном — будучи реверс-инженегром и программистом? С такой спецификой можно разве что мк и дрова писать, но первое днище на заводе, а во второе хуй вкатишься на удалёнку а в снг как-то не особо с этим
>экзистенциальный "кризис"
Есть 2 способа пройти эту хуйню:
а) быть тупым бумером, лол.
б) повзрослеть ментально ещё на пару лет.
Хз о чём разговор, ты либо по-пацански продолжаешь страдать хуйнёй и через хуй знает сколько лет становишься апостолом как мыщъх чтобы потом немножно пожить нормально, либо находишь себе какую нибудь байтойобскую область коденга которая хоть как-то востребована, выбираешься быстро из говна и живёшь нормально.
Да ты заебал, вечно срешь итт, что реверс не кормит. А я вот буквально недавно свой первый CVE получил, бложики писать начал, в твиттере активничаю, в дискорде с шляпами общаюсь, все как сейчас в моде. Рукой подать, как меня самого хантить начнут на сочные вакансии. И самое главное - мне в кайф.
>В-третьих, когда встанет вопрос о самостоятельности, какой у тебя шанс не пойти работать на завод/продаваном — будучи реверс-инженегром и программистом?
Я кроме асма еще C++ немного знаю и могу подкачать скиллы и со своим коммерческим опытом могу пойти в какую-нибудь ит контору. Не суди всех по себе, нублол без технического бэкграунда.
Как находить интересные функции для реверсинга в средних и крупных бинарях, тем более если они stripped? Есть возможность написать какой-то сканер для бинаря, который выплюнет адреса всех процедур, где идет вызов функций, которые читают из stdin или читают в общем что-либо (файл с диска и т.п.)? Цель - составить некую карту функций, куда можно добраться "извне" через ввод данных через какой-либо интерфейс (stdin, подгрузка файлов с диска, парсинг пакетов, если речь о проге с сетевым потенциалом, и т.п.)
бамп!
Отличный ведь билд для домашнего реверса. Ida Home + Ghidra Decompiler или крякнутный HexRays. Что думаете?
Если этот высер будет без лучей, то нахуй не нужен.
На просторах СНГ почти нет работы, только в каком-нибудь доктор вебе или лабе касперского, но туда попасть еще нужно постараться.
Гораздо легче уебать в СШП/Германию/Израиль и быть безопасником там, им там и платят нормально, в отличие от околорашкинских стран, где обоссаная вебмакака получает больше, чем реверсер или разработчик эксплойтов, лал
То есть в Германии с этим всё нормально? Прекрасно.
> Гораздо легче уебать в СШП/Германию/Израиль
Да ахуеть, вообще легко, прям щас полетел на пмж.
Нормально все с работой, откройте hh.ru блять.
>Да ахуеть, вообще легко, прям щас полетел на пмж.
На мага стратуру в Германию легко свалить.
Там ты и с багажом знаний больше в 10 раз, чем у любой веб-макаки будешь получать столько же, лал.
Рыночек есть рыночек. А ещё у вебмакаки карьерный рост пройдёт в 10 раз быстрее чем у тебя, и так в любой стране.
Не зря же тут ананасы за совочек-то топят!
>Там ты и с багажом знаний больше в 10 раз, чем у любой веб-макаки будешь получать столько же, лал.
В плане, среднюю рынку погроммиста по рынку у себя в стране, а не как на родине.
Друг живет в США, у них реверсеры зарабатывают больше вебмакак в полтора раза, причем на старте. Я уже не говорю про разработку эксплоитов и как на этом можно не хило поднять, не угодив при этом на сгуху. И при всем при этом не заниматься поносной дриснёй для даунов типа макакавеба.
Ахуеть, только туда ещё надо съе бать.
>Окупаются, в долгосрочной перспективе (~5 лет). Если хочешь быстрого результата, то иди в js тред.
В долгосрочной перспективе РФ придётся создавать свои компиляторы, операционные системы, драйвера и прочую низкоуровщину. Вот тогда-то резко возрастёт спрос на знание ассемблера и реверса. А пока эти знания надо как-то не утратить, в преподы податься, накрайняк. Кстати, существуют ли сейчас на ютубе образовательные каналы по этой теме, которые приносят доход?
У тебя фотокарточка с сралиным не отвалилась случаем?
>Кстати, существуют ли сейчас на ютубе образовательные каналы по этой теме, которые приносят доход?
Доход на ютубе приносят только большие каналы (100к+) с платежеспособной аудиторией. Ни первого ни второго пункта с такой тематикой достичь нельзя, лол.
Так и у нас тоже самое, лол. Баг хантингом вообще шик в рашке заниматься. Несколько багов нашел и можно год как барин жить. Долбаебов-неосиляторов как всегда в тред набежало.
Ты про те случаи, когда корпорации выплачивают вознаграждение любому нашедшему серьёзный баг в их софте?
>Несколько багов нашел и можно год как барин жить.
Боюсь, что такому "барину" даже ипотечный кредит не дадут.
Такому барину не нужны подачки банкиров, он финансово независим и способен обеспечить себя жильем.
Вендор-чек?
Если у тебя есть программа, зачем ты у нас спрашиваешь, почему ты ее не отреверсил? Внутри там либо cpuid какой-нибудь, либо что-то специфичное для интела/амд (типа 3DNow!).
> сравнения фпс
Пиздец ты.
Как обычно анализируют как прога получает вводные данные извне? Вручную или есть тузлы/техники для этого? Я бы не прочь даже заимплементить такое сам, но яхз как в огромных бинарях определяют все возможные инпуты извне, особенно если из бинаря повырывали все символы. Не будешь же ты вручную искать среди нескольких сотен/тысяч функций те, которые обрабатывают вводные данные. А если таких дохуя? Это ж пиздец.
Я знаю что так готовят почву для фаззинга, но как именно это делают - хз. Анон, помоги плиз!
Если мы про реверсинг, а не про фаззинг, то можно просто поставить брейкпоинт на чтение данных и поймать обращения.
А как ты будешь знать куда ставить брейкпоинт, если бинарь огромный и без символов с несколькими тысячами функций? Получается, только вручную реверсить, чтобы понять какая функция обрабатывает инпут и куда имеено ставить брейкпоинт, чтобы понять оно это или нет? Наверняка же есть хотя бы полуавтоматические методы обнаружения таких функций.
magnet:?xt=urn:btih:f91feb6d2ea93f1c3c03b6be52051c2df72da1b7&dn=CERTCOLLECTION+-+BASELINE+-+SANS+%26+Offensive-Security&tr=udp%3A//tracker.coppersurfer.tk%3A6969&tr=udp%3A//tracker.zer0day.to%3A1337&tr=udp%3A//public.popcorn-tracker.org%3A6969&tr=udp%3A//tracker.leechers-paradise.org%3A6969&tr=udp%3A//explodie.org%3A6969
Инпут обрабатывает система, ставишь на обработчики брекпоинты и по стеку вызовов смотришь вызывающего.
на счет моего варианта программы, я ее написал, но она не заработала и я психанул и стер ее.
Если кто-то захочет помочь, то я восстановлю свою версию и помочь исправить мою
Также есть таблица команд микропроцессора, дл которого нужна собственно программ
Обработчики чего именно? Ты можешь пожалуйста внятно написать? Обработчиков есть дохуя и больше, какие именно ты имеешь в виду? Скрин даже пиздани, пожалуйста, если совсем щедрый
На системные. Иди гугли, как твоя система обрабатывает инпут, никаких тысяч функций там нет, с десяток максимум.
Если код чтения во внешней либе типа read или recv, то его вызовы можно затрейсить из фриды. Там ясно будет куда ставить брикпоинты
> Насколько все это сложно?
Что касается ресурсов, почитай DGTEFF из шапки. Осилишь - сможешь сам решить, сложно ли это.
> можно обойтись сишкой
Для реверсинга можно HexRays, и если не лениться проставлять типы, тогда сишный листинг в большинстве случаев будет вполне читаеым. Но ассемблер понадобится, чтобы, например, запатчить поддержку шрифтов, тот же декодер Shift-JIS заменить на 1251 или UTF-8.
Алсо, писать много анпакеров на сишке ты заебешься, бери питон сразу.
https://www.youtube.com/playlist?list=PLYvhPWR_XYJnX_sscErznYqwBrIhuS08O
Кресты код компилят по умному - условиях суют не простые прыжки, а вызов диспачера с какими-то данными, который и вызывает нужную функцию. Если исходить из этого листинга.
Пикрил - условие if в крестах (я знаю как оно выглядело, потому что часть сорцов открыта, они не сразу закрылись). Вызывается соответственно c++ scope этого условия.
Вопрос: как понять, какой адрес вычисляется и зовётся из sub_1805A6810 - без использования дебаггера?
И таких случаев много, не любой "вызов" понятен сам по себе. Особенно при наличии тимплейтов, классов и прочих высокоуровневых свистелок.
> вызов диспачера
Не вижу тут вызова диспетчера, а вот обычный вызов метода класса вижу. И это даже не виртуальный метод нихуя. И даже ни одного indirect вызова внутри нету. Как вы эту хуйню читаете? Нихуя не понятно, какие-то квадратики, стрелочки разноцветные... Говна кусок, а не листинг!
> тимплейтов
Нихуя не меняется, та же сишка, просто кода больше, и аллокатор на аллокаторе аллокатором погоняет.
> классов
Не ленись структуры создавать и t в листинге тыкать, тогда оно внезапно становится читаемым.
>Не вижу тут вызова диспетчера, а вот обычный вызов метода класса вижу. И это даже не виртуальный метод нихуя. И даже ни одного indirect вызова внутри нету.
Куча условий в коде компилится в асм, который для всех условий зовёт общий метод, который определяет, что дальше исполнять. Схожий паттерн. Алсо я теперь думаю что за это отвечает этот вызов с new int.
Короче думаю не парится и попробовать дебажить эту dll вместе с её программой. Не хочется всё это вместе запускать, мне ж только код подсмотреть надо.
We will contact the winner by the end of May and will send him/her a free copy of IDA Home.
Как иконка приложения, Ада действительно всратая, может Ильфак уже наймет себе десигнера.
> Как иконка приложения, Ада действительно всратая
Зато узнаваемая. Алсо, древняя черно-белая была лучше, и нахуй они ее раскрасили - совершенно непонятно.
Как установить firmware-mod-kit на кали линукс?
Команда sudo apt-get install firmware-mod-kit не находит его в репе
Попробуй search сначала по ключевым словам.
Правда я не совсем умею этим пользоваться.
Нет, ты
Короче я забил на это хуй, у меня пока возникла другая проблема: возникает эксепшон при доступе к памяти, и ловлю его почему-то не я.
Значит у игры стоит VEH обработчик свой который первее ловит.
Советую купить отладочную плату на каком-нибудь 32 битном МК и начать еще изучать. Лучше брать отладочную плату с той, периферией, которая интересна(ethernet, CAN, звук, экран и прочее). Куча вопросов отпадет по ходу, а до новых ты еще не дошел.
Не, одно дело - распарить. Другое - пересчитать и передвинуть все секции.
Чёт графа по функциям как в обычной иде не прилеплено, не коментит доставание из памяти всяких переменных, rsp+160h = 0 а на самом деле нихуя не равно если глазами посмотреть.
В обычной иде модули хзкак подгрузить до запуска, но разумеется это я криворукий.
Хочется использовать данную библиотеку
Вопросы:
1. Каков прогноз: ее вообще реально расковырять (учитывая наличие работающего приложения)?
2. Если да, то как, что почитать?
В принципе задача выглядит как довольно типовая, но какого-то готового решения не нашел. Есть Detours, есть IDA, но как-то все ультра-сложно и вообще непонятно, возможно ли в принципе.
> Каков прогноз: ее вообще реально расковырять
Да.
> сорсов, документации и прочего - не сохранилось
web.archive.org
> Если да, то как
Так ведь:
> есть IDA
Мог бы либу выложить хотя бы.
>web.archive.org
Естественно пробовал, но софт писался в те времена, когда интернет еще только зарождался. Либо никаких следов не сохранилось, либо документация никогда не выкладывалась, что скорее всего.
>Так ведь:
> есть IDA
Ну и что с ней делать? Может есть кейс стади/туториал или типа того, где решается аналогичная задача?
> Ну и что с ней делать?
Загружаешь, нажимаешь Ctrl+E, изучаешь экспортированные функции. Можешь на них Tab потыкать и смотреть псевдокод от HexRays. Но в любом случае, надо хоть немного асма и знаний.
Викс мертв,осталась просто комерческая малвара
если хочешь делать что-то свое,то можешь подписаться на пару десятков дебилов вроде кремеза в твиттере и реверсить малварь которую они постят
лучше подскажите как в пвн вкатится
Учи Си, кресты, ассемблер, ОСь, на который хочешь пвнить, причем углубленно. Я тебя не знаю, соответственно яхз какой у тебя бэкграунд, но если ты не особо опытен в программировании как таковом - сначала начни программировать, причем плотно. Для пвна идеальный бэкграунд - ламповое лоу-лвл системное программирование (на уровне API операционной системы или же вообще кернел-спейс - драйвера, например). Потом учи примитивы уязвимостей, современные способы эксплуатации оных, ищи CTFы и постоянно практикуйся. Если не знаешь англ хотя бы на уровне upper intermediate - даже не суйся. Да и все кошерные материалы по этой теме в интернете только на английском. Если есть англ + база лоулвл программирования - ты в шоколаде, сразу ныряй в эксплуатацию и CTFы. Без определенной базы в пвне ловить нечего.
Понял,спасибо
Англ я знаю так,средне,читать могу,но говорить или фильмы смотреть нет
из знаний наверное си только,какая-то база асм под x86
Буду дальше учить.За сколько времени можно вкатиться чтобы писать врайтапы такого уровня https://xss.is/threads/37092/ ?
Если фильмы смотреть не можешь - это достаточно тревожный звоночек, подтяни все же англ.
Твоей базы недостаточно, вкатись плотно в кресты и OS internals помимо всего прочего. И подтяни то, что ты сказал (асм и си), а то ответ был какой-то смазанный, такое чувство, что ты не уверен, что шаришь в этом.
По ссылке - очень базовые вещи, связанные с пвн, это весьма базовый уровень. В настоящих кейсах, особенно если пытаешься атаковать более или менее серьезную программу, нужно искать несколько уязвимостей и составлять цепочку эксплоитов, чтобы добиться произвольного исполнения кода. Как пример - на последнем pwn2own нужно было построить цепочку из ДЕВЯТИ разных эксплоитов, чтобы удаленно исполнить код через дыры в safari, минуя сэндбокс и митигации. Часто приходится подключать поиск дыр в ядре. Но до такого уровня нужно пахать годы, ты пока подтяни базу и базовые знания эксплуатации.
И выкинь нахуй все материалы на русском языке, они бесполезны.
Как ты узнал?! А если серьезно, то из виксов выросли и разошлись кто куда, опоздал ты.
>>679368
Только CTF и желательно самому, без подглядываний.
>>679595
Да это херня полная, копипаст и вода. Не советую сидеть на этих околотематических бордах которые создают иллюзию движа, там нет контента и знаний. Лучше подпишись в твиттере на топовых спецов, чтобы быть в курсе актуальных событий, следовать по течению и следи за конфами https://infocon.org/cons/.
спасибо,а можно примеры топовых спецов в твиттере?
Просто по крайней мере смотря на аналитиков малвари оттудава мне хочется плакать и смеятся одновременно
хелпаните плезс.
Почему у меня при делении происходит такая бяка?
Пишу в Сасме на насме х64
Вот код - https://pastebin.com/n7QbfSTt
Собственно я пишу лабку(сначала на спп написал, чтобы легче было).
> fld qword[x]
Читает double, 8 байт, дробь с плавающей точкой. Ты хочешь fild dword[x]?
> i_fmt db "%d",0
Вводит инт, 4 байта, целое число. То же самое и с выводом.
Алсо, в коде на крестах у тебя вообще везде целые числа. Хуй знает, что тебе нужно сделать. Дальше не читал.
У меня дано число, которое состоит из 3-х цифр. Нужно получить 6 чисел, образованных при перестановке :1
>Читает double, 8 байт, дробь с плавающей точкой. Ты хочешь fild dword[x]?
Емм, да нет. Я просто поместил х в вершину стека FPU, чтобы делать разные над ним операции.
А есть другой способ?
Мне какбы да, нужно только с целыми числами работать.
дай пример что кто-то всунул поддержку юникода, хочу посмотреть детали. вроде в gta-sa с русиком пихали, но не уверен.
Есть целочисленные инструкции, (i)mul, (i)div, вот это все.
> Я просто поместил х в вершину стека FPU,
Ты поместил x и еще 4 байта из n1, все вместе интерпретированные как double.
мне нравится CheatEngine с его функциями отслеживания. Очень удобно смотреть что пишет-читает по адресам и бряки ставить самому не надо. Попердолил то что можно изменить, нашел область в памяти, нашел область в либе (если не exe), засунул туда INT 3 и потом ковыряешь в другом отладчике.
Я уже и не вспомню, это вообще на консолях было. Но обычно тебе нужно найти декодер (обычно часть какого-нибудь draw_text, но бывает копия в других местах, типа подсчета ширины строки в пикселах или в кастомном strlen). Этот декодер последовательность символов преобразует в последовательность текстурных координат глифов, ты его патчишь/заменяешь, текстуру перерисовываешь или дорисовываешь или несколько текстур, смотри как в майнкрафте юникод сделан. И еще координаты глифов находишь и патчишь, если глифы не моноширинные. Ничего сложного в таких патчах нет.
Обычно не заморачиваются и делают 1251, потому что русский в UTF-8 - это два байта на символ, и текст может куда-нибудь не влезть. Если проблем со свободным местом нет и лимитов движка на этот счет нет - можно запилить UTF-8.
В java. Там неебическое количество текстур с пререндеренными символами, а оно грузит использованные (видимо с каким-то LRU).
Нужно реализовать простой цикл на fasme
Я в нем полный нуб, написал такой код, по идее должно в ecx доходить до 15, после выходить из цикла. Результат - пик. Еще раз говорю, я в асме почти не шарю, не бейте палками за говнокод.
нет,тут никого из нии,тут всякие разрабы эксплойтов,малварщики,реверсеры,разработчики читов и студенты
собственно почти все выше перечисленные получают больше веб макак
Гугли x86 calling conventions (конкретно __cdecl). У тебя printf пидорасит eax/ecx/edx. Используй другие регистры (esi/edi/ebx/ebp) или сохраняй и восстанавливай эти (push/pop).
Ещё не разобрался?
Функция printf возвращает количество напечатанных символов (в регистре eax). Т.к. при первой итерации цикла она вернет 1, а добавление у тебя идет перед сравнением, то eax = 1, ecx = 2 ? (этот регистр тоже volatile (caller-saved) и может быть перезаписан во время вызова функции).
Сейчас как раз в нии и пишут малварь и эксплоиты.
Вообще заебись, только
не НИИ, а крупный энтерпрайз
не рыбные котлеты, а королевские креветки. С авокадо спелым вообще пиздатейше, лимонным соком полей - закачаешься.
Затарился паулайнером, а брецели забыл сука, сча в азбуке вкуса доставку заказывать буду
А нахуя батоёбы в тырпрайзе? Они ж там будут тыщу лет писать простейшую хуиту и всё сломают в итоге.
Писать может и тыщу, а читать молниеносно
А dx-то обнуляешь? Делится-то dx:ax на указанный регистр/память. Или на 8-битный регистр дели, тогда делимое будет в ax, а частное и остаток в al/ah соответственно.
Задание: "Программа, которое вычисляет сумму значений функции, заданной системой уравнений для аргумента, изменяющегося в диапазоне [-2, 2] c шагом 1. [a, b], шаг = p
В программе должен быть предусмотрен ввод значений переменных в допустимых границах."
Я, может, не совсем по адресу, тогда направьте, пожалуйста.
Суть вопроса такова: есть одна древняя игруля (сейчас уже мёртвая и никому не интересная, если что, т.е. никакого коммерческого интереса), есть бинарник её форка, перепиленный васянами и выложенный в интернет (не спизженый, самими авторами расшареный много лет назад без каких-либо лицензионных условий и соглашений); также есть исходник версии, которую форкали, их выложили на гитхаб авторы без лицензии.
Так вот что я сделал -- это пока частично отреверсил бинарник форка, активно пользуясь исходниками. Могу ли я теперь заливать на гитхаб результат в принципе и под GPL2 в частности?
Какой вообще статус кода, полученного в результате реверса (да, он зачастую запрещён явно лицензионным соглашением, но ведь не всегда, в частности не в моём случае)?
В линуксе проще с nasm, у которого есть нормальная отладочная информация, которую жрет gdb. Если у тебя винда, или некоторые неудобства под линуксом не пугают, или ты хочешь писать всякие патчи на макроязыке fasm - бери fasm, комьюнити вполне живое, всегда подскажут.
>>684425
> Могу ли я теперь заливать на гитхаб результат в принципе
Заливать ты можешь что угодно. Чем старше игра, тем больше всем на нее похуй. Сейчас повадились издавать криво подправленное под современные ОС старье на gog или стиме, широко используя в том числе и фанатские патчи.
> GPL2
Нет.
> какой вообще статус кода, полученного в результате реверса
Погугли "clean room reverse engineering", что это, и почему появилось. Можешь еще наезды на ReactOS погуглить.
>clean room reverse engineering
Большое спасибо, почитал. Пиздец как копирасты охуели уже в конец.
Также нашёл годный FAQ от EFF https://www.eff.org/ru/issues/coders/reverse-engineering-faq , настроение такое же.
Ну и в конце набрёл на ГК РФ ст. 1280, которая в ч. 3 п. 3.3 явно запрещает мне шарить декомпилированный код.
Какое же днище вся эта система...
>> GPL2
>Нет.
Ну, продолжение игрушки (код на 80-90% тот же) авторы уже выкладывали сами под GPL2, так что тут точно могут быть обидки.
В общем, я решил по итогам всех чтений, что везде укажу авторов оригинала, авторов форка, и выложу в итоге на гитлаб, а не гитхаб; вроде, так риски бешенства копирастии минимализируются.
1.Что такое "малвар сайтс"?c2?Файлы где малварь распросмтранялась?Что вообще ты этим сказать то хотел?
2.Нахуй ты это припер в тред посвещенный асму?
Фишинг используется для распространения малвари. Уебывай с треда с своими картинками.
Вкатываюсь в RE. По совету шапки начал с Дениса Юричева - RE для начинающих, честно читал, честно понимал все, что касается x86 архитектуры, а MIPS, ARM не интересны. Но в разделе "Специфичное для ОС" почувствовал неимоверную интеллектуальную слабость, т.к. просто не понимаю как устроена ОС, знаю там про ring, про порядок загрузки, крч максимально обзорный курс, но по факту не одупляю что происходит. Кстати аналогичную проблему испытал, когда видел листинги шифраторов или генераторов хэша.
Вопросик в чем собственно. Есть что-нибудь фундаментально, что можно еще взять почитать? Вроде примеры разобрал, управления делал, а скачиваю crackmes.one что-нибудь, не вывожу. Анончики, как подступиться к великому???
Таненбаум,
Немецкий автор с 10 изданием про ОСи,
Windows internals, седьмое или шестое издание по две части в каждом
Также можно глянуть OSDev.org и архитектуру компьютера, хеннесси и тд.
На мой взгляд читать Тененбаума и прочие книжки по ОС какая-то не то чтобы пустая трата времени, но неоптимальность в этом деле. Самое эффективное взять и прочесть код маленькой ОС, у меня только после этого сложилось понимание. Советую сюда глянуть https://pdos.csail.mit.edu/6.828/2018/schedule.html
Ещё можешь пройти курс на степике по ос, их там кажется 2, тебе нужен где помоложе чувак ведёт - но обязательно заходи на гитхаб курса и читай код, там помнится таки написана ОС.
Без кода имхо уверенного понимания не появиться.
отпиши ему,он там чуть ли не каждый день обновления книжки делает
https://www.hex-rays.com/products/ida/news/7_5/
Апдейт очень даже жирный, все таки конкуренция заставила Ильфака двигать булки.
Тем не менее, 7.5 версия вышла, а полноценного кряка с 7.0 все еще не завезли. Как так то?
>На мой взгляд читать Тененбаума
на мой взгляд Тененбаум это такой научпоп, чтобы читать дополнительно, в этом плане он заходит.
А Брюса Шнаера?
идеально было бы переписать игрушку своими словами, копируя механику оригинала. (такое не редкость, см. опенсорсные форки) но этого надо очень захотеть.
>полноценного кряка с 7.0 все еще не завезли
Хм.. Может я тебя не совсем верно понял, а чем ликнутая 7.2 не устраивает?
Там нет hex-rays'a для x86.
Возьми или напиши себе эмуль такой. Можешь взять unicorn в качестве основы.
Без контекста это гуглить никакого смысла нет. Выдает какие-то биржи, децибелы итд.
Очевидно что речь о dynamic binary instrumentation и dynamic symbolic execution советую triton, юзал для деобфускации, он неплох
Аноны, как нормально реверсить форматы файлов? Знаю что там используется какое-то сжатие, xor-обфускация и в этом лежат шифрованные RC4 данные. Теоретически есть ключ для RC4, но похоже из-за сжатия/обфускации он не подходит. Два дня убил, результатов пока ноль. Реверсить алгоритм чтения? Ковырял гидрой, нашел где всё это безобразие происходит, но там пиздец, основная функция на 1000 строк и ещё десяток функций в ней. Логично было бы от получения данных с диска идти, но распаковка где-то не рядом происходит. Может есть хоть какие-то примеры как люди ковыряюсь такое говно?
А какая цель: получить содержимое файла или алгоритм узнать?Работащий экземпляр программы есть, которая файлы читает, откуда алгоритм чтения?
> алгоритм узнать
Это. Пердольный способ криво распаковать и так есть.
> Работащий экземпляр программы есть, которая файлы читает, откуда алгоритм чтения?
Да. Но там десятки функций между функцией, принимающей параметры чтения и путь, до виндового ReadFile. IDA вообще нечитаемый пиздец высерает пикрилейтед, в гидре вполне читаемо, но нихуя не понятно в такой куче. Как мне, например, проследить путь данных от ReadFile? Тут какой-то ООП и данные сразу уходят из функций в никуда и хуй поймешь что потом их обрабатывает.
> Т.е получили на вход инструкцию с операндами и на выходе выдали значение всех причастных регистров?
> Что вообще никак не связано с вопросом
Иди учи мат. часть, потом возвращайся.
> Тут какой-то ООП
Создавай типы @ проставляй типы, и будет читаемый и понятный пиздец. Главное - не лениться.
Ну, по алгоритму - тебе придется разбираться самому с переменными и названиями, и что они обозначают. Подстановка нормальных имен несколько упростит дело, как писали выше.
По поводу формата файлов, чтобы проще было начать раскручивать цепочку архиваций - погугли список заголовков файла-архива в зависимости от типа архива. Вот zip-ники к примеру с "PK" начинаются
Объективно нереально... Там 2000+ функций, исходники оригинала в 110к строк олдовой сишки (т.е. с функциями по 300+ строк, макросами для односвязных списков, свой мини-менеджер памяти, мини-субд и даже блять скриптовый язычок для ИИ), в форке который реверсю из бинари ещё напердолено процентов 10-15 от этого по объёму. Я сам игровую механику знаю только в малой части, чтоб с нуля запилить.
Но я с новым вопросом. Вот что-то нарисовалось в гидре в первом приближении. Теперь я это всё экспортирую в декомпилированном виде. Я верно понимаю, что аналогичной кнопки для экпорта типов (структур, енумов) нету? А то их 100+, во многих десятки полей, руками лень. Питухон-скриптингом это наверняка решится, но есть ли лучший способ? Загуглить не удалось.
Аналогичный вопрос с константами. Со строковыми у меня костыльный внешний скрипт, который ищет их в выводе гидровского декомпилятора и подставляет фактическое значение в кавычках из указанного адреса, а есть ещё и просто константные массивы чисел/структур. Их бы в си-синтаксисе вывести. Тоже скриптом изнутри гидры надо делать?
> Объективно нереально... Там 2000+ функций, исходники оригинала в 110к строк олдовой сишки (т.е. с функциями по 300+ строк, макросами для односвязных списков, свой мини-менеджер памяти, мини-субд и даже блять скриптовый язычок для ИИ), в форке который реверсю из бинари ещё напердолено процентов 10-15 от этого по объёму
Пфф, люди клиенты онлайн-игр реверсят и сервера с нуля пишут, WoW как пример. Было бы желание и время.
Это делают наёмные команды реверсеров и разработчиков. И получается плохо совместимое говно, лишь по форме напоминающее оригинал, и то благодаря тому, что клиент тот же самый.
>trinitycore
>является форком проекта Massive Network Game Object Server. В самом начале проект разрабатывался девелоперами UDB
>На данный момент, в репозитории присутствуют патчи более чем от 180 авторов.[7]
>90% Blizzlike with custom fixes
>blizzlike
>blizzlike
>99% compatible
>blizzlike
Да ты же троллишь.
Зачем реверсить игровую механику? Запили свою!
Зачем реверсить задачу CTF? Запили свою!
Зачем реверсить малварь? Запили свою!
Можно, хули нет то.
> Зачем реверсить игровую механику? Запили свою!
Лучше с точностью воспроизводить все найденные баги и плакать?
Я, честно, не понимаю, в чём ты меня хочешь убедить.
Есть игра, с механикой несколько сложнее, чем у тетриса; реверсить её как "чёрный ящик" вообще не вариант, чтобы разобраться как всё работает я и полез в исходники оригинальной версии, там выяснил, что в форке много чего переделано и доделано, как именно -- а хуй знает, опять же, слишком сложный чёрный ящик. Отсюда необходимость реверса. А ты мне предлагаешь делать своё, "похожее". Да нахуй оно мне надо-то? Похожих опенсурсных игр ёбаная тьма, больше чем игроков в них осталось (а-ля рогалик).
И это в треде про реверс я оправдываюсь за реверс... нонсенс. Лучше б дал скрипт для вытягивания из гидры тайпдефов и константных структур в си-синтаксисе.
CTF-школотрон, ты?
Чтобы выставить ZF обычно.
Написал я программу. Все работает.
Второй пункт задания была вызов этой функции из под си.
В си мы вводим вещественное число, передаем в асмовскую функцию, а она ее возвращает.
Не могу никак написать код возвращения.
Читал, что нужно использовать для этого ФПУ(st0) - пробовал(пик 1)
- не работает. Также через еах пробовал. Тоже не работает
Помогите.
Код прилагается:
1. Сишный код(пик)
2. Асм - https://pastebin.com/k4bqgFKr [nasm, sasm]
Строки 36-37 в ассемблерном листинге удоляешь, в сишном коде в объявлении FBG меняешь тип возвращаемого значения с int на double.
КАК я не заметил этого, боже. Я про тип функции в си. Ну конечно. Спасибо тебе.
Про 36-37. Забыл убрать когда отправлял код.
Так вот вопросы:
-насколько адекватен подход обучения асме через РЕ;
-посоветуйте что-нибудь простенькое для проверочки знаний: парсер-хуярсер, польский калькулятор, небольшая утилитка..
>подход через РЕ
ТОЛЬКО ЕСЛИ тебе будет ментор компилить что-то, потому что ты можешь понезнанке компильнуть этот хеловорлдец в условной студии2012, которая в листинг напихает кучу непонятной для тебя хуеты.
>хеловорлдец в условной студии2012
Пока компилирую только в гцц с разными ключами на оптимизацию.
Студии, арм и мипс не трогаю.
>ТОЛЬКО ЕСЛИ тебе будет ментор компилить что-то
И где такого дядьку взять? Помогать на чистом энтузиазме со всяких лоров врядли кто-то будет.
>, которая в листинг напихает кучу непонятной для тебя хуеты.
То что гцц выдаёт - относительно ясно и понятно. Листинги от Юричева по другим архитектурам читаю по диагонали и не сказать, что там уж очень много магии.
Немного туда же вопрос, а челленджи у Юричева ньюфаг осилит? И да, я так понимаю, хорошо бы вникать и в арм, и мипс, чтобы суть вопроса увидеть с разных сторон - или это чисто идеалистическое представление, т.е. если интересна архитектура x86-x64, то можно и скипнуть?
можно и скипнуть
Есть игрушка Kenshi и у меня появилось желание взломать статы, чтобы ускорить процесс раскачки на поздних стадиях, но игра использует mulss, addss и оперирует регистрами rx и xmm. Собственно я совсем не понимаю, как мне написать скрипт и сделать интеграцию в бинарник Кенши. Если хоть кто-то готов мне помочь я буду уже скидывать инфу по процессу
https://pastebin.com/LEmA43DB
https://pastebin.com/p4tkS2Tv
Нахуя эти троллейбусы нужны, и вообще правильно ли я транслировал?
По делу не помогу, но:
> вообще правильно ли я транслировал?
У тебя есть .s, собери его. У тебя есть твой код, собери его. Потом накорми оба какими-нибудь данными и сравни.
> Денис Юричев: "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна! Вот прямая ссылка https://beginners.re/RE4B-RU.pdf
Хочу напечатать ее в типографии, чтобы с твердой обложкой и переплетом. Никто тут этим не занимался? А то с компьютера мне тяжело читать, все плывет.
Идёшь в типографию и печатаешь. Лучше скооперироваться, тираж из одного экземпляра будет ебанически дорогим.
в тваю мамашу как та памещается жи
Ясно.
Опять пишу, чтобы мне поведали истину. Можно ли в ассемблере сделать сравнение по типу больше чем?
То есть у меня есть код и мне надо, чтобы он остановился после того, как значение превысит 100, дело в том, что сравнивать надо тип float, а стандартное cmp не может сравнивать больше чем.
Может есть инструкция, которая может?
Кстати, с умножением разобрался, кто же знал, что mulss требует двух операторов
> стандартное cmp не может сравнивать больше чем
Тебе мало? Сравниваешь cmpless, как только получишь ноль в маске - останавливаешься.
>The (V)MULSD instruction multiplies the double-precision floating-point value in the low-order
quadword of the first source operand (an XMM register) by the double-precision floating-point value
in the low-order quadword of the second source operand (an XMM register or a 64-bit memory
location) and writes the result in the low-order quadword of the destination XMM register.
Но насм сообщает о мисматче между xmm и 8 байтами.
Куда ходить дальше?
Спасибо большое, не заметил третьего оператора
> Куда ходить дальше?
За нормальным ассемблером. Или скажи ему, что там tword, и он заткнется.
Хотел спросить, где вы еще собираете аналогичную информацию по свежим дырам помимо очевидного nvd.nist.org?
>Все работает, если размер не указывать вообще.
Спасибо, анон.
А правда, что весь патчинг сводится к изменению опкодов и иммов в бинарях? Если да, то есть смысл практиковаться писать патчи, скрипты, когда можно всю работу спокойно сделать через условный радар?
https://forum.reverse4you.org/t/exploit-development-course-part-7-exploitme1-ret-eip-overwrite-klaus/647
Только у меня VS 2019. Отключил DEP и Security Check (/GS-). Собрал, компилировал. Но ошибки нет. Что я делаю не так?
Отбой. Ошибка есть win 7
печатаешь на А4, а потом ищешь тех кто у вас в городе переплетает дипломы и т.п.
Хочу реверсить всё что движется.
qemu (можно прямо qemu-aarch64/qemu-arm, чтобы запускать ARM-ные бинарники - оно будет на лету транслировать исполняемый код, но использовать системные вызовы твоей ОС). Если нужна полноценная вм, то qemu-system-arm/qemu-system-aarch64 соответственно.
Премного благодарен
На работе.
Антивирусные компании,ресерч,эксплойт дев(на гране,но если на какой-то зиродиум,то норм),поиск зиродеев,реверс ембеддед прошивок,приложений и много чего еще(на хх иногда появляются вакансии даже с приличными зп в 200-300к)
Ну вообщем много вариантов,это достаточно перспективно как мне кажется.Возможно вакансий меньше чем быть вебером или там на джаве что-то писать,но за то ты редкая птица,тебя так просто не заменить и не уволить
Я особо не боюсь получить по рукам-авторы программ не из россии,не платят налоги или чего-то такого.Да и использовать эти проги будут пару человек которые у меня это заказывали
>Есть что-то лучше AsmJit?
Есть, LLVM. Разработчики эмулятора PS3 даже него как раз целиком перешли в качестве машинокодогенератора. Раньше у них был LLVM для основного ядра powerpc и asmjit для недоядер SPU
> LLVM
Но он же для других задач, разве нет? Он же как JIT херовый, только под компиляцию заточен. Посмотрел примеры и там ад какой-то. Как вообще кодить с ним? Плюс он тяжелый, заебешься таскать с собой. А весь AsmJit весит 100 кб. С AsmJit хуяк-хуяк и запускаем код, а на LLVM какие-то портянки никак с асмом не связанные. Да и я же не пишу ЯП, мне просто на ходу код генерить и запускать. Расскажи хоть как его кушать правильно.
>"IM n" // load the constant value n into R0
>"AR n" // load the n-th input argument into R0
>"SW" // swap R0 and R1
>"PU" // push R0 onto the stack
>"PO" // pop the top value off of the stack into R0
>"AD" // add R1 to R0 and put the result in R0
>"SU" // subtract R1 from R0 and put the result in R0
>"MU" // multiply R0 by R1 and put the result in R0
>"DI" // divide R0 by R1 and put the result in R0
Кто-нибудь имел дело с этой сигнатурой?
Что имеешь в виду? Если ты о том, что придется разбирать структуру условного PNG файла, если это, например, текстура, то в этом проблем нет. Данные могут быть и не очевидными, но суть не в этом. Мне главное быть уверенным, что эти данные сжаты именно zlib и что декомпрессия 100% вернет данные в их изначальном состоянии. На практике проверить смогу только завтра.
Ты слишком много думаешь, взял да затестил, дел-то на полминуты. Ты откуда-то этот пост написал, а если есть девайс, есть и компилятор, ну или интерпретатор питона на худой конец.
Итог:
1. Ушло чистых 18ч на то, чтобы выдернуть из игры описание нпс, квестов и т.п. текстовую инфу в формате XML!!! Которая до запаковки в клиент была разбита на ~500к файлов, в каждом из которых не больше 128 байт текста с учетом того, что кодировка UTF-16. Что, бля? Нахуя??? Ладно, не суть...
2. С текстурами пока не ясно, уже наверное только завтра сяду. Но закономерность следующая:
4 байта - максимальный индекс (N) чего-то (обычно 5-7) (подозреваю использование mipmap'ов)
4 байта - размер следующего блока в байтах
[блок N]
4 байта - N - 1 индекс
4 байта - размер следующего блока
[блок N - 1]
... и т.д. до 0 индекса, при этом размер блоков постоянно увеличивается в 4 раза: 32(байта) -> 128 -> 512 -> 2048 -> 8192 -> 32768
Алсо, если кто-то сталкивался с подобным или есть идеи, вот файл http://www.mediafire.com/file/93ptjpve1hof5s9/texture.bin/file , не откажусь от помощи.
Ах да, еще вопрос интересует, зачем указывают 2 раза подряд один и тот же размер запакованного блока данных? Не первый раз уже встречаю.
> подозреваю использование mipmap'ов
Да.
> есть идеи, вот файл
Внутри мипмапов различимы блоки по 16 байтов (16 x 8 = 128 бит), значит внутри что-то уровня BCx. Возьми последний, самый крупный уровень и проверь на предмет DXT5 или выше.
При перекате, поправьте в шапке ссылку на Юричева, плиз.
есть функция которая вызывает другую функцию находящуюся на определенном оффсете от this указателя. но если я лично хочу прочитать адрес этой функции добавив этот же оффсет к this то там оказывается нулевой указатель. я пытался это делать вручную и имея воспроизведенную структуру на с++. но в любом случае нулевой указатель.
вот листинг декомпилятора ida и мой код. то есть чтобы вы понимали там никак не может быть нуля потому что я сам могу вызвать изначальную функцию в любом месте и она вызовет ту с которой я хочу работать явно не по нулевому указателю.
как такое возможно???
Как ты получаешь указатель? В какой момент и откуда достаешь? Так-то ничего странного в этом нет. Особенно когда ты так шакально пытаешься вызвать функцию.
Перефразируй и дай больше информации. Скрины вообще никак не связанны между собой. Адрес функции нужно вычислить, а не разыменовывать адрес инструкции вызова функции.
Аноны, ебусь с asmjit, пытаюсь вызвать функцию.
Создаю функцию, присваиваю адрес переменной через asmjit::jitruntime.add(), тут всё нормально. Чекаю адрес - всё верно. Из крестов она вызывается.
Но самая ебень начинается когда я пытаюсь вызвать эту функцию из ассемблера через call. Десятком способов передавал адрес функции, но в итоге он либо нулевой, либо какие-то рандомные 2 байта и нули вместо адреса.
Как передать абсолютный 64-битный адрес в call? Гуглил варианты через imm(), вариации ptr_64_abs() и прочее - нихуя не работает. Адрес в переменной есть, но в call он нулевой становится. Ничего не понимаю. Особенно что за 2 байта иногда появляются.
и про софт и про железо.
слышал что есть программы, которые позволяют просматривать как строится кадр для отрисовки, наверное за ним стоят команды, которые формируют картинку, но я не встречал, не видел их упоминания нигде. Наверное все это скрыто за d3d-всякими-хуинями.
Сначала как обычно пишутся в видеопамять данные и исполняемый код - шейдеры. Потом уже идет работа с ними.
В DX10/11 по очереди синхронно вызываются шейдеры из конвейера. Один цикл отрисовки - drawcall, их много в одном кадре. ЦП вызывает шейдер и ждет его выполнения на GPU. Кадр по частям рисуется в буфер кучей drawcall. Потом вызывается Present - готовый кадр выводится на экран.
В DX12 сначала собираются команды в очередь команд, ставится Fence, а потом асинхронно запускается всё на выполнение. По окончании выполнения очереди команд, Fence отправляет сигнал в ЦП что кадр отрендерен. При этом можно готовить очередь команд для следующего кадра пока рендерится текущий.
По сути ЦП подготавливает данные в видеопамяти, запускает шейдеры и посылает команды вроде отрисовки на экран. Ничего больше он не может делать. Контролировать выполнение шейдера тоже нельзя, он просто запускается и пишет результат в видеопамять.
>слышал что есть программы, которые позволяют просматривать как строится кадр для отрисовки
renderman, CodeXL, встроенный графический отладчик в Visual Studio
Здесь вообще все расписано в деталях, хотя и немного устарело:
https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/
покидайте примеров какие дорогие и редкие железки могут нуждаться в реверсинге?
я вижу в этом единственное оправдание заниматься этим тяжким трудом, малварь - не в счет.
blackfin - ебануться. отреверсишь - можешь кучи бабла рубить на продаже своего решения (помощи реверсинга и вычленения кода).
у девайса есть оперативка именно на внешнем чипе?
чтобы поиметь черный плавник, могут понадобиться аппаратные средства для отзеркаливания оперативки и прочих логических логов.
придется собирать разные проекты официальным софтом.
копать и реверсить сам софт. да б-г знает что еще.
какая цель? получилось ее достичь? можешь скинуть фейкомыло?
Нет. Какой F5, если Tab ближе?
Проиграл с актавиан димы
Анон, ну вот я купил железку за 300 тысяч рублей. И там, сука, нет даже SNMP. Точнее, он там есть, но заблокирован. А чтоб SNMP был, надо купить эту же железку, но уже за 500 тысяч. И это я даже не буду говорить о том, что себестоимость этой железки раз в 10 меньше, даже считая R&D.
И что делать, если мониторинг жизненно необходим? Если железка встанет, или перейдёт в аварийный режим работы, то мне необходимо узнать об этом как можно скорее, иначе я могу попасть ещё на несколько сотен тысяч, а заодно и штраф государству буду платить.
И что мне остаётся делать, заплатив 300 штук? Для одной железки, у которой для управления имеется нативное приложение под винду, я таки сумел написать включалку SNMP, изрядно поебавшись с идой и вайршарком. А есть ещё и другая, у которой только вебморда. И пришлось натурально писать парсер для этой вебморды. Я этих жадных пидорасов ненавижу уже, а деваться некуда - на рынке узкоспециализированного оборудования, где имеется от силы 2-3 производителя, такое говно сплошь и рядом.
>покидайте примеров какие дорогие и редкие железки могут нуждаться в реверсинге?
Ну купи за копейки какой-нибудь древний voip-шлюз на базе Lucent из e1 в h.323 и попробуй активировать там лицензию на SIP.
Ближайшие лет 10 все еще можно будет грести с этого бабло.
Разумеется, это незаконно.
Они и так уже умирают по факту
Полностью - никогда,слишком много легаси,однако сейчас уже даже написания самого эксплойта это труд чуть ли не больше чем его нахождения из-за митегейшенов
Еще лет 5-10 назад с этим было куда проще
если бы это умирало, гугл вряд ли бы развернула Project Zero для борьбы с подобными ошибками. Ну и есть эмбедщина, которая вся на сях и скоро жестко расплодится по всему миру с выходом в интернет.
Напоминаю, что ддос атака - это тоже кибератака, которая нарушает information availability, а ддоснуть через ошибку в памяти проще простого, не нужно ебаться для того, чтобы исполнить произвольный код, можно просто переехать указатель или врезаться в одну из митигаций для аварийного завергения программы.
А вообще, даже в 2к20 году не существует ни одной митигации, которая спасала бы полностью от эксплуатации. Даже Control Flow Integrity научились обходить и исполнять произвольный код через эту защиту, а это последний писк технологий защиты от атак на память, там даже эвристический анализ крутится в динамике. Стоимость эксплоитов растет, а исследовательские компании и гос. органы, по всем этим причинам, не потеряют к этому интерес. Подноготная всея вселенной - код на С/С++. ОСи, браузеры, вьюеры для всех форматов файлов, медиасофт, аудио/видео, нутро веба (nginx и apache написаны на Си), интерпретаторы всей известной скриптопараши, виртуальные машины, эмбедщина, набирающий обороты интернет вещей и так далее, продолжать можно бесконечно. Собери это все в кучу - сотни миллиардов строк кода, если уже не триллион+
Короче, эта хуита с нами надолго. Просто как обычно продолжится игра в кошки-мышки, на каждую новую защиту придется по 1-2 обхода этой самой защиты, ИБшники тоже чето хавать должны.
Что правда - порог вхождения всегда будет повышаться, ибо каждый ньюфаг должен будет изучить историю бинарной эксплуатации длиною в десятки лет, и сперва потренироваться на неревантных техниках, дабы через тернии к звездам добраться к современным атакам.
а потом выбираются из контейнера и ссут на ебало всей системе) Уже бывали случаи
Аноны, объясните пожалуйста мне. Для меня это контринтуитивное понимание. Каким образом делаются подобные вещи, вроде модификаций на популярные игры добавляющие в них мультиплеер? Какими знаниями нужно обладать, чтоб сотворить такое?
Если кто-то объяснит на пальцах, очень буду признателен. Чисто ради общего развития.
Как это не существует? Да уже десятки разных смягчений запилены в прод, на разных уровнях и нормально так выполняют свою работу. Осталось убить все code-reuse атаки.
>Подноготная всея вселенной - код на С/С++.
А если бы не плюсы, а какой нибудь Rust, то не было бы всей этой херни?
Не существует. Назови хотя бы одну (псс, такой нет, не найдешь).
Попытки убить code reuse атаки - это как раз тот самый control flow integrity и pointer authentication, но это лишь усложнение эксплуатации. Для классического возвратно-ориентированного программирования есть модификации, которые позволяют обходить современные защиты.
Короче говоря, серебрянной пули нет и не будет, будет усложнение. Пока язык позволяет срать в память - абсолютной защиты памяти быть не может.
>>745358
Как бы это смешно ни звучало - нет, накорню не решило бы ситуацию. Раст во многих случаях, особенно при написании лоу-лвл ебанины, обязывает девелопера абузить ансейф блоки кода, причем чем больше код, тем больше ансейф блоков, а там остаются проблемы с памятью. Кстати, это одна из причин, почему раст не взлетит - шило на мыло менять никто не будет, он только сузит attack surface, а переписывать всю Вселенную с С/С++ на раст никто не будет, ибо экономически это никому не выгодно. Зиродей атаки тратят скорее не на компании, а на отдельных лиц (не раз ловили опасных преступников при помощи зиродеев). В плохих целях - шантаж влиятельных людей или кража их личной информации.
Так что помимо всего этого, рафинированная абсолютная безопасность в вакууме невыгодна достаточно многим людям и даже организациям. А на вебе далеко не уедешь, там импакт слабее намного и удаленный шелл через веб-уязвимость - это 1 на миллион, когда в бинарщине это каждый третий memory corruption.
Фаззер - это на удачу. Было бы все так просто, все баги уже бы переловили и лавочка бы закрылась наглухо, но такого не предвидется.
>Раст во многих случаях, особенно при написании лоу-лвл ебанины, обязывает девелопера абузить ансейф
Ну ты уже тут обосрался. Если посмотреть растовские крейты, то там >90% кода вообще без ансейфа. Да и с самим ансейфом есть тонкости
>а переписывать всю Вселенную с С/С++ на раст
Так это и не нужно, главное переписать опасные и узкие места
>ибо экономически это никому не выгодно
Если весь софт, как ты утверждаешь дырявый, если гугл говорит, что у них 80% ошибок из-за ub, а майки что 70% - почему не выгодно?
Конкретно тут, наверное вопрос к качеству последнего яблочного кода - для сейм дыр в андрюше ценники не менялись.
Потому что ios дырявое говно и произошел oversupply. Учитывая, что rce или джейлбрейк на айпонт стоили в районе 2 лямов баксов, то представь себе сколько бабок надл платить хакерам. Вот и прикрыли прием временно. Хотя это лишь показывает насколько актуальна ситуация. Если в айос дохуя дыр, прикинь сколько дыр в попенсорце, особенно в драйверах. Охуилярд просто.
Крейтами растовский код не ограничивается, а этих узких мест просто дохуя. Особенно новый всплеск багов наблюдается, когда пытаются впилить костыли в большую кодовую базу.
Ну там так не просто. Инструментов готовых считай нет, нужно подбирать фаззер, корпус, очень часто приходится допиливать напильником под конкретный таргет, добиваться высокого покрытия кода. Ну а дальше ждать, и ждать порой долго, также нужны приличные мощности, домашнего пека не хватит.
Мне все смягчения перечислить? Их так-то несколько десятков. Конкретно code-reuse атаки убивает CFI/DFI - это CFG/RFG/CET итд. Часть этих смягчений уже реализованы в современных компиляторах. Конкретно ROP(J/C) убивает CET, это аппаратная фича. COOP убивается на уровне компилятора (см clang). Атаки на данные - смягчаются аналогичными технологиями защиты данных, например свеженький KDP (Kernel-Data-Protection) от мелкомягких, реализованный через SLAT (NPT/EPT). Я уже не говорю про различные 3-party реализации коих тоже N-количество и они даже выполняют свою работу.
https://marcoramilli.com/2016/06/23/from-rop-to-lop-bypassing-control-flow-enforcement/
Как я и говорил, современная модификация возвратно-ориентированного программирования разбивает в пух и прах технологию CFI (Control Flow Integrity), обходя сразу 4 защитные технологии, включая эвристический анализ.
Также советую прочесть доклад одного из исследователей Google Project Zero (https://docs.google.com/presentation/d/1lfQGEX2aGEA1H7flsXw4V30ZkbnrfikYk9IrctuwZO8/edit#slide=id.p), который показывает что есть weird machines, как возможно исполнение произвольного кода при идеальном flow integrity и насколько сложно математически доказать exploitability/non-exploitability. Сам факт возможности создавать эксплоит под уязвимую программу кроется в теории вычислений. Сей доклад толсто намекает на математическую невозможность решать подобные проблемы на 100%. Вывод один, касательно ошибок с памятью, - если язык программирования ПОЗВОЛЯЕТ испортить память, то идеального защитного механизма не создать. Если программист ошибся, то это минимум уязвимость к ддос атаке, максимум - удаленный шелл, что до сих пор не редкость, несмотря на тонну митигаций.
Выход один - писать на managed языках, но там есть свои, другие проблемы. И такие языки не везде применимы.
Такие гаджеты нужно еще умудриться найти. Сам паттерн вычленяется на стадии компиляции, т.е можно смягчить. Шипнутый мелкомягкими CET уже смягчает ROP и будет расширен позже, осталось дождаться поддержки со стороны компилей. Да и это только один слой уменьшения поверхностной атаки. Существуют другие меры, которые даже при успешном выполнении кода, просто не позволяет оказать влияние на систему.
для старых 3дж гта (3-вс-са) пердолики нашли много функций, которые позволяли делать то же что и файлы с иссиями, но уже без файлов. первый мультиплеер был просто две тачки и "трейнер", который позволял двум игрокам погоняться без выхода и машин. пруф оф концепт. это было для гта 3.
потом нашли дохуя всего, что-то даже допили и перепилили (например рендеринг *.x direct 3d моделей напрямую в сцену, движок об этих моделях пикапа нитро и починки ничего не знал или до сих пор не знает), шейдеры всякие и т.п.
чтобы такое сотворить, нужны средние познания в реверсинге и большие непосредственно о той игре, для которой пилят мультиплеер.
для гта 4 и гта 5 не знаю, но поскольку там уже есть мп, думаю это было легче.
все это - жуткое байтоебство. адовое. в одиночку непосильная задача.
pwn2own - каждый год запускают калькулятор через дыры в известных браузерах, где помимо всех митигаций, включая защиту от code reuse, каждая вкладка исполняется в песочнице. Повторюсь, серебрянной пули нет и не будет, пока язык позволяет портить память. Но будет расти сложность взлома.
С математикой и теорией вычислений спорить сложно.
можешь написать примерный девайс и на чем он?
интересно, хочу потеоретизировать как это могло бы быть решено.
Вот только за последние годы, нифига не ломают браузеры, разве что edge. VBS еще какая серебренная пуля в данном случае.
Да и причем тут язык то вообще? Rust так-то тоже не серебряная пуля и не все memory corruption баги убивает.
спасибо, анонче
>>745448
>раст игрушечный язык,это очевидно
>Почему?
Потому что ему так об этом так сказали. Я до сих пор угораю с этого: https://habr.com/ru/post/492410/
Один из представителей группы по стандартизации C++ дико обосрался обозревая Rust, хотя казалось бы человек с опытом. И продолжил серить в комментах.
И таких примеров навалом (eax.me, linux.org.ru там вообще уйма таких в каждом треде про раст, почитай tsar1997.blogspot.com - абсолютно поехавший крестоёб).
Safari на полседнем p2o ломали, хром то ли в 2017, то ли в 2018. Но следует учесть, что у участников есть на все про все 48 часов на это. Я уверен, что есть зиродеи на подобный софт, которые не раскрывают по понятным на то причинам.
А был бы реальный silver bullet против бинарщины, то распустили бы project zero, целый кусок инфосек индустрии бы отвалился, миллионы ресёрчеров потеряли бы работу, многие конференции и ситиэфы тоже бы если бы и не закрылись, то очень сильно видоизменились. Но это не так. Все куда сложнее, чем это кажется на первый взгляд. Помнится, когда пришли DEP и ASLR с разницей в год, то тоже все выли, что хакингу пришел пиздец, но как видишь.
Rust не серебряная пуля потому, что тоже позволяет срать в память, хоть и не так фривольно, как С/С++. Попробуй насри в память в пайтоне или джаве. Там это не прокатывает, ибо это управляемые языки. Хотя их подноготные все равно написаны на С/С++ и если там есть дыры, то это куда серьезнее, нежели если бы они были в аппках, написанный на этих managed языках.
Серебряная пуля это инструменты, а инструменты денег стоят. Посмотри цены на проприетарный софт, десятки тысяч долларов в год. Ну и стек знаний должен быть специфический, мягко говоря. Как видишь порог вката высокий, поэтому так. Это не веб-хакинг, где бурп запустил, пока чаек завариваешь и нашел пару багов.
> Но следует учесть, что у участников есть на все про все 48 часов на это
Ну ты наивный конечно, они наработочки годами маринуют.
Кстати, а тебе не кажется странным то, что дыры в вебе намного легче обнаружить и предотвратить, чем лоу-лвл дыры, связанные с памятью? И их все равно просто навалом, да и на рынке труда в инфосеке веб ссыт на бинарщину в плане кол-ва вакансий и вообще спроса (отталкиваясь от количества, конечно же, но как по мне веб это унылая хуета, не моё)
>>746032
>>746074
Я думаю вы просто хуесосы-дармоеды. Вы нихуя не делаете. Всё это ваше байтоёбство просто хуерга. Какие-то специалисты, какие-то project zero, а по итогу просто хуйня на постном масле. Вот. Покажите мне хоть одну лоу-лвл ошибку за последние 10-15+ лет, которая хоть как-нибудь влияла на безопасность пользователя, а не просто крашила ему аппу.
Я не байт, я человек.
>Но следует учесть, что у участников есть на все про все 48 часов на это
Не,они заранее все готовят
За 48 часов найти зиродей в хроме и написать рабочий эксплойт это что-то на гране фантастики,учитывая размеры и сложность хрома или другого браузера типа того же сафари
зиродеи не тратят на хомячков-васянов вроде тебя, понимаешь?
Почитай про stuxnet, поймешь для каких целей используют бинарные эксплоиты.
Я говорил непосредственно про эксплуатацию, а не про поиск эксплуатабельных багов.
>зиродеи не тратят на хомячков-васянов вроде тебя, понимаешь?
>зиродеи
Это были бэкдоры, васян
>stuxnet
Это до вас, как до луны. О чём ты, байтаёб?
найс бэкдоры, когда есть переполнения на 1 байт в куче, которые случайно оказываются эксплуатабельными, лол. Таблетки забыл принять?
Ты знаешь, что такое бэкдор? Я уж молчу про цифровые подписи. Это чисто ЦРУшные дела и агентура, байтоёбам тут не место.
Все CVE-репорты - бэкдоры.
В кодовых базах вроде Линукса (30 миллионов строк кода) и гугл хрома (85+ миллионов строк кода), написанных на небезопасных языках, не может быть ошибок со стороны программистов, это все бэкдоры, ррряяя!
Ну всё с тобой ясно, здоровья тебе, анон
ТЫ ЦРУ. ДАВИШЬ ЖЕЛЕЗНЫМ САПОГОМ НА ДВЕРИ ЛЮБЫХ КОМПАНИЙ
@
ТЕБЕ ДАЮТ ЛЮБЫЕ СЕРТИФИКАТЫ И ПОДПИСИ ПЛЕВАВ НА РЕПУТАЦИЮ. ТЕБЕ ОТКРЫВАЮТ ЛЮБЫЕ БАЗЫ ДАННЫХ И КОД
@
ДЕЛАЕШЬ ВИРУСЫ ДЛЯ УНИЧТОЖЕНИЯ ЯДЕРНОЙ ПРОГРАММЫ ПРОТИВНИКА
@
ИСПОЛЬЗУЕШЬ БЭКДОРЫ ИЗВЕСТНОЙ КОМПАНИИ, КОТОРАЯ ИХ НЕ ИСПРАВЛЯЕТ И РЕПОРТИТ ТЕБЕ
@
ВАСЯН ИЗ ЛИПЕЦКА СПУСТЯ 10 ЛЕТ ДОКАЗЫВАЕТ, ЧТО ЭТО БЫЛИ ХИТРЫЕ БАЙТОЁБЫ-ПРОГРАММИСТЫ С УЯЗВИМОСТЬЮ НУЛЕВОГО ДНЯ
такой наивняк
да-да, гугл просто так создали project zero от нехуй делать, просто бабок дохуя, заняться нечем. Ведь зиродеев вообще нет, это не опасность ни разу, митигации сделали эксплуатацию невозможной, только бэкдоры для ЦРУшников и прочих Джеймс Бондов работают, остальное от лукавого. Кудах!
>а я этого не говорил. это уже твои манякопротивляния.
>Покажите мне хоть одну лоу-лвл ошибку за последние 10-15+ лет, которая хоть как-нибудь влияла на безопасность пользователя, а не просто крашила ему аппу.
Ну и что, подумаешь, переизбыток на эскалацию привилегий во всемирно известной ОС, которую юзают миллионы людей, тьфу! Подумаешь, можно удаленно исполнить код через дыру в Сафари, ха! Там же все в сэндбоксе крутится, никому ничего не грозит! Байтоебство не нужно, лоу-лвл безопасность - пережитки 90-ых! Ку-ку-ку-кудаааах!
> Ку-ку-ку-кудаааах!
аргумент зрелого байтоёба
>Покажите мне хоть одну лоу-лвл
но вы ведь так и не показали. stuxnet - это хуита и разработка спецслужб. что тут ещё говорить?
вы так просто пытаетесь повысить свою ничтожную значимость, ребят. шли бы за дело нормальное взялись.
>ДЕЛАЕШЬ ВИРУСЫ ДЛЯ УНИЧТОЖЕНИЯ ЯДЕРНОЙ ПРОГРАММЫ ПРОТИВНИКА
Да нет,стухнет написали жиды без помощи каких-то там цру
Зиродей который был в этом черве они купили,все остальное написали сами
У анб и цру помоешный код,малварь на уровне говна с хакфорумс.Единственная сила у них это деньги и аутсорс,лол
>ИСПОЛЬЗУЕШЬ БЭКДОРЫ ИЗВЕСТНОЙ КОМПАНИИ, КОТОРАЯ ИХ НЕ ИСПРАВЛЯЕТ И РЕПОРТИТ ТЕБЕ
Зачем им это делать?Можно примеры таких ужасных уязвимостей кроме рце в smb v1?
Мне чет кажется что если бы они действительно были бы в сговоре,то получали баги бы поновее чем говно 30 летней давности
да. и жиды у америкосовских компаний ещё и спиздили подлинные сертификаты? чтож вы такие наивные то, байтоёбы
мир крутится не только вокруг байтиков, но и обычных человеческих взаимотношений.
Маня, какой же ты тупой
Импакт от эксплуатации лоу_лвл дыр настолько мощный, что сферический исследователь в вакууме, найдя дыру и сумев высрать под нее эксплоит (в реалиях 2к20 года - цепочка из нескольких эксплоитов), пропочтет продать ее на зиродиуме, нежели пытаться атаковать всех и вся, в век, когда тебя найдут даже если ты сидишь через левую точку доступа + tor + vpn + 2 виртуальные машины, одна из которых qubes, вторая из которых tails.
В 2к20 все бинарные эксплоиты in the wild - дело рук государств и их спецслужб, им нечего бояться. Обычным пирожкам можно только попать калькуляторы на специально отведенных соревнованиях, в противном случае тебя просто уберут. Ты поди клишированных фильмов про хацкеров пересмотрел.
>когда тебя найдут даже если ты сидишь через левую точку доступа + tor + vpn + 2 виртуальные машины, одна из которых qubes, вторая из которых tails.
пруфов конечно не будет, да?
у тебя пиздец крышу рвёт от твоих маняфантазий. и это ты мне говоришь про клишированные фильмы про хацкеров?
у тебя хоть один реальный кейс есть подобного? или информация настолько засекреченна, что известна только тебе и ещё двум анонам с двача? сразу видно человека с соц. проблемами
шапочку из фольги не забудь надеть.
Блин,правда наверное
Ведь жиды не могли спиздить эти серты как это делали авторы зероаццесов,ТДЛей,салити,газавата и прочей залупы тех времен
Нахуя компаниям этим заниматься,ебик?
слышал? был такой челик сноуден. представляешь, он говорит что якобы крупные американские компании поголовно сотрудничают с анб и цру. но я думаю он дурачёк просто.
>Ведь жиды не могли спиздить
могли, не могли. какая хуй разница? зачем им это делать, если у них спецразведка и цру в друзьях.
зачем ты придумываешь эти манякопротивляния? очевидно, что всё гораздо проще. но видимо байтоёбам это не так очевидно, им нужны схемы с суперхакирами как в фильмах, потому что так круче.
Snowden: US and Israel did create Stuxnet attack code
https://www.theregister.com/2013/07/08/snowden_us_israel_stuxnet/
Настолько, что через эксплуатацию лоу-лвл дыр возможно исполнение произвольного кода от имени уязвимого процесса (в других типах уязвимостей, не связанными с памятью, это БОЛЬШАЯ редкость)
Отсосать большой черный хуй
Иди нахуй из асмотреда,кабанчик ебанный
Тебе же еще надо договориться с трендмикро чтобы они тебе бекдоры и серты подарили
Нет, просто несчастный случай. Он тихий, ламповый реверсер, который вряд ли кому-то переходил дорогу.
>>746252
кстати вот удалось найти в одной старой проге переполнение когда грузишь кривой сохраненный файл. в отладчике выполнение вываливает на те же самые байты как в файле. кроме 90 и прерывания не придумал что туда запихать. хотелось похачить, в итоге оказалось, что вручную слишком много патчить. ключи для нее и так есть. это кстати большое поле для экспериментов. для вин рара такое читал что есть. читал креклаб и доставило как там патчили прогу чтобы она сама себе ключ подбирала (там были не сложные ключи).
Значение знаешь? У меня уже больше года парочка kernel information disclosure багов валяются, это их не делает zero-day? Надо бы зарепортить кстати, да все руки не дойдут.
Алсо, если кто будет пилить перекат, прочитайте этот и предыдущий тред и обновите шапку в соответствии с пожеланиями анона.
что тут васянского?
имхо вообще сложно пиздец, а чтобы заработать - надо реально много знать. курсов не хватит. полгода-год безвылазно обмазываться придется.
Полгода-год? Лолшто? Это для ссаного веба мб, для байтоебства нужно годика 3-4 поебашить как минимум, чтобы из себя представлять хоть что-либо.
Я другой анон
Далеко ходить не надо. Wanna Cry в 2017 распространялся через эксплоит, который использовал переполнение в куче в протоколе SMB. Последствия - сам понимаешь.
Ало,крис касперский это не невесть какой спец
Ну а ты попробуй пару лет подряд питаться только гречкой с каклетками и сидеть у компа по 12 часов в день
Если бы полгода-год. Нужно уметь прогать, реверсить, знать архитектуру и устройство ос, шарить в продвинутых топиках и тулзах, даже матан нужен, внезапно!
start proc - она же entry point.
Под фиолетовыми стрелочками: почему при запуске ss и es связаны с ntdll.dll?
Инструкция от начала красной стрелки вызывает исключение, которое не могу побороть. Я буквально не могу понять, что происходит, кроме, разве что, проверки, в каком месте загрузилось приложение. А почему регистр стека не nothing, почему память не может писаться по этому адресу - не понимаю.
>Попробуй насри в память в пайтоне или джаве.
Берешь и находишь дыру в интерпретаторе. Как будто есть какая-то принципиальная разница с лоу-левел эксплойтами.
Атака на инфраструктуру языка != атака на программу, написанную на языке Х
Вообще не обращай внимания на сегментацию в винде, у тебя (кроме fs/gs) базы у всех сегментных регистров ноль, а лимиты ~0, то есть абсолютно похуй, через что адресоваться.
Неа, не заработало. Если отредактировать границы сегментов, то тож не заработает.
нашел https://reverseengineering.stackexchange.com/questions/13000/why-does-program-fail-to-run-under-several-debuggers
но не вижу левых библиотек и тредов, да и в целом процесс загибается на 9 инструкции после точки входа - хуйня какая то
А откуда этот код, который подозрительно напоминает шелкод? Может, ты его распаковывал и распаковал криво? Может, там TLS initializers? Может, там какие-то длл, которые грузятся раньше и что-то с ним делают?
Спасибо
на юниора или на фулл вакансию?
блядь ну ты и пидрила конечно,предупреждать надо что малварь реальная
https://wasm.in/threads/popytalsja-ustroitsja-v-dr-vehb.28198/
По детектам с вирустотала идет win 32 maya
Судя по гуглу они не меняли его уже несколько лет,лол
Можешь сам тредик почитать
> В иде поставил флаги
Мог бы с тем же успехом у себя на лбу написать. В файле правь, а не в базе иды. Винда про базу ничего не знает, отлаживаешь ты файл.
Вы видите копию треда, сохраненную 5 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.