24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда. Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Инструменты для 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) Остальное
В машинном коде к регистру ESP прибавляют 0xffffff80, это на 127 меньше чем 0xffffffff, но вопрос не только почему 127, почему по сути стек растет с конечных адресов. Это норма? Я думал он со середины куда-то растет(к уменьшению или к увеличению)
>>1500019 > это на 127 > почему 127 Это дополнительный код. Отрицательное число. 0x100000000-0xffffff80=(~0xffffff80)+1=0x80=128
> почему по сути стек растет с конечных адресов В числе прочего - легаси. Раньше было так (считая с младших адресов): код, константы, инициализированные переменные, неинициализированные переменные, неиспользуемая память ... стек. Память выделялась вперед, к стеку, к старшим адресам, стек рос назад, к памяти, к младшим. Очень удобно, размер стека ограничен общим размером всех данных, кода и адресным пространством, и он не фиксирован. Так и прилипло. А сейчас это уже захардкожено в каждом первом процессоре, даже в тех, которые вроде бы умеют в любой вариант стека например, в ARM в нормальном режиме - будет расти, как сам решишь - он аж четыре варианта умеет, а вот в Thumb уже захардкожено.
В начале недели на редите в RE разделе был занятный пост о том, как челик начал потрошить актуальный BattlEye с его VMProtect-ом. В посте была только ссылка на бложик, но я никак не могу найти ни тему, ни сам бложик наверное я рукожоп и мое гугл-фу недостаточно сильно, а может разрабы надавили какой-нибудь своей EULA-ой и заставили все потереть. Может кто-то тоже видел/заинтересовался/схоронил?
>>1500019 >почему по сути стек растет с конечных адресов Мне понравилось сравнение Юричева - представь что ты студент и у тебя одна тетрадка память приложения для записи лекций и практических занятий всякие text/bss/heap/stack. Ты можешь их чередовать и потом ебаться разбираясь что и где записано или просто ебашить лекции с начала, а практику перевернув тетрадь с конца. Ну и как >>1500094 антон заметил, все эти правила - реализация конкретной архитектуры.
>>1499956 (OP) >beginners.re - "Reverse Engineering для начинающих"- Блядь, я по приколу скачал, не могу остановиться лол. Охуенно пишет. Очень нравится привязка к С, написал - хоп, посмотрел что высралось в годболт. Вообще класс.
>>1502542 >>beginners.re >связь между кодом на Си/Си++и тем, что генерирует компилятор, вбилась в его подсознание достаточно глубоко. Так и деградирует программист в типичного реверсера Дальше можно не читать.
А насм это точно про "низкоуровневость"? Макросы-хуякросы, строковые контсрукции; а я думал, мне тут будут пояснять как с mov и inc помещать "приветмир" на вывод.
>>1503195 > Как вам коллега? Очень плохо, до обычного уровня CppCon не дотягивает. Настоящие программы с множественным наследованием, интерфейсами и без символов она не реверсила, иначе презентация была бы о другом. Все, о чем она рассказала, знает любой C++-мидл, не являющийся реверсером никаким местом.
>>1503529 А насколько оно удобнее стало со времен конкурса? В то время плагин был совсем неюзабельным, reconstruct лажает, object explorer нинужен, больше там не было ничего. Проще свои скрипты писать.
>>1507031 >>1507969 >Бабла ща хватает? >Не хватает. Вот сейчас без рофлов: - Есть тут те, кто зарабатывает на жизнь реверсингом? Как к этому пришли? - Какие варианты вообще пристроить свою тушку сейчас существуют? Понятно, что самое явное из белого это AV, возможно поиск/продажа дыр заинтересованным. А из серого, помимо явной мальвари/сплоитов?
>>1509278 > функции экспорта Это значок ASCII-строк. Либо это forwarded-функции, т.е., указание лоадеру брать функцию из другой длл (у строки формат "ИмяДлл.ИмяФункции"), либо IDA ошибочно распознала функцию как строку, такое бывает.
>>1509459 Как это работает? Во время загрузки изображения в память, загрузчик автоматически проставляет переходы? И при вызове этой функции, напрямую вызывается функция из другого модуля, правильно?
>>1509472 > И при вызове этой функции, напрямую вызывается функция из другого модуля, правильно? Правильно, если при ресолве импорта загрузчик видит, что экспортируемая функция - это форвард, он подгружает целевую длл (которая до точки) и ресолвит функцию оттуда.
>>1510020 > как мне самому собрать Положить вместо адреса функции строку с именем форварда, при этом, чтобы она была воспринята как имя форварда, а не как эспортируемая переменная, эта строка должна находиться в пределах директории экспорта.
Пример на fasm: MyFunc: ret ; Обычная функция для примера. ... data export export 'MYDLL.DLL',\ MyFunc,'MyFunc',\ ForwardName,'ForwardedFunc' ForwardName db 'KERNEL32.ExitProcess',0 end data
>>1508721 Хороший курс, просмотрел первую часть, узнал больше вещей, чем за все курсы со степика и прочих онлайн дрочильнь, в которых кроме жиденького ОПП ничему не учат.
>>1511634 Если компилятор поддерживает интринсики, то асм совершенно необходим только в обработчиках прерываний и для переключения контекста. Буквально полсотни строк на весь проект. Остальное отлично делается интринсиками.
>>1511664 О, вылез очередной скриптохолоп со своей сермяжной правлойtm А ничего что это реверсинга тред и тут похуй на чем ты та накропал свое говно? Нам же за тебя, обосрыша, разбирать твои какули.
>>1512051 Вопрос конечно глупый, но есть же какие то штуки, которые можно попробовать. Вот я открыл его в hex редакторе и заметил там одну деталь. Повторяющиеся почти одинаковые последовательности. Че дальше хз
>>1512358 А ты уверен, что тебе нужно лезть в бинарное представление данных? Я вижу 4 цвета, которые можно раскодировать в 00, 01, 10, 11 тупо читая файл построчно любой либой для работы с PNG. Непонятно правда, что означают прозрачные блоки, да и над присвоением комбинации цвету нужно повозиться, но это вопрос простого перебора.
>>1512718 > 4 цвета, которые можно раскодировать в 00, 01, 10, 11 Этого явно недостаточно. Пока моя самая гениальная мысль состоит в том, что семь сегментов на картинке - это битовые плоскости, которые потом собираются в байт.
>>1513346 >Это задача для 10 класса Если не шутка, то меня сейчас немного задело.. мимо-другой-анчоус А можешь саму задачу в оригинале скинуть, может там в контексте какие-то подсказки есть? Просто явной, школьного лвл-а, стеганографии текстовые чанки, EXIF, вставки после IEND в файле не вижу. В самой картинке в разных BitPlanes режимах подсказок тоже не увидел хотя картинка большая, может конечно где-то что-то проглядел...
>>1513422 Скрин задачи не кину. Олимпиада закрыта уже. Но там ничего не было. Задача называлась цифровизация. Задание было "расшифруйте. В ответе запишите фразу"
>>1513448 может попробуй наложи куски у которых голубые квадраты по угам и смотри где цвета на всех шести совпадают, то там 1, иначе 0 или я хз. ПРИДУМАЙ ШТО-НИБУДЬ
Пишу, значит MESS1 db "privet $" MESS2 db 0dh,0ah,"kak dela? $" MESS3 db 0dh,"chto delaesh? $" MESS4 db 0ah,"jasno",0dh,0ah,"$" Эти сообщения выводятся ровно в столбик, как и положено. Почему?
>>1514648 > Эти сообщения выводятся ровно в столбик 1) Используешь недоэмулятор (DOSBox в дефолтном режиме или NTVDM), который трактует \n как \r\n. Возьми образ доса и нормальную виртуалку или сделай в досбоксе boot msdos.img для полноценной эмуляции - увидишь разницу. 2) kak dela выводится, но тут же затирается следующей фразой, ты не должен его видеть даже если у тебя пункт 1.
>>1514918 Кстати, а ведь зачем писать 0dh, если 0ah это перенос на новую строку? Если мы переносим курсор на новую строку, то он по умолчанию должен быть в начале строки, ведь строка новая.
>>1514932 > то он по умолчанию должен быть в начале строки, ведь строка новая Нет. Ну то есть в 2019 да, но легаси. Пока не смыло, смотри сюда: >>1484880 Если ты возьмешь нормальный дос, то увидишь, что после 0a позиция курсора внутри строки не меняется, меняется только строка. То же самое, после 0d строка не меняется, и ты можешь делать няшные спиннеры и прогрессбары, каждый раз затирая их новой строкой.
>>1514932 Видел старинные печатные машинки? Вот там машинистки делают так рукой справа на лево громко, хуяк, и печатают с новой строки. Тут тоже самое - 0dh (перевод коректи в начало строки), 0ah (просто переход на новую строку). >он по умолчанию должен быть в начале строки Только в твоем сознании зумера, фактически раньше бы просто шагнуло вниз на новую строку.
>>1515059 Судя по слову "dataseg" - нет. А вообще, да. Желательно, чтобы одновременно используемые переменные лежали рядом, чтобы они не вылетали из кэша, и все такое.
>>1515063 У меня в методичке именно dataseg, а не .data. По значение порядка там напрямую не написано, но судя по примеру, это действительно важно. Спросил здесь чисто чтобы развеять сомнения.
>>1515069 > У меня в методичке именно dataseg Я имел в виду, что для доса похуй. > скрин Да, тут важно, потому что фактически это структура, а не отдельные переменные. При нормальных ассемблере и преподе у тебя была бы структура.
>>1499956 (OP) Здравствуйте. Вообщем есть такая задача пик 1. Вот мой вариант решения. mov ax, 10110110b and ax, 10100010b xor ax, 10101010b sar ax, 2 not ax Препод говорит что неправильно так как. Алгоритм данного задания должен выполняться для любого числа. Я вообще не понимаю как это можно реализовать для любого числа. Может подскажет кто?
>>1515191 Ты на верном пути, но: маска в and у тебя явно неправильная - во-первых, она обнуляет по большей части четные разряды, а надо нечетные (разряды принято считать справа и с нуля), а во-вторых, она и один нечетный затрагивает; маска xor у тебя флипает нечетные разряды, а надо четные; и вообще маски по-хорошему нужно расширить до 16-бит, если ты с 16-битными регистрами работаешь; ну и вопрос выбора между sar/shr - спорный.
>>1515713 я официально в ассемблере не очень, тем не менее mov ax, 10110110b так понимаю что тут мы записываем число для издевательств and ax, 10100010b если это маска обнуления нечетных разрядов, то я написал бы её так: 10101010b маска в xor на мой взгляд правильная, как раз чётные разряды переворачиваются.
Есть шеллкод из метасплоита. Как сгенерировать экзэшник чтобы этот шеллкод был в сегменте текстаи при этом сам бинарник был корректный. Не важно, что он на рантайме крашится. Главное чтобы он просто создался
Кто то знает как именно можно узнать инфу про температуру и скорость вращения куллера проца? гуглил чип монитринга, который установлен на моей мат плате. Там обьяснено, но нихера не понятно
>>1516700 Может быть, не DOSBox, а окно консоли (NTVDM)? Да, так и должно быть, если ты запускаешь программу не вводом команды в консоли, а непосредственным запуском бинарника. Можешь воткнуть перед выходом ожидание нажатия клавиши (xor ax,ax int 16h или mov ah,1 int21h).
>>1517268 > как понять данные это или инструкции Никак. Исполняемый код - это непосредственно байт (или байты) на который в данный момент указывает IP (PC, или как он там в твоем процессоре называется). Все остальное вполне может быть данными. Или кодом. Или и тем и другим одновременно. Или даже несколькими параллельными потоками кода. Например, 68 5a 31 с0 с3 может быть данными, может быть кодом push 0c3с0315ah (с непосредственным значением, которое вроде бы данные), а стоит добавить к этому коду jmp $-4, и это становится вторым потоком кода, который делает return 0 (5a 31 c0 c3: pop edx, xor eax,eax, ret).
В ассемблере всякие jz, jl и подобные команды выполняют переход к команде с двоеточием в случае соответствия тому, что про них пишут? Например, в случае с
В ассемблере всякие jz, jl и подобные команды выполняют переход к команде с двоеточием в случае соответствия тому, что про них пишут? Например, в случае с:
>>1517344 Понятно, но по косвенным признакам то можно сделать предположение? Например, в ридонли памяти скорее всего лежат данные, в r/e - код. Какие еще признаки могут быть?
>>1517445 Да, будет 2. Все же читаемо в простых случаях: "compare ax with 1", "jump if it was lower".
>>1517460 Зависит от бинарника. Но вообще статически трейсят control flow просто, строят граф (естественно, это ломается на первом же виртуальном вызове или таблице переходов). Или тупо пытаются попробовать дизассемблировать, и потом либо оно обламывается совсем, либо ты можешь всякие эвристики притащить на тему странно выглядящего кода. Всякие избыточные инструкции, которые перезаписывают результаты предыдущих инструкций, ебля сегментных регистров, различные привилегированные инструкции, несбалансированный стек - это либо написано вручную, либо упаковано/обфусцировано, либо не код совсем.
Это нормальный алгоритм поиска количества вхождений строки в подстроку? Какие регистры тут лучше не использовать так, как я их использую здесь? На какие поменять? Я ведь в правильный тред пишу с таким вопросом?
> Какие регистры тут лучше не использовать Как минимум SP портить не стоит, иначе программа кончится, как только произойдет прерывание. Остальные регистры можно сохранять, если они тебе нужны и не сохранять, если не нужны.
>>1517344 Понял, спасибо. Человек же сразу почти видит, что перед ним, мусор из байтиков или код. В теории, какие-нибудь нейросетки тоже смогут различать?
Аноны, молю о помощи. Ищу годную книгу (офк, желательно на английском) по сетевой безопасности, желательно, которая совмещает теорию с кодингом по сабжу. Как пример для годного контента - ламповая книга Hacking: The Art of Exploitation 2nd edition 2008 года, там есть очень вкусная глава по сетям, которая совмещает описание различных сетевых атак со снипеттами с кодом для лучшего понимания. Проблема в том, что книге скоро 12 лет и там есть лишь одна глава по сабжу, а я ищу фулл книгу по подобной тематике и желательно поновее. Все, что находил до этого, унылый шлак с кучей теории и хуйней для скрипт-кидди вроде метасплойта. Погромирую на Си, крестах, знаю х86 асм, основы ОС (с явным уклоном в Линукс) и основы сетей + программирование сокетов. С меня цистерна чая и лучи добра с пожеланиями вечного здоровья и счастья всем, кто поможет. Заранее спасибо.
>>1518320 Не знаю. В x86 может и видно, а возьми какой-нибудь восьмибитный мк, да еще если не слишком хорошо архитектуру знаешь, и у тебя тут же проблемы.
> Хочу отобразить символы из нужной мне секции В Functions можно фильтровать по сегменту, в Names нельзя, import idaapi тебе в помощь или по адресу отсортируй и ищи нужный кусок.
>>1518584 Спроси более развернуто. По идее, код более-менее одинаковый, если, конечно, gcc с tcc и прочими "игрушечными" компиляторами не сравнивать. В основном все же влияет то, с какими оптимизациями код был собран, включена ли link time code generation и все такое.
>>1518938 >нахуя сажа то тред сагнул сага сага пасскод абу Вот ещё вопрос: Какой уровень знания языкаозначает, что ты не червь-пидор? Или так и надо - знать только то, что сделал сам? По вершкам знаю дохуя языков, могу понять чужой код, чтобы спиздить, а че-нить достойное жид хаба высрать не могу.
Ананасы, че там по эксплоитам в 2к19? Слышал, что появляются новые языки для системщины, вроде раста, который безопасный и сводит на нет все возможные ошибки, связанные с memory corruption. Когда яп немножко окрепнет, как можно будет ломать такое чудо? Это же пиздец. Он даже некоторые виды состояния гонки между тредами нивелирует, если код не будет писать совсем макака - пиши пропало.
Анонасы, как реализовать уникальную для каждого потока глобальную переменную? Пока вижу два варианта: 1. thread environment block ( использовать unused/reserved/padding ячейки ) 2. thread local storage ( __declspec(thread) global ) Кстати, кто-нибудь подскажет, как получить доступ к этой переменной из masm файла?
Ку, реверсач Есть ли ресурс наподобие overthewire, только более серьезного уровня, который хоть как-то связан с реальным миром, а не эксплуатацией ебучего хэллоуворлда?
Вы тут спрашивали куда реверсер может вырасти из ковыряльщика малвари, вот вам пример: https://vimeo.com/335166152 Красавчик мужик, крадет прямо из под носа у мягких целые ОС и тусит с няшами в командировках. Глянул ценник на посещение его двухдневного семинара, чуть в обморок не упал, несколько тыщ вечнозеленых, такие вот дела.
>>1519488 впаривать курсы по всякой хуйне всегда было оч выгодно. И не важно ойти это , лнп, пикап или еще что угодно. Суть уметь втирать дичь, а не быть спецом)
>>1519196 > уникальную для каждого потока глобальную переменную А чем тебя tls не устраивает? Оно уже 9 лет как в стандарте Си (_Thread_local/thread_local).
> как получить доступ к этой переменной Переменная в сишке создается? Тогда у тебя имя_переменной в том объектнике, и ты такой: mov ecx,[__tls_index] mov eax,[fs:0x2c] ; gs:0x58 для 64-битной винды mov edx,[eax+ecx*4] ; Укозатель на блок переменных в TLS. mov eax,[edx+имя_переменной] И все. То же самое ты можешь делать вручную, кладешь имя_переменной dd 13245 в секцию .tls$, а __tls_index для тебя создаст линкер.
>>1519503 > re4b И что? Ты точно не промахнулся с ответом?
>>1519537 > Какой же в этом дебагере низкий юзабилити. Он предназначен не для обратной разработки, а для отладки свеого кода. С доступными символами.
>>1519550 > А чем тебя tls не устраивает? Оно уже 9 лет как в стандарте Си (_Thread_local/thread_local). Может есть варианты лучше, решил спросить.
>>1519550 > Переменная в сишке создается? Тогда у тебя имя_переменной в том объектнике, и ты такой: В сишке. Нужен быстрый доступ, как в случае с TEB, те mov eax, [gs:0e8h]. Я так и не понял, могу ли я сделать что-то типо mov eax, globalvar_in_cpp_file ?
> Он предназначен не для обратной разработки, а для отладки свеого кода. С доступными символами. Это же единственный отладчик режима ядра, чем еще крашдамп анализировать? Что правда нет аналога xrefs? Как жить то..
>>1519651 > могу ли я сделать что-то типо mov eax, globalvar_in_cpp_file Нет такой магии. Разве что ты будешь код для каждого потока дублировать в память, и при старте впатчивать вычисленные адреса thread-local переменных прямо в код.
> Нужен быстрый доступ, А кто мешает? Выделяешь один регистр под это. В начале треда/процедуры выполняешь первые три строки из кода, который я выше постил. Кладешь результат в какой-нибудь ebx. Когда нужна переменная - ходишь до нее через [ebx+имя]. Если жалко ebx, можешь выкинуть стекфрейм нахуй и использовать под TLS ebp, а к локальным переменным на стеке адресоваться через esp. Если стекфрейма жалко, просто кладешь вычисленный адрес TLS в стек, тогда доступ будет mov eax,[ebp+tls_addr_in_stack], mov eax,[eax+имя].
>>1519733 Дело в том, что это каллбек с неопределенным количеством аргументов, который передает управление в другое место в зависимости от индекса, который я загружу в eax регистр. Придется шифтить аргументы туда сюда, чтобы освободить регистры и моя асм портянка из пары строк кода разрастется на экран в лучшем случае... А для меня это боль, ибо я не гуру асма..
Ананасы, помогите советом. Хочу глубоко вкатиться в exploit development, есть неплохая база для этого (Си, кресты, асм х86, знания основ ОС, базовый уровень реверсинга и эксплуатации простых уязвимостей). Сразу говорю, отговаривать меня от этого не надо, в моей стране это более востребовано, чем в странах СНГ, и в этом работают здесь далеко не невыездные тарищи майоры за 40к рублей в месяц. Суть: как сделать так, чтобы хотя бы пригласили на собес, а не выкинули резюме в мусорку при подаче оного? Подрочить pwnы на HackTheBox? Или сходить на CTFы пару раз? Ведь на реальных примерах это не показать, ибо, ясень-пень, незаконно.
>>1520064 1) Напизди в резюме про опыт работы; 2) Закидывай резюме вообще на все вакансии (даже смежные) на похуй (большая часть всё равно не ответит ибо висит на сайте из-за проёба хрюш); 3) Ходи на все тусовочки по теме.
>>1520064 Забугром без сертификатов тебя никто на работу не возьмет. На HTB нужно быть в топе, чтобы это хоть что-то значило для работодателя. Ну и вся мякотка в том, что не бывает джунов в этой теме, ты либо компетентен и тебя нанимают для выполнения реальной работы, либо ты сидишь дома и учишься, получаешь сертификаты и становишься компетентным.
>>1520471 но сертификации есть только по веб-хакингу, который к бинарой эксплуатации не имеет никакого отношения. Ну и про сетевой безопасности там что-то, но по реверсу и разработке эксплоитов я не видел.
>>1521676 > но сертификации есть только по веб-хакингу, который к бинарой эксплуатации не имеет никакого отношения. Ну и про сетевой безопасности там что-то Прикинь, это 90% всех сплоитов. Еще скажи, что JS учить не хочешь, а придется. https://www.giac.org/certifications/get-certified/roadmap
можно как то не особо сложным способом вставить свои опкоды в x86/arm линуксовую либу и прыгать в них а потом обратно?
и вопрос по иде. есть игра только с арм либами, соответственно она под эмулем работает через гудини. Пробую дебажить через x86 сервер, ида логично посылает меня нахуй, пробую армовский но ида коннектится к процессу и сразу отваливаентся. У меня выбор только арм виртуалка или физ устройство?
Знаю, что вопросы не по теме, но также знаю что здесь сидят нужны эе люди.
Есть одна игра и два человека, которые написали ботов, которые распознают экран и не лезут в память. Одного банят, второй спокойно играет. 1. Как можно задетектить бота, который не лезет в память, и единственное что делает это эмулирует нажатия на клаву? 2. Как может быть, что за эмуляцию одного банят, а второго нет? Может зависеть от способа эмуляции нажатия?
>>1522566 > Одного банят, второй спокойно играет Один жадюга фармит 24/7, другой ставит на пару часиков. Бан скорее всего ручной, по логам.
> Как можно задетектить бота, который не лезет в память, и единственное что делает это эмулирует нажатия на клаву? Есть несколько способов сделать это из юзермода. Низкоуровневый хук мыши и запрос операции ввода мыши.
Дай угадаю, игра WoW? Они как раз второй метод используют.
>>1522600 >Один жадюга фармит 24/7, другой ставит на пару часиков. Бан скорее всего ручной, по логам Хз хз, один делал рыбалку, второй гоняет по квестам. Возможно, они просто детектят все эмуляции именно на рыбалке и игнорируют остальные.
>Есть несколько способов сделать это из юзермода. Низкоуровневый хук мыши и запрос операции ввода мыши. >Дай угадаю, игра WoW? Они как раз второй метод используют. То есть нарушают законы и пишут малварь? Им же никто не давал разрешения хукать мои процессы. Нет, игра Lost Ark из новых.
Реверсач, привет Я начинающий реверсер, хорошо знаю асм, си и кресты тоже хорошо знаю, но вот заметил, что статический анализ даже относительно простых крэкми занимает у меня довольно много времени, плюс у меня есть постоянное желание рисовать стэк на бумаге, чтобы помочь себе не запутаться по ходу анализа. Мб я неправильно юзаю софт, мб есть акие-то фичи, чтобы реверсить быстрее и без использования листочка? Или нужно просто очень много опыта и нет никаких фокусов/трюков для облегчения самого процесса реверсинга в плане "не потеряться"?
>>1522604 >То есть нарушают законы и пишут малварь? Коммерческие античиты очень многое себе открыто разрешают прямо в EULA. Не удивлюсь, если в темную они используют совсем уж грязные способы детекта. В конце концов, раз речь идет о деньгах, то прайваси потребителя может и сходить найух.
>>1522600 >Низкоуровневый хук мыши и запрос операции ввода мыши. по факту всё это можно обойти просто юзая посредника в виде железного эмулятора клавомыши на стмке к примеру?
Сап, реверсач Имеет ли место быть бинарная эксплуатация в языках типа раста, джавы, сишарп, где сложно выстрелить себе в ногу из-за автоматизированного мемори менеджмента? Или все эти ваши зиродеи только в дырявых сишечке и плюсах? Я говорю именно про разного рода переполнения, юафы и т.п., не про веб-атаки
>>1524074 Запусти игру в виртуалке. поставь Из хоста поставь процесс виртуалка на паузу, сдампь память волатилити, извлеки из дампа всей виртуалки только память процесса игры. Античит даже не поймёт, что игру прерывали
>>1524865 Античит может обнаружить присутствие гипервизора/отладчика и прочий известный инструментарий. Вообще каждая игра может быть запущена отдельно от античита на какое-то время, этого вполне достаточно чтобы сделать дамп.
Нужно добавить секцию в файл программно, читаю файл в заранее выделенный буфер, через ReadFile. Что дальше то делать? Просто добавить описание секции в хедер, указать на пустой участок памяти и сделать запись в файл?
>>1525635 Если в OptionalHeader.SizeOfHeaders заголовок секции влезет - то все так. Если не влезет, придется расширять последнюю секцию. Ну еще про выравнивание в файле и в памяти почитаешь.
Реверсач, сяп. В каком из регистров или где именно в стэковом кадре может храниться количество переданных аргументов в функцию конвенция cdecl, разумеется? Или хотя бы оффсет к стэковому поинтеру как узнать, чтобы вычислить это количество?
Если что, в асмах не разбираюсь нихуя, так что нид хелп.
>>1525750 Эта инфа не хранится в регистре. Когда у тебя начинает стэк фрейм новой процедуры, обращение к аргументам процедуры происходит через [ebp+Z] где Z = 0x4, 0x8, 0xc... в случае 32-битного бинарника и 0х8, 0х10... в случае 64-битного бинарника.
>>1525983 >>1525983 >через [ebp+Z] где Z = 0x4, 0x8 Но ведь я правильно понимаю, что аргументы энивей будут хранится в стэке, причём в 4-байтовых блоках, и рядом с друг другом? Алсо я сам себя наебал с cdecl, оказывается в моём случае - смешанная конвенция, где какая-то часть (в зависимости от арх-ры) аргументов пиздует сразу в регистры, а та что не влезла - по старинке в стэк. И если это так, то как мне тогда в сишечке достать те, что попали в регистры, без ассемблерных заплаток?
>>1526045 Да. Просто повтори конвенции, чтобы не путаться. Алсо, для сисколлов есть своя конвенция, там как раз-таки аргументы хранятся в регистрах. Для реверса плюсового кода тоже есть свои конвенции, ибо там есть ооп (например, в ecx/rcx хранится указатель на объект). Конвенции различаются даже между 32 и 64 битными бинарями. Расписывать это здесь не имеет смысла, ибо есть гугл. Когда наберешься опыта в реверсинге, то уже будешь помнить все наизусть.
>>1521764 Не пизди. Есть очень много уязвимостей именно в бинарниках, которые с веб-атаками не имеют ничего общего. Веб-атаки и бинарная эксплуатация - разные отрасли тащемта.
>>1524865 hiberfil/pagefile можно так использовать? все нативно, никто ругаться не будет. игру свернул (если настройки и оперативка позволят оси передвинуть ее в подкачку) или просто гибернацию нажал и потом с харда переписал на другой системе.
>>1519156 иногда можно зайти с черного хода или вообще через канализацию. от виртуалок и работы с микрухами памяти до еба-скоростных логических девайсов на шине проца.
>>1526045 > И если это так, то как мне тогда в сишечке достать те, что попали в регистры, без ассемблерных заплаток? Писать ассемблерные заплатки. Точнее, там всего несколько простых инструкций, поэтому проще всего захардкодить их и динамически собирать враппер из твоего __usercall в какой-нибудь __stdcall (и/или обратно), выделить память с флагом на выполнение и положить туда этот враппер.
>>1525661 Вот эти выравнивания и rva/va на диске не вкуриваю. Что есть база файла хранящегося на диске? OptionalHeader.ImageBase? Есть вообще какой-то инструментарий для подобных махинаций, винапи/макросы в каких-нибудь майковских хедерах?
>>1526239 На диске у тебя офсеты от начала, никакой базы. А вот в память файл грузится по image base (или не по ней, но тогда все немногочисленные виртуальные адреса исправляются на разницу между записанной image base и реально использованной).
> Вот эти выравнивания и rva/va на диске не вкуриваю > VA Просто адрес в памяти внутри образа > RVA Дельта относительно использованной при загрузке image base, т.е., GetModuleHandle(...) + RVA = VA.
> Есть вообще какой-то инструментарий для подобных махинаций PE file editor в ассортименте.
> винапи/макросы в каких-нибудь майковских хедерах Есть в основном недокументированные LdrXXX и RtlImageXXX, есть макросы в winnt.h, но это все в основном для чтения.
>>1526132 >Да. Тогда наверное, я чего-то не понимаю
int funct (int n,...) { char ptr = &n; // теперь поинтер указывает на первый байт первого аргумента в СТЭКЕ, не так ли?
/далее поБАЙТово (изза врожденной паранои) прогоняю/ /поинтер назад и вперёд с радиусом в 1 килобайт/ /можно и с большим, но не думаю, что поможет/ ----------> /ни ОДИН из переданных аргументов с мэйна не/ /засветился*/ } То есть, судя по всему, аргументы хранятся исключительно в регистрах. Либо поинтер указывает вовсе не на то, что я думаю. Алсо подозреваю, что если в самом начале вызвать любую функцию, то эти аргументы по выходу из неё проёбываются в небытиё; так как КДбг показывает, что нужных значений в регистрах уже нет, а попытка найти их тем же способом также провальна.
>Просто повтори конвенции, >The registers RDI, RSI, RDX, RCX, R8, and R9 are used for integer and memory address arguments and XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6 and XMM7 are used for floating point arguments. >For system calls, R10 is used instead of RCX. Additional arguments are passed on the stack and the return value is stored in RAX.
Очень похоже на мой кудахтер, только зарезвервированных регистров не 6, а 14.
>>1526368 > теперь поинтер указывает на первый байт первого аргумента в СТЭКЕ Или на первый аргумент, который был сохранен из регистра в стек, потому что компилятор очень хотел сделать то, что ты сказал, но у регистра взять адрес не очень получалось. Что ты сделать-то хочешь?
>>1527254 >каспер монополист >дрвеб это бренд, а не рабочий продукт и реверсеры им не нужны чтобы зарабатывать >есет в россии нет ресёрч центра >груп биби это даже не авре, но тоже монополист. зарабатывает на том, что каспер делает бесплатно или вообще забил и не делает. задрал цены, зажал зарплаты и нанял толпу прогеров писать нахуй никому не нужный российский клон снорта и арксайта лижбы впарить его втридорога всяким газпромам. а реверс им нужен, но платить не хотят. хотят вчерашних студентов ситиэфщиков за еду обещая должность деректора через 5 лет.
>>1527252 >виндеф Только щас понял, что ты говорил про встроенный в десятку дэфолтный виндеф. А я ещё туплю мол при чём тут виндовс когда мы говорим про хуёвую работу в рф
>>1527258 >полностью согласен,я бы даже сказал пидарасина Как я рад, что кто-то согласен. А то у меня 2 знакомых к нему пошли и один планирует. Удивляются почему я носом ворочу и не соглашаюсь в гиб переходить. А у тебя к нему какие претензии? Может и тут сойдёмся?
>>1527259 Мерзкий тип он,посмотрев его интервью,с этими "Смотрю им в глаза на задержаниях","Ух сука бля всех бы нахуй посадил",рассказами что он хотел пойти в ментуру,но его просто не взяли. От этого всего у меня о нем складывается впечатление,что он такой обиженный,но при этом полностью уверенный в том,что делает супер-пупер-добро всему миру когда ловит ужасных преужасных блечеров Ну это помимо того что он педрилло которое сидит на госконтрактах и пиздит бабки
>А то у меня 2 знакомых к нему пошли и один планирует. Я хз,смотря на ЗП всех этих пентестеров,реверсеров и прочих в ру конторах,которая редка превышает 100к и чет прям у меня непонимание,кто туда идет. Уж лучше малварь пилитьмы не одобряем
Так сколько платят по итогу? Вчера елозил по ххрю, на первый взгляд 80-150к выходит на рядового реверсера. В Dr.web уже год висят вакансии на джуна вирусного аналитика и обычного вирусного аналитика. Мало платят что-ли? Ну не верю я, что меньше 60к.
>>1526974 >Или на первый аргумент, который был сохранен из регистра в стек, Это точно не так - принтом выдает первый обязательный аргумент n, expected. Поинтер, согласно отладчику, хранит адрес 4(%rbp), что похоже на истину. Если начать дальше сдвигать его вверх будь-то по байту, или 4 байтам, то необязательных аргументов не видно совсем.
>Что ты сделать-то хочешь? Хочу понять куда проебываются остальные аргументы после вызова любой другой функции в int funct(), раз. Второе, просто понять как работать с этими функциями в таких конвенциях на высокоуровневом языке, просто для себя, уж больно зацепило.
>>1527315 Подержу в курсе. Сейчас глазками пробежался по ассемблеру из клэнга, и моих знаний хватило на вывод, что необязательные аргументы в регистрах просто-напросто испаряются нахуй перед вызовом подпрограммы. Подозреваю, что в гцц та же морковь. Наверное конпеляторы думают, что если у объекта нет имени в исходнике, значит хуй с ним, понимаешь, так и говорят, хуй с ним, зачем это говно нам в стэк кидать
>>1527315 > понять как работать с этими функциями в таких конвенциях на высокоуровневом языке Да никак, врапперы писать или динамически генерировать. Максимум, что тебе сишка дает - это variadic-функции (которые с точечками - void foo(int first, ...)) и va_list/va_start/va_next для них, а уж дальше оно само.
>>1528149 Так это все равно мало сука Очень блядь мало Посмотри сколько получают всякие макаки на жыэсе и прочем и сравни уровень знаний который должен иметь средний макак и средний реверсер уж лучше пилить моды всяких isfb за 5к долларов в месяц,чем дрочить семплы на потоке за 60 ссаных к в МСК
>>1528159 Не знаю. Не стал допрашивать. Подозреваю, что мне бы чуть больше 100к предложили. Хотя есть люди, которые на 50 евро в час в какую-нибудь германию уезжают. А иностранцы, которые в грите работают получают шестизначную зарплату в долларах.
>>1528168 шестизначную в долларах это в год,я полагаю? Нормально конечно,но сколько надо проработать на эту хуйню чтобы столько получать как-то меня это все портит настроение,когда я начинаю думать об этом.Вся эта срань с апт,аверы-хуяверы,шансы сесть в тюрьму,хуевые зп почти у всех на кой хуй я поперся сюда..пилил бы сраные сайтики и сидел бы довольный Единственный вариант который я вижу - спиздить откуда-то много биткойнов и всю жизнь заниматься любимыми делами,не боясь оказаться на улице
>>1528176 Почему?Уехал бы куда-нибудь в швейцарию,взял книжки по биологии и химии,ходил бы на лекции,нашел бы девушку с которой можно было-бы приятно проводить время,забыл бы нахуй это айти и прожил бы счастливую жизнь
>>1528179 юпд. прыгать со скал с парашютом,наслаждаться красивыми видами,даже можно попутешествовать и даже завести детей Эээх...Как бы хотелось прожить такую жизнь сук... >>1528176 да хер его знает,дрочить всю жизнь малваре в авлабе это тоже не верх интеллектуальной деятельности. +надоест быстро,я думаю Всякие великие штуки типа лекарства от рака ты без миллионов долларов и кучи свободного времени не сделаешь все таки
>>1528195 Я о том, что хватит мечтать и делай работу, что делает другая сотня людей. Ну и развивайся. А вот сидеть нихуя не делать 10 лет, и потом выпускать нечто гениальное уже менее полезно.
>>1528198 Да пошли вы в пизду тогда с своим программированием,в рот я вас ебал делать однообразную хуйню всю жизнь На днях займусь тем чем собирался,ты меня окончательно переубедил.
>>1528157 Макак как раз таки рыночек порешал, там сейчас дикий пердолинг фуллстек с кучей йоба технологий или иди гуляй, а реверсеров годами ждут и ценят. Только что погуглил, у джунов макак тоже в районе 60-80к зп. Вы переоцениваете сложность реверса, это абсолютно аналогичное по сложности осваивания ремесло и чем-то даже менее стрессовое чем программирование. Сидишь пердолишь семплы, никуда не торопишься, пока макаку ебут в жопу за проебаные дедлайны и говнокод.
>>1528300 кто ждет?на хх 1-2 обычно,если вообще есть,обновляются редко но в чем-то ты прав,а потом можно накачаться и сплойты пилить и продавать например
После вызова syscall, что происходит с потоком, который его вызвал? Ждет возврата, пока ядро обработает его вызов? Или система пропускает этот поток в ядро для обработки вызова?
>>1528721 Контекст потока сохраняется, переключается на ядро. А дальше либо ядро сразу обрабатывает вызов, либо откладывает поток в список ожидающих io. Когда все обработалось, контекст заменяется на юзермодный обратно. > пропускает После того, как eip/rip сменился, об этом уже сложно сказать "пропускает".
>>1528831 Так кто обрабатывает мой системный вызов? Системный ядерный тред из тредпула или у моего юзермодного треда меняется контекст и он выполняет всю работу?
Ахуеть, это вообще возможно? Статистика за год, если что. Это же нереально руками столько сплоитов найти. Может где-то на просторах гитхаба лежат навороченные фазеры ака кнопка бабло? Дискасс.
>>1530209 Кстати да, заметил что все крутые багхантеры долбят 1-2 конторы. Так они по-любому какой-то сканер ставят, которым им алерты выдает чуть что в инфраструктуре изменилось. Вангую у них там покрыто все, похлеще блекхетовский штучек. Ну не верю я, что они руками каждый раз аудит проводят по новой.
>>1529961 Я тебе одну вещь скажу, ты только не обижайся (с) Нравится ковырять бинари - ковыряй на здоровье. Кто-то готов тебе платить тебе, за то, что ты круто ковыряешь бинари - еще ахуеннее. Но, ты увидел скрин чувака, который, возможно, поднял бабла ковыряя дыры в софте и решил, что тоже так хочешь - wrong. ИМХО, возможно данный гражданин пиздит, возможно данный гражданин - официальный рекламный партнер H1 (сам не был их клиентом, но видел неоднозначные отзывы), возможно данный гражданин медиа представитель команды рабов NSA завлекающий соответствующих ботанов-аутистов работать на благо родины. Короче, я бы не стал доверять никаким красивым картинкам. То, в чем можно быть уверенным - шансы на успех минимальны, если ты хочешь только результат и при этом не наслаждаешься самим процессом.
>>1530284 Я уже давно хотел вкатиться в автоматику, а тут твит в глаза бросился, еще раз убедился в том, что нужно копать в эту сторону. Думаю здесь без автоматики здесь не обошлось, решил у анонов спросить что вы думаете по этому поводу.
Алсо, на счет бинарей, где можно скачать нужные мне бинари конкретной версии винды? Дллки беру здесь https://www.dll.ru/, но нужны экзешики и дрова в том числе.
Решил в Гидру вкатиться после семилетнего перерыва в реверсе (не сказать, что я блистал, но без Иды пару кейгенов написал когда-то).
0. В декомпиле не подсвечивается переменная в соседних никаким образом, когда на нее курсор наводишь. При скролле и курсор сдвигается. Нередко приходится выхлоп декомпиля в нормальный текстовый редактор копировать, чтобы удобно по нему ориентироваться. 1. Постоянно ломается что-то, когда переименовываешь локальную переменную. Она переименовывается в какое-то говно вида aQstack59 и вываливается ошибка по размеру данных. Видимо, простое переименование триггерит какой-то DataFlow-анализ, который почему-то обламывается. Если откатиться (не по Ctrl+Z, а через переоткрытие проекта), то может прокатить повторная попытка. 2. Снова переименование, но уже класса. Его можно переименовать в окне редактирования его полей, с вероятностью 80% это ломает вообще все. Можно переименовать в SymbolTree, но при этом у меня часть функций продолжили ссылаться на уже не существующий тип данных, через Clear Flow and Repair привязки исправилась, стерев при этом названия всех полей класса, которые я собирал по кусочкам последние два часа.
Декомпиль по сравнению с Идой конкретно в случае с моим бинарем очень приятный. Код генерит простой и пошаговый, а не эзотерическую околоолимпиадную магию с непрозрачным жонглированием битами, как это делает в моем случае Ида.
Не отрицаю, что я вообще не очень понимаю, что делаю, и, возможно, эти постоянные ошибки парой действий можно уверенно исправлять, не теряя проделанной работы, но такая нестабильность удивляет, ведь Гидру должны были сотни реверсомакак каждодневно использовать.
Можно ли заработать фрилансиром малварь реверсером? Самому ловить в ханипотах малварь, реверсить, писать яра правила и продавать их эксклюзивно какой-нибудь thread intelligence конторе.
>>1535964 >Малварь пишет исключительно школота и макаки малварь для целевых атак - нет а на обычной можно быстро заработать,а не жрать гордым дошик,а после пары лет идти в групиби чтобв работать за 50-60к и дальше сосать хуй уж лучше делать говномалварь с такими зп
>>1536277 > малварь для целевых атак - нет А ее пилят студентики какого-нибудь ИТМО/МГУ, макаки те же, но с мат. бэком. Тему с зп и карьерным ростом уже обсуждали, все в порядке. Уходи из треда, здесь белые шляпы обитают.
>>1537219 >А ее пилят студентики какого-нибудь ИТМО/МГУ, макаки те же, но с мат. бэком. Зачем тебе мат бэк чтобы малваре пилить?Почему именно студентики?есть же гос группы у которых бюджеты пиздец какие и там явно не студентота И почему они макаки?
>>1537267 >>1537270 Я к тому, что гуманитарий сможет написать что-то уровня хеллоуворлд-малвари, которую дятел расковыряет за часик под пивко или которую автоматика сама проглотит, но точно не малварь для целевых атак.
> Почему именно студентики?есть же гос группы у которых бюджеты пиздец какие и там явно не студентота Там как раз студентота и сидит.
> И почему они макаки? Потому что студентота, очевидно же. Нет опыта = говнокодят = макаки.
>>1537280 >Я к тому, что гуманитарий сможет написать что-то уровня хеллоуворлд-малвари, которую дятел расковыряет за часик под пивко или которую автоматика сама проглотит, но точно не малварь для целевых атак. У тебя какое-то странно представление малвари для целевых атак(Или у меня) Малварь для ца должно быть сложно отреверсить или что?(с автоматикой понятно,она должна быть наебана чтобы все нормально отработало)
>>1537285 У этого >>1536277 спроси, я без понятия какой смысл он вкладывает в это понятие. Даже малварь для целевых атак может быть написана школотой и макаками. Обычно для целевых атак используется спайварь и естественно ее должно быть сложно детектировать, анализировать и как либо маркировать.
>>1537291 Зачем тогда семенишь? Шифруешься, малварьщик? Кидай сюда свою малварь для целевых атак, посмеемся. Она как минимум должна быть уровня Cobalt Strike.
>>1537307 >Шифруешься, малварьщик? Да не особо если честно.Так,тыкаю сэмплы с твиттера разве что и смотрю что нового выходит на рынок >Кидай сюда свою малварь для целевых атак, посмеемся Я говорил что я ее делаю?Я говорил что я малварщик или тем более хороший малварщик? Че ты накинулся вообще? >Cobalt Strike Это который гуй под метасплойт?
>>1529961 Руками в серьезном софте практически никакие дырки не находятся, лол. Грубый ручной статический анализ бинаря, в котором несколько десятков, а то и тысяч, функций, да еще если он stripped - чисто физически нереально. К тому же, очень легко самому прощелкать еблом и проебать дыру. Ищут софтом (не только фаззерами, если чо), вручную долбят только подозрительные процедуры дополнительно. Найти уязвимость - полдела. Ее еще надо эксплуатировать (ну, или хотя бы вменяемый РоС написать), что с нынешними технологиями защиты не так просто. Ломать бинарь, даже с уже известной уязвимостью, при включенном ASLR, DEP, Full RelRo, ASCII armor, PIE - очень непросто. Если бинарник 64-битный, коих в 2к19 абсолютное большинство, то написать под него надежный эксплоит ОЧЕНЬ сложно, особенно если нет бага, который приводит к утечке данных (как в ошибке форматирования строки, но такие баги сейчас - большая редкость). Поэтому это энивей требует огромного багажа знаний в ОСях, структуре бинарников, да и вообще требует креативный и пытливый разум, поэтому не думай, что софт делает за исследователя всю работу, это лишь вспомогательная фича.
>>1537310 А нечего малварь здесь форсить, если у тебя деструктивный образ мышления, то не надо его распространять на других.
>>1537524 Там даже из коробки модулей на несколько метров. Тот же бикон можно в проксю завернуть, как он сам это делает с другими тулзами и отреверсить получится только хуй с маслом, потому что вся логика останется на тим сервере.
Ананасы, нужен хелп от +- дилетанта Написал лабу челику из интернетов, но он не может её сдать, потому что не может в ней разобраться, мол они такого не проходили, как сделать её примитивней я хуй знает, может у вас буду мысли, как упростить Ввести с клавиатуры строку с разделителями, поменять местами первое слово с последним, второе с предпоследним и тд, вывести результат Вот что я писал, он жалуется на непонятную обработку в мейне и чето блять с выводом ему не ясно, я уже не могу с ним разговаривать .model small
.stack 200h
data segment DelimChar equ ' ' ;символ, разделитель слов _STDOUT_ equ 1 ;описатель вывода на экран ;обрабатываемая строка String db 'loll goog bbooob suup mooling some paper to garbage' Len dw $-String ;сообщения программы CrLf db 0Dh, 0Ah, '$' msgSourceString db 'Instant:', 0Dh, 0Ah, '$' msgResultString db 'Result:', 0Dh, 0Ah, '$' data ends
code segment
Reverse proc push si push di jmp @@next @@while: mov al, [si] mov ah, [di] mov [di], al mov [si], ah inc si dec di @@next: cmp si, di jb @@while pop di pop si ret Reverse endp
main proc mov ax, @data mov ds, ax ;обработка строки lea si, String mov cx, Len cld ;реверс всей строки mov di, si add di, cx dec di call Reverse
@@Loop: ;пропускаем все разделители @@WhileDelimiter: lodsb cmp al, DelimChar loope @@WhileDelimiter jcxz @@Finish ;если строка закончилась - выйти ;найдено новое слово mov di, si ;(di-1) указатель на начало слова ;пропускаем все буквы слова до разделителя @@WhileWord: lodsb cmp al, DelimChar loopne @@WhileWord cmp cx, 1 ;учтём возможный выход из цикла по завершению строки adc si, 0 ;когда на первый символ слова будет указывать (esi+1) ;теперь слово выделено ;(di-1) - начало слова ;(si-2) - конец слова sub si, 2 dec di xchg si, di call Reverse xchg si, di add si, 2
test cx, cx jnz @@Loop @@Finish: ;вывод результатов mov ah, 09h lea dx, [msgSourceString] int 21h mov ah, 09h lea dx, [msgResultString] int 21h ;завершение программы mov ax, 4C00h
>>1538213 > как сделать её примитивней я хуй знает Зачем ты строку разворачиваешь, поехавший? Просто сканируй ее с конца на предмет пробелов и копируй/выводи найденное таким образом слово.
>>1538581 ну погугли историю про то как реверсили вмпрот, вот те же грабли. Ну и не чел а группа людей по предварительному сговору. охуилярд человекочасов.
>>1538581 Это время в пустую, разок ради ачивки разве что, другое дело если бы он автоматикой распаковывал и действительно нашел способ обрабатывать любые исключительные случаи вмпрота.
>>1538788 заладил ты со своей автоматикой. автоматика появляется только после ручных разборов лол. До этого макаки страдают и ждут пока кто то сделает/ Ну и вполне возможно что у них все же уже софтина почти/готовая. скопипащу:
>--> vmprotect 3 trojan unvirtualize <-- - сэмпл автоматика разбирала, сам дамп не рабочий. Но явно близко до выпиливания вмпрота из малвары с последующим восстановлением исходного кода. >DENUVO 1-3 (VMProtect 2.06 - удалось установить точную версию) в теории и "ломается" за два/три клика. Под "ломается" подразумеваю построение зависимостей HWID от набора секретных DWORD, вшитых в файл лицензии Origin/Steam. В ранних версиях за OEP даже ехать не требуется. Допишите "trace analyser" (анализ хендлеров VM и трассировщик с подавлением защиты целостности VMProtect готов, количество VM не играет никакой роли) для Denuvo_Profiler и будет Вам счастье
>>1538581 Там два этапа, распаковка это практически автоматика, а вот девиртуализация это примерно как собирать банкноту после перекрёстного шреддера, переваренную и высранную слоном. Если по-простому, есть два варианта - делать это полу-вручную, копаясь в слонячьем говне, для этого нужно быть человеком дождя, и сделать робота для сбора этой банкноты, что еще сложней.
>>1538788 >разок ради ачивки разве что >the main idea of this project was to verify whether Denuvo affects CPU usage and overall performance of this game
>>1537728 >потому что вся логика останется на тим сервере Это не усложняет реверс, а вообще делает его неприменимым. Я про дэфолтный бикон. На нём нет обфускации. Хексрэйс сами с ним спрявятся. А исходники метерпретора вообще на гитхабе лежат. И насколько я помню у коблаьтстрайка с метаслплоитом нет встроеных модулей чтобы их обфусцировать. Они скорее зашифруют длл, а потом инджектнут в тругой процесс чем будут пытаться что-то офусцировать на уровне asm кода. А именно сложность чтения ассемблера делает реверс сложным. Вот я и говорю, что раз не обфусцирован, то и реверсить легко.
>>1542898 Почему? Жизненный мем же. Всегда проигрываю с маня-хантеров, которые на серьезных щах пишут о том, как они нашли xss на васян.ру проставив ковычечки. Такое то достижение!
>>1542925 Мы и так знаем что ты в теме бро, не нужно вкидывать раковые мемы и объяснять их. Лучше расскажи из жизни что-нибудь по теме имела интересного
>>1543119 Ну тут ведь нету PWN CTF треда. А создавать я его не хочу, это ж напряги вот эти вот. А я себе баночку курнул, иду открыл, GDB запустил и развлекаюсь. Че, нельзя тут, гражданин начальник?
>>1543130 Я относительно ньюфаг, обламываю зубы об ЕАК пока, расковыриваю дамп, ковыряюсь пальчиком в ядре, пытаюсь байпас захерачить. У меня уже каждый кусочек железа в тестовой пеке там побанен наверно. А сам пейлоад писать да игру реверсить ума много не надо.
>>1543113 >а вокруг мои знакомые ковычки кругом тыкают да в бурпе сидят Как будто что-то плохое. Устав от реверса я вкатился в баунтихантинг. На пиво хватает.
>>1499956 (OP) Вкатываюсь в асм, есть годный учебник на пикрилейтед, но листинги кода там для FASM. А мне нужен годный учебник с хорошим введением в принципы работы процессора (не обязательно) и (обязательно) адаптированный под синтаксис TASM. Потому что в FASM нету отладчика под DOS.
Они не понимают философию асма, думают что асм нужен только для того чтобы кичиться им, как и кичиться владением других более высокоуровневых языков. Однако суть асма это работа, асм должен работать, хоть что-то делать, хоть складывать 2+2, но асм должен работать. Но я не вижу чтобы асм работал, одни заумные фразы, но по факту то ноль. Fasm придерживается именно такой филасофии - он для того чтобы делали.
>>1545230 Любой программист понимает, что понимание асма, это ключ к пониманию любого высокоуровнегого транслируемого языка и его компилятора. А также ключ к пониманию работы самого железа.
>>1545514 Ну вот я выше спрашивал про глобальный хук. Но ведь ничего не сделано же. Мне нужен глобальный хук чтобы прога за меня перепечатывала сообщения в игры, в которых отсутствует возможность вставить текст через ctrl+v, и вообще получить доступ к управлению приложением через посылаемые сообщения. Вы мне тогда не ответили про команду sleep и вот это продолжается. Это не упрёк вам, просто на этом можно делать деньги.
Попробую обобщить вышесказанное. В этой стране преобладает такое мнение, или я бы даже сказал атмосфера такая. Что все вокруг дохуя умные и значит дохуя хитрые. Но это АСМ детка. Научись писать на нём законченные приложения. Очень много предприятий нуждаются в асм-приложениях, просто они об этом не знают. Особенно предприятия занимающиеся торговлей, там где точность сократит расходы, сократит время сотрудников.
У них нет запросов, понимаете. А нет запросов потому что им какой-нибудь 1С-програмист сделал и всё, они и тому рады. А то что эта поверхностная поибень в 2к20-ом, он конечно же умолчал. Поэтому мы должны именно делать, мы должны дать понять людям что это не предел мечтаний, что можно ещё так и вот так. И всё, у них станут появляться запросы, высокоуровневые конечно же будут возмущаться и говорить нам какие мы бестолковые и ничего не умеем, но мы то будем делать, а они просто говорить.
>>1545700 Да че-то да, пива перепил. Хотел сказать что есть много задач которые можно решить асмом, но они не всплывают, потому что.. Потому что никто не задумывается, все живут в высоких материях. Я дра там компилят и прочее А эти потребности это деньги, но даже сам потенциальный клиент не знает что он нуждается в "моей" программе, это как бы суть эпохи. Ну и мне хотелось бы обсуждать этот вопрос, как, где, в какой области искать этих потенциальных клиентов, как им доносить что это им нужно.
Такой, очень гипотетический пример: Предприниматель занимается продажей помидор, у него скажем 100 точек. На каждой точке у него есть весы, на эти весы он покупает по, чтобы они вообще взвешивали. Этот предприниматель знает что один продавец сможет взвесить на этих весах 100 кг помидор в день, поэтому у него максимальный оборот 100 кг помидор в день. Но потом на одну из точек устраиваюсь работать я, и вижу что тут нужно всего 30 строк на асме и весы будут взвешивать в 10 раз быстрее, и предпринимателю не нужно покупать по на каждую точку, а нужно всего лишь заплатить один раз мне. Вопрос: как мне узнать в чём нуждается конкретный предприниматель? Как мне его убедить в том что он нуждается?
Пишу компилятор по туториалам и что-то не пойму как работает деление. Зачем надо это обьединение двух регистров? Почему для умножения, сложения и вычитания нам достаточно одного 64 битного регистра, а тут div работает только при делении 128 бит на 64? И почему если не написать mov 0 rdx, то выходит floating point exception? еще можно написать cqo, но я так и не понял что эта инструкция делает
>>1546582 >а тут div работает только при делении 128 бит на 64? Так у тебя на картинке 64-bit dividend и 32-bit divisor, откуда ты взял 128 и 64 бит соответственно?
>>1546582 > Почему для умножения, сложения и вычитания нам достаточно одного 64 битного регистра Нет, не достаточно. При умножении 64 на 64 результат может быть больше 64 битов, поэтому на x86 при 64-битном умножении ты получаешь 128-битный результат в паре rdx:rax.
Соответственно, чтобы получить при делении свои 64-битные множители обратно, тебе нужно вот это 128-битное делимое в паре регистров и 64-битный делитель.
В высокоуровневых языках эту проблему обходят, отбрасывая старшие биты произведения (если они есть) и делая размер частного равным размеру делимого. А раз компилятор пишешь ты, и размер делителя у тебя 64, тебе приходится использовать то, что умеет процессор, т.е., 128/64 деление, для этого ты расширяешь делимое до 128:
> cqo convert quadword to octword, она делает из 4x16=64-битного операнда 8x16=128-битный, расширяя бит знака из rax по всему rdx. Это для чисел со знаком, а для беззнаковых ты rdx просто обнуляешь.
>>1546993 > откуда ты взял 128 и 64 бит Ну очевидно же, что он под 64-битную машину пишет, а на картинке 32-битная. Суть-то не меняется.
На процессоре i8080 есть комманда 0х03 inx B, кто-нибудь мог бы объяснить что именно она делает? Это инкремент двух регистров ВС рассматриваемых как 1 число? Но как тогда обращаться с переполнением? Или это всё-таки инкремент обьекта по адресу (ВС)? Что-то я совсем запутался...
>>1547146 Да, inx инкрементириует пару (BC/DE/HL) или SP, указываешь первый регистр в паре. > Но как тогда обращаться с переполнением? Страдать, проверяя результат на 0 вручную, например. Эта инструкция вообще в основном требуется, чтобы по массивам гулять (инкрементировать указатель после LDAX/STAX/M у MOV - вот это все), и в таком варианте использования случаях тебе не особо нужно думать о переполнениях.
>>1548989 >>1548993 У античитов своя атмосфера. Им невыгодно сразу рвать жопу, иначе читописцы тоже подтянутся и придется рвать жопу еще больше, а единичных васянов вроде меня с кастомным дерьмом всех всё равно не заловишь. Они пытаются глушить наибольший текущий раздражитель в виде текущих коммерческих читов, не более. Поэтому работают по схеме что-то произошло - как-то отреагировали. Обычно это происходит мега-уебански и на полных похуях, например в одной игре недавно заблочили USB VID/PID всех мышей A4Tech, ибо некоторые из них могут макросы на антиотдачу на контроллере мыши исполнять. (уже представляю как афотеки выпускают прошивку со спуфингом ID). Кроме того, в паблик античитах стараются особо не параноить, по куче причин. В лиговых более параноидальный режим.
Про то, что практически все античиты это как минимум спайварь, я и говорить не буду. В 2013 esea умудрился даже майнить на компах клиентов, лол.
>>1549445 Кастомный драйвер понятие растяжимое. Я уверен, что смог бы отловить его на 100%, только если это не гипервизор другой уровень пердолинга, придется фазить гипервизор для поиска уязвимости и последующего детекта или загрузочный пакет UEFI. Кроме того, конечная точка любого софта - это процесс игры, следовательно его модификация, которую скрыть просто невозможно можно через SLAT.
>>1549844 А вот это пиздос конечно.. Может он именно малварь под видом читов пытался распространять? Просто как бот/кликер под 273 можно подвести? Да и кому прижало его в РФ искать за бота в забугорной игре?
Было у вас такое, что вы ресерчили/находили уязвимость, уже было хотели опубликовать результаты своих исследований, как вдруг в твиттере натыкаетесь на пост о том, что кто-то это уже проделал аналогичную работу и релизнулся? Пиздец, мне вот обидно стало, даже не знаю стоит ли теперь продолжать в этом направлении. И что мне теперь делать с этой работой? А я ведь ее несколько месяцев обсасывал и уже предвкушал лавры. Надо видимо заканчивать с этой деятельностью и искать нормальную работу :(
>>1549828 >Кастомный драйвер понятие растяжимое. Я уверен, что смог бы отловить его на 100%, только если это не гипервизор другой уровень пердолинга, придется фазить гипервизор для поиска уязвимости и последующего детекта или загрузочный пакет UEFI. Кроме того, конечная точка любого софта - это процесс игры, следовательно его модификация, которую скрыть просто невозможно можно через SLAT.
Рано или поздно проблему решат радикальным образом - у пекарастов отнимут швабоду нахер, введут анальный chain-of-trust на уровне EFI, забанят прыщеОС, а для "программмируевать" разершат использовать только вижуалстудию и только для зарегистрированных лиц с паспортными данными и под NDA.
>>1550120 Вангую, что это последствия линковки. Берутся, потому что так удобнее линкеру и компилятору. Второй вариант - разработчик сам обернул внутренний апи функциями с точно такими же аргументами (в виде задела на будущее), а компилятор увидел, что аргументы совпадают и заменил обертки на jmp.
>>1550275 > у пекарастов отнимут швабоду нахер Фантазии такие фантазии. Скорее x86 умрет, чем обычные пользователи начнут жить исключительно с подписанным кодом. На самом деле, худшее, что могло случиться с читами, уже случилось, и называется оно Google Stadia.
>>1550275 А смысл? Цепочка доверия и сейчас есть, читам она не мешает и никто особо не морочится чтобы её отключить, есть попроще способы поковыряться в ядре, чем в уефи лезть. Если на системе можно выполнять произвольный код, и есть драйверы от криворуких вендоров, её всегда можно будет сломать, как ни закручивай анальные гайки. В читерстве ты контролируешь систему и можешь легитимно привести её в произвольно уязвимое состояние, а обычно оно такое и по дефолту.
>>1550421 Стриминг-сервисам лет уже больше десятка. Стадию в гугле кто-то внедрил ради KPI, и она не особо. Хороши в этом плане разве что разработки OTOY, но рендерить лайтфилды обосрёшься. В любом случае, стриминг скорее наоборот приведет к необнаруживаемым читам. Уже сейчас в пиксельных аимботах успешно играются с ML, просто сейчас игра не стоит свеч.
>>1549828 Гипервизоры тоже довольно популярное дело, да. И модификация не всегда нужна.
>>1550583 Дыры драйверов от криворуких вендеров патчат каждый апдейт и добавляют в блэклист, ось их тупо не загрузит. В инсайдер версиях винды уже никакие дрова не работают.
> И модификация не всегда нужна. А как по-другому? Мышь эмулировать, да квадраты рисовать? Это еще проще спалить и софт выходит низкого качества.
В любом случае на текущий момент все античиты говно полное. Вангую им майки скоро подгонят интерфейс, типо threat-intelligence. Также в инсайдер версиях винды уже обкатывают легитимный перехват системных вызовов в ядре, скоро наступит пиздец всей малвари.
На процессоре i8080 есть parity flag, я думал он ставится в зависимости от четности результата операции(result % 2) Но сейчас прочитал в датабуке >>Parity: If the modulo 2 sum of the bits of the re- sult of the operation is 0, (Le., if the result has even parity), this flag is set; otherwise it is reset (Le., if the result has odd parity). Я правильно понимаю: он проверяет на четность сумму битов? Например: $0f+$01=$10=10000 -> parity=0 $04+$01=$05=101 -> parity=1 ?????????
>>1550793 > в зависимости от четности результата операции Ту четность ты можешь and-ом проверить. А эта предназначена для контроля целостности: ты берешь данные, дописываешь к ним PF и отправляешь по какому-нибудь модему. Принимаешь, кладешь в регистр и тестишь PF (вариант: аппаратно ксоришь биты между собой и инвертируешь результат). Если результат 1, то была ошибка при передаче, если 0 - при передаче ошибок либо не было, либо было больше одной 1-битовой ошибки.
> он проверяет на четность сумму битов Да. Или проверяет, что количество ненулевых битов четное.
Нужно добавить пустую секцию заданного размера во время компиляции в студии. Пробую вот так: #pragma data_seg(".sec") __declspec(allocate(".sec")) unsigned char buffer[size]; #pragma data_seg()
Работает, но если включить оптимизацию, то очевидно компилятор оптимизирует этот хак. Как это делается по канону?
>>1553156 Все равно исключал из сборки, но я разобрался, нужно было нулевой указатель добавить, как это делается при сборке TLS директории. А я был убежден, что должна быть какая-то директива для подобным манипуляций. По-моему уж где, а в студии должны быть такие вещи. Я уже месяц пердолюсь с этим PE-форматом и у меня реально голова болит от этого пиздеца, особенно от таблицы релокаций.
Ананасы, привет. Хочу написать фаззер средней паршивости в качестве проекта (не уровня afl офк, Москва не сразу строилась, но с чего-то надо начинать), че посоветуете покурить?
>>1556113 Программы, которые имеют выход в сеть (или либы, которые дают сетевой функционал программе). Совершенно очевидно, что фаззер должен будет искать в бинарнике функции инпута, которые получают и обрабатывают пакеты, и фаззить их. И иметь функционал black box фаззинга на случай, если нет исходного кода.
Мне нужно написать программу на ассемблере. Эта программа должна находить корень на промежутке a, b по формуле f(x)=x3+5x2–4x–20 с точностью до e. Е здесь это не число e, а просто переменная.
Вроде бы всё понятно, кроме одного: что значит "с точностью до e"? Если что, e здесь просто переменная, а не число вроде пи.
Вот, кстати, мне программу такую скинули, но мне кажется, что она как-то не правильно работает. Или правильно? Программа для ТАСМ. https://yadi.sk/d/8aVM6NhjK3fvcA
Объясните пожалуйста простым языком, зачем нужна метка в ассемблере? Я из этого определения не понял ровным счётом нихуя >Метка – идентификатор, который используется в программе и возвращает адрес памяти, по которому она находится. Метка – это главная форма взаимодействия с данными в памяти. Если метка используется в программе, то фактически на месте метки будет стоять адрес, на который она указывает. >Существуют разные способы определения меток. Простейший из них – двое-точие после названия метки. За этой директивой на той же строке может следовать инструкция или директива. Она определяет метку, значение которой равно смеще-нию, т.е. адресу точки, в которой она определена. Вернее, смещению следующей директивы или инструкции. Этот метод обычно используется, чтобы пометить ме-ста в коде, но ничто не мешает вам пометить этим методом данные.
>>1557363 Метка - абстракция для людишек, ибо гораздо удобнее воспринимать адрес как yobaaddress, нежели 0x0804f5a7. По той же причине, что и удобнее написать mov eax, 10 , нежели писать эту инструкцию в виде опкодов.
Пишу на маке. В универе начинаем копаться в tasm. Где можно без заебов начать на нем писать и желательно прогонять в каком-нибудь эмуляторе (все таки в маке регисторы дорогие, а я обязательно что-нибудь асмом сломаю себе ибо рукожоп). Гуглил много, именно для tasm не нашел нормального решения без пердолинга в жопу, XCode посылает нахуй даже препода и не хочет компилировать вообще ничего.
>>1558289 >clock cycles Понятие из электроники, как правило есть электрическая цепь, физически скорее всего расположенная на материнской плате, которая генерирует напряжение, например куски по 0 и 5 вольт, с некоторой частотой (генератор тактовых импульсов). Первая половина периода 0 вольт, вторая половина 5 вольт. И так пока компьютер включен. Зачем это надо? Синхронизировать работу регистров, то есть памяти, расположенных на интегральной схеме (центральном процессоре). Пока идет изменение от 0 до 5 вольт (это очень короткий промежуток времени), регистры работают, изменяют свое состояние, в остальное время они ничего не воспринимают и работают только элементы типо и, или, не, комбинированные друг с другом, чтобы получить желаемую логику. Эти логические элементы успевают выдать что-то на вход регистров, которые на следующем периоде в течение изменения сигнала с 0 до 5 вольт опять в зависимости от того что у них на входах меняют свое состояние. И логические элементы в зависимости от выходов регистров снова изменяют свой сигнал, выдавая что-то новое на вход регистров. То есть один clock cycle - это сам период, в первой половине которого напряжение выдаваемое генератором 0 вольт, а во второй 5 вольт, если например у процессора частота 3 Ггц, то этот период равен 0.3 наносекудны. Важно в нем переключение с 0 до 5 вольт. >machine cycles machine cycle это количество clock cycles, которое нужно, чтобы процессор выполнил что-то. Машинные инструкции, например, разбиваются на какие-то шаги, типо fetch, decode, execute, write. Fetch может например занимать 4 clock cycles. То есть при частоте 3 Ггц будет выполняться за 1.2 наносекунды.
>>1558908 Чому всё так слоожнооо?: Оказывается еще что в мануале под "cycles" понимается "machine cycles" а "clock cycles" - это "flags", но "flags" это так же и матоп флаги... Ааааааааааа!!!!!1 пасиб.
Почему на виртуалке могут не работать брекпоинты? Установил с офф. сайта 7 винду под VMware, а там такая засада. На соседней 10 винде такой проблемы нет, в настройках все перекопал уже. Если включить дебаг мод, то вообще система фризится по достижению бряка. Это гипервизор кривой или майкрософт накосячили?
Поясните. Есть отладчики, которые могут читать ввод из текстового файла и писать вывод в текстовый же файл, или хотя бы в стандартные потоки (stdin / stdout в глинуксе)?
Объясните кто-нибудь как реализуется многопоточность на языке процессора
В процессоре каждое ядро имеет свои собственные регистры, или регистры одни на весь процессор? Если второй вариант, то как работает тот же рендеринг на процессорных ядрах? Ведь там по сути всё идёт параллельно, а значит по логике, должнен быть отдельный набор регистров для каждого ядра. Но ни в одной книге по ассемблеру, или архитектуре процессора я не нашёл ни одного упоминания о том как работает многопоточность
>>1561015 Последовательность выполняющихся инструкций - это поток. Процессор инструкции выполняет? Тогда какие проблемы? У всех процессоров есть потоки (но не те, что в ОС), а у x86 есть даже задачи настоящие (только ими никто не пользуется).
>>1561582 Ну да, я это и имел ввиду, мне кажется не совсем корректно называть это потоками, тк это не объект, как в случае с абстракцией ос, тогда уж поток выполнения. Код выполняется на логическом/физическом процессоре (ядре).
>>1561751 Есть SASM Но он какой-то багнутый. Может это я криворучка, но у меня черезнего не компилился код, экзамплов, которые идут в комплекте с ФАСМом с оф сайта При чём при запуске через стандартный "IDE" если его так можно назвать, ФАСМА всё спокойно компилилось
А у меня наоборот вдохновение пришло. Составил себе список пет-проектов на год, книжки подобрал для чтения там Востоков опять годноту написал по отладке, windows internals 2 часть 7 издания выходит и еще много всего, листаю твитер в поисках годных блогов, слепил пару плейлистов на ютубчике, итд.
>>1561779 Убираешь import, пишеш: include 'api/user32.inc', вот там автоматические A/W макросы, как в сишке.
>>1561905 > Отложите дебаггер,вим,ИДЕ Да ты охуел! ну разве что вим Нет ничего охуеннее, чем лампово и лениво потыкивать одним пальцем иду в новогоднюю ночь! Всех с наступающим.
>>1561982 > лениво потыкивать одним пальцем иду в новогоднюю ночь Надеюсь ты найдешь себе в этом году,в кого еще можно было бы потыкивать пальцем :D >>1561951 ладно,всего хорошего вам тут аноны,будьте счастливы епт А я пошел
>твитер в поисках годных блогов >слепил пару плейлистов на ютубчике Всего подряд накидал, не сортировал еще, ссылок 100 вышло. Плейлисты буду собирать из выступлений на конференциях, их тоже надо посмотреть сначала.
Как следует реверсить встроенное программное обеспечение, которое работает в режиме ядра? Есть файл с расширением .fw - прошивка для Mi Band 3, мне необходимо вскрыть его в IDA Pro, и она не может даже определить архитектуру - а мне еще дебаг надо будет проводить, используя эмуляцию аппаратного обеспечения.
Часто возникает такая ситуация, что нужно проверить функционал какого-либо винапи, естественно открывать ide, лезть в документацию и подключать отладчик лень. Мб есть тулза/плагин для отладчика, в котором можно выбрать нужный апишник, указать параметры и получить всю необходимую информацию?
Прошаренные на месте? Я тут читаю System V AMD64 ABI и там указано, что rbx и rbp (еще r12-r15) - должны сохраняться и по завершению функции восстанавливаться вызываемой функцией. С rbp понятно, он указывает на основание стек фрейма, а у rbx в чем прикол, он как то исторически по особенному использовался/используется тоже или что? r12-r15 callee-saved просто чтоб было как мне кажется.
Кстати, тут соседи ябло-разрабы слили самую актуальную (вроде обнов больше не будет) версию трилогии алчного Левина про OSX в херовом качестве. Кому надо - велкам в их телегу https://telegra.ph/MIYAMOTO-SYNDICATE-06-16
>>1566064 Два совершенно разных инструмента, грубо говоря фаззер подготавливает и грузит пейлоады, а санитайзер отлавливает ошибки. Обычно работают в паре.
Сап, реверсач Скажите плиз, в реальном софте, а не в крэкмис или челленджах на ситиэфах, вручную статическим анализом ищут дыры в софте или в нынешних реалиях это невозможно? И без скриптов/фаззеров не обойтись никак от слова совсем? Просто написать эксплоит под дыру - сам по себе челлендж в реалиях 2к20 года со всеми технологиями защиты целостности памяти, а найти дыру в сотнях тысяч строк кода, пусть даже если есть исходник, это же пиздец анрил.
>>1566480 Ищут. Читал статью (хотя возможно смотрел видео) как чувак прочитал описание одного cve в виндосовском драйвере. Увидел, что там неправильно аргументы передали в какую-то стандартную функцию перепутав 2 аргумента местами. Это позволило экспоитить rce. Потом он тупо скачал драйверы разных антивирусов, прошёлся глазами по всем вызовам этой функции во всех драйверах и в некоторых из них нашёл такую же ошибку разработчиков. Дальше эксплоить не стал.
>>1566067 >Интересно, что там с этим >>1549844 читаком.. Если дело завели, значит посадили/посадят, 99%. Но стори натурально мутная, просто так им нахуй не сдалось бы бутылить. Под 273 читы пока вроде не подводили, может там еще что было. Подробностей бы.
>>1549844 Я абсолютно уверен что у кого-то такой бизнес даже оформлен по закону.
>>1566630 Ты про instruction pointer? Или effective address ? Любой отладчик показывает. Любой отладчик в принципе показывает все что нужно и даже больше.
>>1566637 Нужно (в виде текста или стандартного потока) отображение всех регистров, которые использует и меняет конкретная инструкция, соответственно до и после выполнения инструкции.
>>1566396 Можешь, хотя это и является нарушением EULA. Даже PowerPCшную можешь, правда быстродействие там будет такое, что даже железный G4 с 1ггц процом и 1 гигом памяти работает быстрее.
Алсо, реквестирую какой-нибудь гайд по быстрому вкату в пердолинг макоса. Как там правильно все задеплоить, какой отладчик использовать для удаленной отладки итд итп.
Есть сишная структура типа: struct { int a; int b; int c; } MyStruct;
Как получить доступ к членам этой структуры из .asm файла прилинкованного студией? Использовать указатель и смещения?
Для обычной переменной работал следующий код: -> .asm externdef MyVar : dword .data MyVar db 0 -> .c extern "C" DWORD MyVar; После чего я мог использовать переменную в обоих файлах.
>>1567010 В старых - ставишь xcode с образа вида xcode-хуй-пизда.dmg Если чисто в консольку пердолиться и шеллкоды писать - можешь поставить консольные тулзы. Но они ставятся где-то только начиная Конпялятор - очевидный gcc или шланг в зависимости от версии хкода, ассемблер - очевидный nasm или gas (под ppc nasm нирикоминдую). Отладчик - gdb. Если понадобятся m4, лексы-хуексы, cmake - всё это ставится из brew или портов.
>>1567292 Тфу, не дописал. Скрипт для автоустановки консольных тулзов есть только где-то начиная с 10.10. За полным образом xcode надо ходить на девелопер.кукоблядь.ком и иметь apple id. >>1567298 Шеллкод это хуйня написанная на асме (или вообще в hex-кодах), которая запихивается в дырку (переполненный буфер) и на неё передаётся управление. Например, если в проге буфер длиной 100 байт - можно передать ей 101 букву А + в конце шеллкод, который запустит rm -rf /
>>1567298 > Что такое шеллкод Исторически - код, который спавнит шелл и привязывает его к сокету. Чтобы ты байтики отправил =-получил удаленный шелл. А сейчас любой исполняемый код, который удалось запустить не предназначенным для этого способом, даже если он калькулятор запускает.
В чем разница между веб уязвимостями (sql injection, xss, csrf) и бинарными вроде переполнения буфера, целочисленной переменной и т.п. в плане силы? Почему на зеродиуме покупают за миллионы только бинарные уязвимости?
>>1567874 >Почему на зеродиуме покупают за миллионы только бинарные уязвимости? Сложность их доставания их и потенциальный дамаг который ты можешь им нанести. Зиродиум селлит только госам,а им не очень интересно где там можно поставить ковычьку,а вот всякие рце в хромах это пожалуйста
>>1567874 >Почему Для веба достаточно уметь подставить кавычку, а в бинарях нужно комбинировать [0-9A-F]. Сложность 1 к 16 -> оплата соразмерна)) Если без рофлов, то >>1567900
Как рассчитывается декомпилятором IDки размер (тип) переменной/элемента массива? Я тупо смотрю в оба асм кода и не вижу разницы, вот только в одном случае переменная и элемент помечены как int, а в другом - _DWORD. Все крутится вокруг регистра PC (в него оно возвращает значение (указатель на массив), если верить декомпилятору - LDR PC, [R3,#0x2EC]), однако смещения (+0x2EC) в обоих случаях одинаковые. Могу скинуть конкретно листинги с примерами.
>>1570540 В принципе, да - 32 бита, двойное слово. Там вообще лонг с интом конфликтуют в JNI. Чувствую, это надолго. >>1570497 Сразу тебе спасибо, ты мне уже тут однажды помог. https://ideone.com/3sqDGp
Допустим, я отреверсил в иде приложение, все красиво, все читабельно, вдруг выходит обновленная версия этого файла, как по-быстрому применить все изменения из первого файла во второй? Не заново же мне пердолить переименования итд.
Аноны, начал читать RE4B, понимаю от слова НИХУЯ, вот нихуя не понимаю о чем он пишет. В том же искусстве эксплойта более низкий порог вхождения. Как быть? Читать и плакать? Выучить основы С, чтоб хоть что-то понимать?
>>1573391 Челик, если ты не знаешь Си, кресты, асм хотя бы одной архитектуры, основы операционных систем и системного программирования, лезть в реверсинг, а тем более бинарную эксплуатацию, вообще смысла не имеет. Это все равно, что начать изучать математику в первом классе не с арифметики, а курса матанализа уровня MIT. Камон.
>>1573391 >Выучить основы С, чтоб хоть что-то понимать? Нет, с ОСНОВАМИ си тебе разве пхп получится выучить. Тебе надо углубиться в си. Учи указатели. Как работает память. В идеале пиши собственные программы, и исследуй их листинг ассемблера. Посети ##[email protected] и спрашивай местных все, что хочешь знать - учат бесплатно, за спасибку.
>>1576408 loc == location, кусок кода под лейблом, куда идет прыжок при выполнении каких-либо условий (не функция, засим новый стэковый фрейм там не открывается)
Сори за тупой вопрос, а как читы обычно отличают, что сейчас идет геймплей и надо искать/менять переменные по определенным адресам, а в другой момент отрисовывается глав меню и по искомым адресам лежит мусор/ничего и можно отдыхать?
Какого хуя не работает мой божественный код? https://pastebin.com/bZG2Zgyn Программа должна переводить две 8-длинные строки в числа, суммировать их, переводить в третью строку и печатать ее на stdout. До суммирования включительно все заебись, но при первом же делении результата на 10 случается хуйня. Я ебал.
>>1578331 А я, блядь не могу. Оно не хочет по одной инструкции выполнять. Может надо не голый _start писать, а main, потому что отладчику там уютнее с первой точкой останова размещаться? Anyway, я четко вижу, что в регистре rsi 22222222, он копируется в rax и делится на r8, который 10. ЧЗХ?!?!
>>1578578 Спасибо, анон. Буду внимательнее. Знал лишь, что умножение в RDX верхнюю часть кладет, а деление - остаток. Данный же случай вполне, однако, логичен.
>>1578594 >divl это деление 16 битного AX на 8 битовое значение имеется ввиду? Ну если делимое в 8 бит укладывается, то можешь и так. Удобнее просто rdx занулить и работать с 64 битным делимым как мне кажется.
>>1578607 Да я так и сделал. А суффикс L - это ведь dword. Только частное и остаток разбиваются на два регистра даже при ширине типа в полрегистра и меньше, т.к. логически разные части результата, чтоб SHR-ом не извлекать), исключение - однобайтовый, т.к. есть AH:AL.
Анончики, ку Почему бородатые баги вроде переполнения буферов до сих пор существуют в 2к20? Это же просто автоматизировать, даже на лоулвле вроде ржавого. Или все баг-хантеры кормятся исключительно из-за того, что существует легаси-говно в лице си и крестов, на которых написано много софта и который вынуждены поддерживать? Но ведь через лет 10-15 лавочка закроется и ошибки памяти будут в истории, ибо япы вроде ржавого их туо не допустят. Че тогда? И это, как они их ищут-то? Вручную читать даже исходный код порой больно и очень долго, я уже молчу про ассемблер, если нет сорсов. Неужели особо отбитые аутяры читают асм со скоростью, которая позволяет за человеческий цикл жизни вручную найти дыру в софте на бинарном уровне? В серьезном софте, а не в обоссаном протостаре.
>>1518584 Как ускорить статический анализ? Есть какие-то дзен-техники/скрипты? Невозможно же читать асм листинг всего бинаря, особенно если он огромен, и тем более, если stripped Че делать?
>>1580970 > Невозможно же читать асм листинг всего бинаря Именно поэтому изобрели декомпилятор. Монополии Ильфака пришел конец, теперь почти во всех опенсурсных решениях присутствует этот компонент. Также, у тех же самых иды/гидры, есть встроенные скриптовые движки с приличным апи и готовая база плагинов.
Можно ли в вин10 последней заюзать HalDisplayString когда винлогон уже запущен? Если нет, то почему? Я понимаю, что в вин8 ввели новый формат бсода, но не могли де полностью выпилить эти функции? Существует ведь добрая половина native-прог
>>1581199 А что насчет скриптов? К радару и айде прикручены скриптовые япы вроде питона, луа... Как их можно юзать, чтобы ускорить статический анализ? Слышал, что благодаря скриптам справляются даже с обфускацией, поэтому полуавтоматизировать или хотя бы облегчить статический анализ можно, не? Но как?
>>1581553 Ну допустим программа юзает шифрованные строки которые только в рантайме расшифровываются по мере использования, можно написать скрипт который будет их искать и расшифровывать.
>>1581950 >@natashenka Эх.. Может и правда без определенных личностных деформаций в профессии не добиться успеха, сколько жопочасов не трать? А аутизм уровня "дрочь на тамагочи-дампы", как лакмусовая бумажка(
Анализирую прошику i8051, она куда-то что-то пишет (распаковывает данные), либо через DMA, либо через порт. Как лучше всего организовать рабочий процесс, чтобы понять, что делается? Я нашел опенсорсный эмулятор и в принципе могу залогировать все, что угодно, но может у кого есть еще какие-то советы
Двач, есть одна строка, и я хочу добавить в нее многобайтный юникод-символ.
С однобайтными все просто: mov byte [rdx], 32 а с многобайтными пока только так приходит в голову: mov byte [rdx], 0xE2 inc rdx mov byte [rdx], 0x97 inc rdx mov byte [rdx], 0xA3
>>1582952 Какая у тебя там сложная прога с 20-30к функций? В ядре винды их меньше. Если ты реверсишь бинари такого размера полностью, то ты явно не знаешь, что тебе нужно.
>>1582998 Ок, я все перефразирую. Дано: прога типа телеги или вотсапа (мессенджер взят как пример, похуй на самом деле что) В моем понимании, реверсинг с целью поиска дыр в таких прогах должен происходить следующим образом: подрубается фаззер на мощной машине в несколько десятков тредов и крутится до посинения нахождения хэнгов/сегфолтов. Вручную что реверсят с целью найти дыры? Функции, которые обрабатывают ввод извне, я полагаю. Но сама уязвимая функция не обязана быть именно этой, само переполнение/произвольное чтение/запись/дабл фри/UAF и т.п. могут быть не обязательно в самих функциях обработки ввода. Как тогда все искать вручную, учитывая, что серьезные бинари еще и stripped? У меня есть подозрения, что при поиске дырок используется софт типа фаззера, а статический анализ проходит уже в найденной софтом уязвимой функции, и тех, на которые она влияет (по xref можно почекать, например), чтобы понять как это эксплуатировать, если вообще возможно. Сам поиск дыр в крупных бинарях/ядрах ОС вручную не производят, я прав? Иначе я не понимаю как вручную можно искать дыры в крупных программах, особенно не имея сорца, это же пиздец. Даже с декомпилятором.
>>1583091 Раз в год и палка стреляет. Слышал про такое? Сидят и дрочат до посинения, свой первый баг уж точно, а вот потом можно задуматься об автоматизации процесса. Естественно, все реверсить не нужно, достаточно знать узкие места, изучить последние баги за последний год и искать похожие места. Тулзы для динамееского анализа, которые реально помогают в этом деле стоят очень дорого, по несколько тыс. баксов в год и имеют тонкую настройку для конкретного кейса.
>>1583091 >подрубается фаззер на мощной машине в несколько десятков тредов и крутится до посинения нахождения хэнгов/сегфолтов. И что этот фаззер делает вообще? Ищет функции в бинаре и вызывает их с рандомными параметрами?
>>1576875 >>1566035 >>1501062 https://youtu.be/yJHyHU5UjTg BlackHat Official начал заливать прошлогодние выступления, может местным читакам будет интересно. Сам толком нихера не понял, кроме того, что парень из ядра делает грязь, чтоб не палится дергая WinAPI.
>>1583643 Ну, я имел ввиду применительно читов/античитов в играх. Наверное на первое время хватит покурить исходники hvpp и сопутствующие бложики/unknowncheats Просто не сталкивался на практике с виртуализацией уже запущенной системы, поэтому не сразу понял возможные профиты в игровой области - спасибо за наводку.
>>1583529 Так гипервизор вообще имба какая-то получается. Если я правильно понял, то с помощью EPT можно сделать защиту памяти так, что при чтении будет показывать одни данные, а при исполнении другие. Как это вообще можно обнаружить?
>>1583718 Сложно что-либо понять в исходниках без мат. части. Метод тыка не сработает. Есть четкая спецификация которой надо следовать. Все эти вещи описаны в мануалах. Какие профиты? Считай это год мод. Реалтайм отладка/трассировка ядра, модификация страниц памяти на лету, куча с горкой разных евентов и калбеков железячных. Применение в игрульках: установка скрытых перехватчиков, создание анклавов.
>>1583808 Да. Никак. Можно использовать разного рода эвристики для обнаружения присутствия гипервизора. Ошибки конфигурации так скажем, кривые обработчики событий итд.
>>1583876 Разве APERF счетчик не привязан к частоте процессора? Эта эвристика не может быть надежной. Вообще тайминг атаки это хаки, которые нигде кроме низкосортной малвари не должны использоваться.
>>1584316 Я сделал. Только через жопу(( Оказывается, если тасовать и добавлять/удалять картинки, то макаба загружает не то, что показывает. Сорян, потерпите Эдди в ОП-посте.
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Книги по RE:
beginners.re - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
Чтобы не палить свой адрес почты, вот прямая ссылка https://beginners.re/f572d396fae9206628714fb2ce00f72e94f2258f/
Рикардо Нарваха: Введение в реверсинг с нуля, используя 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
disassembler.io Дизассемблер онлайн
Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
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://arhivach.ng/thread/455487/
№9 https://arhivach.ng/thread/489188/