Это копия, сохраненная 9 марта 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Книги по 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/ >>1439555 (OP)
Может кто объяснить почему при создании буфера char[128]
https://pastebin.com/e7ZzDKGk
В машинном коде к регистру ESP прибавляют 0xffffff80, это на 127
меньше чем 0xffffffff, но вопрос не только почему 127, почему по сути стек растет с конечных адресов. Это норма? Я думал он со середины куда-то растет(к уменьшению или к увеличению)
https://pastebin.com/69BBJeLa
> это на 127
> почему 127
Это дополнительный код. Отрицательное число. 0x100000000-0xffffff80=(~0xffffff80)+1=0x80=128
> почему по сути стек растет с конечных адресов
В числе прочего - легаси. Раньше было так (считая с младших адресов): код, константы, инициализированные переменные, неинициализированные переменные, неиспользуемая память ... стек. Память выделялась вперед, к стеку, к старшим адресам, стек рос назад, к памяти, к младшим. Очень удобно, размер стека ограничен общим размером всех данных, кода и адресным пространством, и он не фиксирован. Так и прилипло. А сейчас это уже захардкожено в каждом первом процессоре, даже в тех, которые вроде бы умеют в любой вариант стека например, в ARM в нормальном режиме - будет расти, как сам решишь - он аж четыре варианта умеет, а вот в Thumb уже захардкожено.
Может кто-то тоже видел/заинтересовался/схоронил?
>почему по сути стек растет с конечных адресов
Мне понравилось сравнение Юричева - представь что ты студент и у тебя одна тетрадка память приложения для записи лекций и практических занятий всякие text/bss/heap/stack. Ты можешь их чередовать и потом ебаться разбираясь что и где записано или просто ебашить лекции с начала, а практику перевернув тетрадь с конца.
Ну и как >>500094 антон заметил, все эти правила - реализация конкретной архитектуры.
"идут навстречу друг другу", по-русски говоря )
>>501062
не это примерно?
https://www.google.com/search?q=reddit+"voski_rvt"&client=firefox-b-ab&source=lnt&tbs=qdr:w&sa=X&ved=0ahUKEwi-s9-z3KvlAhVNxKYKHZOPDmsQpwUIJw&biw=1111&bih=695
>идут навстречу друг другу
Все верно иногда не стоит углубляться в сравнения
>не это примерно?
Спасибо, но нет)
Тему нашел просто искал жопой, вдруг кому интересно:
https://www.reddit.com/r/ReverseEngineering/comments/dbtnnh/hello_all_started_on_the_past_week_working_on/
Нихуя толком не написал. Подписался на всякий, интересно, что он наковыряет там.
Который 8th edition.
>beginners.re - "Reverse Engineering для начинающих"-
Блядь, я по приколу скачал, не могу остановиться лол.
Охуенно пишет.
Очень нравится привязка к С, написал - хоп, посмотрел что высралось в годболт.
Вообще класс.
>>beginners.re
>связь между кодом на Си/Си++и тем, что генерирует компилятор, вбилась в его подсознание достаточно глубоко.
Так и деградирует программист в типичного реверсера
Дальше можно не читать.
Не нравятся макросы - не пользуйся. Когда реально понадобятся - разберешься.
> Как вам коллега?
Очень плохо, до обычного уровня CppCon не дотягивает. Настоящие программы с множественным наследованием, интерфейсами и без символов она не реверсила, иначе презентация была бы о другом. Все, о чем она рассказала, знает любой C++-мидл, не являющийся реверсером никаким местом.
У меня на 7.0 и 7.2 иде не хочет работать. У кого также?
А насколько оно удобнее стало со времен конкурса? В то время плагин был совсем неюзабельным, reconstruct лажает,
object explorer нинужен, больше там не было ничего. Проще свои скрипты писать.
Не знаю, не работает у меня. Я из-за reconstruct'a качал, есть аналог какой-то?
куда воевать, чтобы знать столько, сколько С++миддл не являющийся реверсером никаким местом?
Ну везде же описывается, как крестообъекты и крестоисключения устроены в основных компиляторах. Про исключения даже на том же CppCon было.
>>507969
>Бабла ща хватает?
>Не хватает.
Вот сейчас без рофлов:
- Есть тут те, кто зарабатывает на жизнь реверсингом? Как к этому пришли?
- Какие варианты вообще пристроить свою тушку сейчас существуют? Понятно, что самое явное из белого это AV, возможно поиск/продажа дыр заинтересованным. А из серого, помимо явной мальвари/сплоитов?
Для начала с уровнем джуна ознакомиться.
https://www.youtube.com/playlist?list=PLlb7e2G7aSpTFea2FYxp7mFfbZW-xavhL
https://www.youtube.com/playlist?list=PLlb7e2G7aSpRs7YafQ1GgJvyRku10m1RN
Паралельно работа виндовс/линукс/алгоритмы/патерны
> функции экспорта
Это значок ASCII-строк. Либо это forwarded-функции, т.е., указание лоадеру брать функцию из другой длл (у строки формат "ИмяДлл.ИмяФункции"), либо IDA ошибочно распознала функцию как строку, такое бывает.
Как это работает? Во время загрузки изображения в память, загрузчик автоматически проставляет переходы? И при вызове этой функции, напрямую вызывается функция из другого модуля, правильно?
> И при вызове этой функции, напрямую вызывается функция из другого модуля, правильно?
Правильно, если при ресолве импорта загрузчик видит, что экспортируемая функция - это форвард, он подгружает целевую длл (которая до точки) и ресолвит функцию оттуда.
> как мне самому собрать
Положить вместо адреса функции строку с именем форварда, при этом, чтобы она была воспринята как имя форварда, а не как эспортируемая переменная, эта строка должна находиться в пределах директории экспорта.
Пример на fasm:
MyFunc: ret ; Обычная функция для примера.
...
data export
export 'MYDLL.DLL',\
MyFunc,'MyFunc',\
ForwardName,'ForwardedFunc'
ForwardName db 'KERNEL32.ExitProcess',0
end data
Пример с линкером, для сишки/масма:
// mylib.c
#include <windows.h>
void MyFunc(void) {}
BOOL CALLBACK DllMain(HMODULE hInstDLL, DWORD fdwReason, LPVOID pvReserved) { return TRUE; }
// mylib.def
LIBRARY MYLIB
EXPORTS
MyFunc
ForwardedFunc = KERNEL32.ExitProcess
Собираешь и линкуешь: cl /c mylib.c && link mylib.obj /DLL /DEF:mylib.def.
> как мне самому собрать
Положить вместо адреса функции строку с именем форварда, при этом, чтобы она была воспринята как имя форварда, а не как эспортируемая переменная, эта строка должна находиться в пределах директории экспорта.
Пример на fasm:
MyFunc: ret ; Обычная функция для примера.
...
data export
export 'MYDLL.DLL',\
MyFunc,'MyFunc',\
ForwardName,'ForwardedFunc'
ForwardName db 'KERNEL32.ExitProcess',0
end data
Пример с линкером, для сишки/масма:
// mylib.c
#include <windows.h>
void MyFunc(void) {}
BOOL CALLBACK DllMain(HMODULE hInstDLL, DWORD fdwReason, LPVOID pvReserved) { return TRUE; }
// mylib.def
LIBRARY MYLIB
EXPORTS
MyFunc
ForwardedFunc = KERNEL32.ExitProcess
Собираешь и линкуешь: cl /c mylib.c && link mylib.obj /DLL /DEF:mylib.def.
Благодарю, то что нужно.
Хороший курс, просмотрел первую часть, узнал больше вещей, чем за все курсы со степика и прочих онлайн дрочильнь, в которых кроме жиденького ОПП ничему не учат.
>Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС?
Для этого есть си с классами
Если компилятор поддерживает интринсики, то асм совершенно необходим только в обработчиках прерываний и для переключения контекста. Буквально полсотни строк на весь проект. Остальное отлично делается интринсиками.
О, вылез очередной скриптохолоп со своей сермяжной правлойtm
А ничего что это реверсинга тред и тут похуй на чем ты та накропал свое говно?
Нам же за тебя, обосрыша, разбирать твои какули.
Вопрос конечно глупый, но есть же какие то штуки, которые можно попробовать. Вот я открыл его в hex редакторе и заметил там одну деталь. Повторяющиеся почти одинаковые последовательности. Че дальше хз
А собака и смесь твердого знака с Б? Я открыл другую картинку и в ней такого не оказалось.
Если картинка с палитрой, то черный пиксел и серый рядом, например. Тащи файл, по куску скриншота, не зная формата, ничего сказать нельзя.
Файл слишком большой. Сейчас куда нибудь в облако скину
А ты уверен, что тебе нужно лезть в бинарное представление данных? Я вижу 4 цвета, которые можно раскодировать в 00, 01, 10, 11 тупо читая файл построчно любой либой для работы с PNG. Непонятно правда, что означают прозрачные блоки, да и над присвоением комбинации цвету нужно повозиться, но это вопрос простого перебора.
> 4 цвета, которые можно раскодировать в 00, 01, 10, 11
Этого явно недостаточно. Пока моя самая гениальная мысль состоит в том, что семь сегментов на картинке - это битовые плоскости, которые потом собираются в байт.
>Это задача для 10 класса
Если не шутка, то меня сейчас немного задело.. мимо-другой-анчоус
А можешь саму задачу в оригинале скинуть, может там в контексте какие-то подсказки есть? Просто явной, школьного лвл-а, стеганографии текстовые чанки, EXIF, вставки после IEND в файле не вижу. В самой картинке в разных BitPlanes режимах подсказок тоже не увидел хотя картинка большая, может конечно где-то что-то проглядел...
Скрин задачи не кину. Олимпиада закрыта уже. Но там ничего не было. Задача называлась цифровизация. Задание было "расшифруйте. В ответе запишите фразу"
Дебил блядь, нахуй ты это сюда кинул, ведь весь вечер потрачу чтоб это раскодировать
мимо Джон Нэш
похоже на какой-то типа qr код, только поврежденный\зашумленный.
может попробуй наложи куски у которых голубые квадраты по угам и смотри где цвета на всех шести совпадают, то там 1, иначе 0 или я хз. ПРИДУМАЙ ШТО-НИБУДЬ
MESS1 db "privet $"
MESS2 db 0dh,0ah,"kak dela? $"
MESS3 db 0dh,"chto delaesh? $"
MESS4 db 0ah,"jasno",0dh,0ah,"$"
Эти сообщения выводятся ровно в столбик, как и положено. Почему?
> Эти сообщения выводятся ровно в столбик
1) Используешь недоэмулятор (DOSBox в дефолтном режиме или NTVDM), который трактует \n как \r\n. Возьми образ доса и нормальную виртуалку или сделай в досбоксе boot msdos.img для полноценной эмуляции - увидишь разницу.
2) kak dela выводится, но тут же затирается следующей фразой, ты не должен его видеть даже если у тебя пункт 1.
Я использую ТАСМ в досбоксе
Кстати, а ведь зачем писать 0dh, если 0ah это перенос на новую строку? Если мы переносим курсор на новую строку, то он по умолчанию должен быть в начале строки, ведь строка новая.
> то он по умолчанию должен быть в начале строки, ведь строка новая
Нет. Ну то есть в 2019 да, но легаси. Пока не смыло, смотри сюда: >>1484880 Если ты возьмешь нормальный дос, то увидишь, что после 0a позиция курсора внутри строки не меняется, меняется только строка. То же самое, после 0d строка не меняется, и ты можешь делать няшные спиннеры и прогрессбары, каждый раз затирая их новой строкой.
Видел старинные печатные машинки? Вот там машинистки делают так рукой справа на лево громко, хуяк, и печатают с новой строки.
Тут тоже самое - 0dh (перевод коректи в начало строки), 0ah (просто переход на новую строку).
>он по умолчанию должен быть в начале строки
Только в твоем сознании зумера, фактически раньше бы просто шагнуло вниз на новую строку.
Не видел и мне это не интересно. Сейчас 2019 год, ни о каких печатных машинках и речи быть не может! Компьютер НЕ ПЕЧАТНАЯ МАШИНКА!
>Компьютер НЕ ПЕЧАТНАЯ МАШИНКА!
Компьютер это ёбанный фрактал из легаси, привыкай. Даже ширина ракеты зависит от толщины лошадиной задницы.
Судя по слову "dataseg" - нет. А вообще, да. Желательно, чтобы одновременно используемые переменные лежали рядом, чтобы они не вылетали из кэша, и все такое.
У меня в методичке именно dataseg, а не .data. По значение порядка там напрямую не написано, но судя по примеру, это действительно важно. Спросил здесь чисто чтобы развеять сомнения.
> У меня в методичке именно dataseg
Я имел в виду, что для доса похуй.
> скрин
Да, тут важно, потому что фактически это структура, а не отдельные переменные. При нормальных ассемблере и преподе у тебя была бы структура.
Препод тут ни при чём. Эта методичка вместо практик, а авторов у этой методички несколько.
Здравствуйте. Вообщем есть такая задача пик 1.
Вот мой вариант решения.
mov ax, 10110110b
and ax, 10100010b
xor ax, 10101010b
sar ax, 2
not ax
Препод говорит что неправильно так как. Алгоритм данного задания должен выполняться для любого числа. Я вообще не понимаю как это можно реализовать для любого числа. Может подскажет кто?
Ты на верном пути, но: маска в and у тебя явно неправильная - во-первых, она обнуляет по большей части четные разряды, а надо нечетные (разряды принято считать справа и с нуля), а во-вторых, она и один нечетный затрагивает; маска xor у тебя флипает нечетные разряды, а надо четные; и вообще маски по-хорошему нужно расширить до 16-бит, если ты с 16-битными регистрами работаешь; ну и вопрос выбора между sar/shr - спорный.
я официально в ассемблере не очень, тем не менее
mov ax, 10110110b так понимаю что тут мы записываем число для издевательств
and ax, 10100010b если это маска обнуления нечетных разрядов, то я написал бы её так: 10101010b
маска в xor на мой взгляд правильная, как раз чётные разряды переворачиваются.
может нарезать на равные куски и совместить, перебрать цвета попробовать за прозрачность
Так ты же тупой даун и сам нихуя не понял
Wmi.
Может быть, не DOSBox, а окно консоли (NTVDM)? Да, так и должно быть, если ты запускаешь программу не вводом команды в консоли, а непосредственным запуском бинарника. Можешь воткнуть перед выходом ожидание нажатия клавиши (xor ax,ax int 16h или mov ah,1 int21h).
> как понять данные это или инструкции
Никак. Исполняемый код - это непосредственно байт (или байты) на который в данный момент указывает IP (PC, или как он там в твоем процессоре называется). Все остальное вполне может быть данными. Или кодом. Или и тем и другим одновременно. Или даже несколькими параллельными потоками кода. Например, 68 5a 31 с0 с3 может быть данными, может быть кодом push 0c3с0315ah (с непосредственным значением, которое вроде бы данные), а стоит добавить к этому коду jmp $-4, и это становится вторым потоком кода, который делает return 0 (5a 31 c0 c3: pop edx, xor eax,eax, ret).
mov AX, 1
cmd AX, 1
jl perehod
add AX, 1
perehod:
AX станет содержать число 1 или 2?
Понятно, но по косвенным признакам то можно сделать предположение? Например, в ридонли памяти скорее всего лежат данные, в r/e - код. Какие еще признаки могут быть?
Да, будет 2. Все же читаемо в простых случаях: "compare ax with 1", "jump if it was lower".
>>517460
Зависит от бинарника. Но вообще статически трейсят control flow просто, строят граф (естественно, это ломается на первом же виртуальном вызове или таблице переходов). Или тупо пытаются попробовать дизассемблировать, и потом либо оно обламывается совсем, либо ты можешь всякие эвристики притащить на тему странно выглядящего кода. Всякие избыточные инструкции, которые перезаписывают результаты предыдущих инструкций, ебля сегментных регистров, различные привилегированные инструкции, несбалансированный стек - это либо написано вручную, либо упаковано/обфусцировано, либо не код совсем.
Я там регистры местами перепутал, вот то, что я имел в виду.
> Я ведь в правильный тред пишу с таким вопросом?
Нет, ты доской ошибся. https://2ch.hk/pa/ (М)
> Какие регистры тут лучше не использовать
Как минимум SP портить не стоит, иначе программа кончится, как только произойдет прерывание. Остальные регистры можно сохранять, если они тебе нужны и не сохранять, если не нужны.
Какой ещё есть свободные в такой задаче регистр? Не хотелось бы через стек значениями жанглировать.
>Какой ещё есть свободныЙй в такой задаче регистр? Не хотелось бы через стек значениями жОнглировать.
Понял, спасибо. Человек же сразу почти видит, что перед ним, мусор из байтиков или код. В теории, какие-нибудь нейросетки тоже смогут различать?
Как пример для годного контента - ламповая книга Hacking: The Art of Exploitation 2nd edition 2008 года, там есть очень вкусная глава по сетям, которая совмещает описание различных сетевых атак со снипеттами с кодом для лучшего понимания. Проблема в том, что книге скоро 12 лет и там есть лишь одна глава по сабжу, а я ищу фулл книгу по подобной тематике и желательно поновее. Все, что находил до этого, унылый шлак с кучей теории и хуйней для скрипт-кидди вроде метасплойта. Погромирую на Си, крестах, знаю х86 асм, основы ОС (с явным уклоном в Линукс) и основы сетей + программирование сокетов.
С меня цистерна чая и лучи добра с пожеланиями вечного здоровья и счастья всем, кто поможет. Заранее спасибо.
Могу https://www.corelan.be/index.php/articles/ посоветовать, правда он больше по винде.
И опять дать книжку real world bug hunting, lol
Не знаю. В x86 может и видно, а возьми какой-нибудь восьмибитный мк, да еще если не слишком хорошо архитектуру знаешь, и у тебя тут же проблемы.
>>518361
> Как в иде фильтры работают?
Плохо.
> Хочу отобразить символы из нужной мне секции
В Functions можно фильтровать по сегменту, в Names нельзя, import idaapi тебе в помощь или по адресу отсортируй и ищи нужный кусок.
Спроси более развернуто. По идее, код более-менее одинаковый, если, конечно, gcc с tcc и прочими "игрушечными" компиляторами не сравнивать. В основном все же влияет то, с какими оптимизациями код был собран, включена ли link time code generation и все такое.
mov DI, 1
mov SI, 0
cmp DI, 1
jnle PEREHOD
add SI, 1
PEREHOD:
SI=1. При DI=2 SI=1, и при DI=0 опять SI=1. ПОЧЕМУ???!!!!!!
jnl, кстати, тоже нихуя не работает.
А, я всё понял. Это мне бред кое-кто написал, типа опечатка.
Пушто мнемонику полезно запоминать
jump if not less or equal - т.е. аналог jg jump if greater
Как писать ассемблерный код лучше O3?
Реально, но долго. Обмазываешься optimization manual-ом от интела, агнерфогом, профилировщиками всякими, vtune-ом и пишешь.
>нахуя сажа то тред сагнул сага сага пасскод абу
Вот ещё вопрос:
Какой уровень знания языкаозначает, что ты не червь-пидор?
Или так и надо - знать только то, что сделал сам?
По вершкам знаю дохуя языков, могу понять чужой код, чтобы спиздить, а че-нить достойное жид хаба высрать не могу.
а энтри поинт он сам подефолту в начало сегмента текста ставит? написал так, скомпили и работает?
Иди учи основы программирования, а не метасплоиты хуярь. Тут половина треда тарищи майоры.
Пока вижу два варианта:
1. thread environment block ( использовать unused/reserved/padding ячейки )
2. thread local storage ( __declspec(thread) global )
Кстати, кто-нибудь подскажет, как получить доступ к этой переменной из masm файла?
Это лаба в универе. А что посоветуешь почитать? Просто я не вкурсе что ещё не знаю
Есть ли ресурс наподобие overthewire, только более серьезного уровня, который хоть как-то связан с реальным миром, а не эксплуатацией ебучего хэллоуворлда?
Hack the Box. Не благодари.
Красавчик мужик, крадет прямо из под носа у мягких целые ОС и тусит с няшами в командировках. Глянул ценник на посещение его двухдневного семинара, чуть в обморок не упал, несколько тыщ вечнозеленых, такие вот дела.
впаривать курсы по всякой хуйне всегда было оч выгодно. И не важно ойти это , лнп, пикап или еще что угодно. Суть уметь втирать дичь, а не быть спецом)
> уникальную для каждого потока глобальную переменную
А чем тебя 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 для тебя создаст линкер.
>>519503
> re4b
И что? Ты точно не промахнулся с ответом?
>>519537
> Какой же в этом дебагере низкий юзабилити.
Он предназначен не для обратной разработки, а для отладки свеого кода. С доступными символами.
> А чем тебя tls не устраивает? Оно уже 9 лет как в стандарте Си (_Thread_local/thread_local).
Может есть варианты лучше, решил спросить.
>>519550
> Переменная в сишке создается? Тогда у тебя имя_переменной в том объектнике, и ты такой:
В сишке. Нужен быстрый доступ, как в случае с TEB, те mov eax, [gs:0e8h]. Я так и не понял, могу ли я сделать что-то типо mov eax, globalvar_in_cpp_file ?
> Он предназначен не для обратной разработки, а для отладки свеого кода. С доступными символами.
Это же единственный отладчик режима ядра, чем еще крашдамп анализировать? Что правда нет аналога xrefs? Как жить то..
> могу ли я сделать что-то типо 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+имя].
Дело в том, что это каллбек с неопределенным количеством аргументов, который передает управление в другое место в зависимости от индекса, который я загружу в eax регистр. Придется шифтить аргументы туда сюда, чтобы освободить регистры и моя асм портянка из пары строк кода разрастется на экран в лучшем случае... А для меня это боль, ибо я не гуру асма..
Не могу, интринсиков не хватает под 64битную архитектуру.
В любом случае спасибо, поступлю дедовским методом, реализую оба метода и уже походу решу какой использовать.
Суть: как сделать так, чтобы хотя бы пригласили на собес, а не выкинули резюме в мусорку при подаче оного? Подрочить pwnы на HackTheBox? Или сходить на CTFы пару раз? Ведь на реальных примерах это не показать, ибо, ясень-пень, незаконно.
Так делай локальные сплоенты. Вон в блокноте умудряются шелл запускать.
алсо в помощь https://www.corelan.be/index.php/articles/
1) Напизди в резюме про опыт работы;
2) Закидывай резюме вообще на все вакансии (даже смежные) на похуй (большая часть всё равно не ответит ибо висит на сайте из-за проёба хрюш);
3) Ходи на все тусовочки по теме.
спасибо за линк, но я покамест грызу эксплуатацию в юникс-подобных системах. Винду потом по мере необходимости подтяну
Забугром без сертификатов тебя никто на работу не возьмет. На HTB нужно быть в топе, чтобы это хоть что-то значило для работодателя. Ну и вся мякотка в том, что не бывает джунов в этой теме, ты либо компетентен и тебя нанимают для выполнения реальной работы, либо ты сидишь дома и учишься, получаешь сертификаты и становишься компетентным.
норм компы только в 2000тысячные появились.
но сертификации есть только по веб-хакингу, который к бинарой эксплуатации не имеет никакого отношения. Ну и про сетевой безопасности там что-то, но по реверсу и разработке эксплоитов я не видел.
> но сертификации есть только по веб-хакингу, который к бинарой эксплуатации не имеет никакого отношения. Ну и про сетевой безопасности там что-то
Прикинь, это 90% всех сплоитов. Еще скажи, что JS учить не хочешь, а придется.
https://www.giac.org/certifications/get-certified/roadmap
и вопрос по иде. есть игра только с арм либами, соответственно она под эмулем работает через гудини. Пробую дебажить через x86 сервер, ида логично посылает меня нахуй, пробую армовский но ида коннектится к процессу и сразу отваливаентся. У меня выбор только арм виртуалка или физ устройство?
Есть одна игра и два человека, которые написали ботов, которые распознают экран и не лезут в память. Одного банят, второй спокойно играет.
1. Как можно задетектить бота, который не лезет в память, и единственное что делает это эмулирует нажатия на клаву?
2. Как может быть, что за эмуляцию одного банят, а второго нет? Может зависеть от способа эмуляции нажатия?
> Одного банят, второй спокойно играет
Один жадюга фармит 24/7, другой ставит на пару часиков. Бан скорее всего ручной, по логам.
> Как можно задетектить бота, который не лезет в память, и единственное что делает это эмулирует нажатия на клаву?
Есть несколько способов сделать это из юзермода. Низкоуровневый хук мыши и запрос операции ввода мыши.
Дай угадаю, игра WoW? Они как раз второй метод используют.
>Один жадюга фармит 24/7, другой ставит на пару часиков. Бан скорее всего ручной, по логам
Хз хз, один делал рыбалку, второй гоняет по квестам. Возможно, они просто детектят все эмуляции именно на рыбалке и игнорируют остальные.
>Есть несколько способов сделать это из юзермода. Низкоуровневый хук мыши и запрос операции ввода мыши.
>Дай угадаю, игра WoW? Они как раз второй метод используют.
То есть нарушают законы и пишут малварь? Им же никто не давал разрешения хукать мои процессы. Нет, игра Lost Ark из новых.
Я начинающий реверсер, хорошо знаю асм, си и кресты тоже хорошо знаю, но вот заметил, что статический анализ даже относительно простых крэкми занимает у меня довольно много времени, плюс у меня есть постоянное желание рисовать стэк на бумаге, чтобы помочь себе не запутаться по ходу анализа. Мб я неправильно юзаю софт, мб есть акие-то фичи, чтобы реверсить быстрее и без использования листочка? Или нужно просто очень много опыта и нет никаких фокусов/трюков для облегчения самого процесса реверсинга в плане "не потеряться"?
>То есть нарушают законы и пишут малварь?
Коммерческие античиты очень многое себе открыто разрешают прямо в EULA. Не удивлюсь, если в темную они используют совсем уж грязные способы детекта.
В конце концов, раз речь идет о деньгах, то прайваси потребителя может и сходить найух.
Если я пройду все виртуалки здесь, я буду компетентен хоть на какую-то йоту или это все игрушки?
> То есть нарушают законы и пишут малварь?
С пробуждением. Я тебе больше скажу, винда сама по себе малварь.
>Низкоуровневый хук мыши и запрос операции ввода мыши.
по факту всё это можно обойти просто юзая посредника в виде железного эмулятора клавомыши на стмке к примеру?
>И что? Ты точно не промахнулся с ответом?
да, промах, ответ должен был быть туда же куда и твой
где то даже были примеры, правда на ардуинке)
Имеет ли место быть бинарная эксплуатация в языках типа раста, джавы, сишарп, где сложно выстрелить себе в ногу из-за автоматизированного мемори менеджмента? Или все эти ваши зиродеи только в дырявых сишечке и плюсах? Я говорю именно про разного рода переполнения, юафы и т.п., не про веб-атаки
Поправка: бинарная эксплуатация программ, написанных на перечисленных языках
В любых проектах чуть больше и сложнее хеллоу ворлда используется unsafe код, так что да.
Это известно, многие об этом говорят. Но вопрос состоит в другом - ПОЧЕМУ есть такая надобность? Без этого код недостаточно гибкий?
Конечно, если устройство будет представляться обычной мышкой и эмулировать все проверяемые паттерны.
Ещё можно индуса посадить.
>сможет ли античит меня выловить
Если сделан не на отъебись, то сможет.
>существуют ли у него такие способы
Вагон и маленькая тележка.
https://www.youtube.com/watch?v=ODjOJMqR-Xw
Запусти игру в виртуалке. поставь Из хоста поставь процесс виртуалка на паузу, сдампь память волатилити, извлеки из дампа всей виртуалки только память процесса игры. Античит даже не поймёт, что игру прерывали
Рейт идею, кто шарит
Античит может обнаружить присутствие гипервизора/отладчика и прочий известный инструментарий. Вообще каждая игра может быть запущена отдельно от античита на какое-то время, этого вполне достаточно чтобы сделать дамп.
Чекнул. Действительно античиты вполне рутинно детектят гипервизор. Оказывается не только малварь пытается избегать виртуалок
Либы? Что ты имеешь в виду?
Античиты и есть малварь, как и антивирусы. По крайней мере методы у них одинаковые.
Если в OptionalHeader.SizeOfHeaders заголовок секции влезет - то все так. Если не влезет, придется расширять последнюю секцию. Ну еще про выравнивание в файле и в памяти почитаешь.
Или хотя бы оффсет к стэковому поинтеру как узнать, чтобы вычислить это количество?
Если что, в асмах не разбираюсь нихуя, так что нид хелп.
Эта инфа не хранится в регистре. Когда у тебя начинает стэк фрейм новой процедуры, обращение к аргументам процедуры происходит через [ebp+Z] где Z = 0x4, 0x8, 0xc... в случае 32-битного бинарника и 0х8, 0х10... в случае 64-битного бинарника.
>>525983
>через [ebp+Z] где Z = 0x4, 0x8
Но ведь я правильно понимаю, что аргументы энивей будут хранится в стэке, причём в 4-байтовых блоках, и рядом с друг другом?
Алсо я сам себя наебал с cdecl, оказывается в моём случае - смешанная конвенция, где какая-то часть (в зависимости от арх-ры) аргументов пиздует сразу в регистры, а та что не влезла - по старинке в стэк. И если это так, то как мне тогда в сишечке достать те, что попали в регистры, без ассемблерных заплаток?
Да. Просто повтори конвенции, чтобы не путаться. Алсо, для сисколлов есть своя конвенция, там как раз-таки аргументы хранятся в регистрах. Для реверса плюсового кода тоже есть свои конвенции, ибо там есть ооп (например, в ecx/rcx хранится указатель на объект). Конвенции различаются даже между 32 и 64 битными бинарями. Расписывать это здесь не имеет смысла, ибо есть гугл. Когда наберешься опыта в реверсинге, то уже будешь помнить все наизусть.
Не пизди. Есть очень много уязвимостей именно в бинарниках, которые с веб-атаками не имеют ничего общего. Веб-атаки и бинарная эксплуатация - разные отрасли тащемта.
hiberfil/pagefile можно так использовать?
все нативно, никто ругаться не будет. игру свернул (если настройки и оперативка позволят оси передвинуть ее в подкачку) или просто гибернацию нажал и потом с харда переписал на другой системе.
иногда можно зайти с черного хода или вообще через канализацию.
от виртуалок и работы с микрухами памяти до еба-скоростных логических девайсов на шине проца.
вау, научи также разбираться в основах. посоветуй книгу пожалуйста.
> И если это так, то как мне тогда в сишечке достать те, что попали в регистры, без ассемблерных заплаток?
Писать ассемблерные заплатки. Точнее, там всего несколько простых инструкций, поэтому проще всего захардкодить их и динамически собирать враппер из твоего __usercall в какой-нибудь __stdcall (и/или обратно), выделить память с флагом на выполнение и положить туда этот враппер.
Вот эти выравнивания и rva/va на диске не вкуриваю. Что есть база файла хранящегося на диске? OptionalHeader.ImageBase? Есть вообще какой-то инструментарий для подобных махинаций, винапи/макросы в каких-нибудь майковских хедерах?
На диске у тебя офсеты от начала, никакой базы. А вот в память файл грузится по image base (или не по ней, но тогда все немногочисленные виртуальные адреса исправляются на разницу между записанной image base и реально использованной).
> Вот эти выравнивания и rva/va на диске не вкуриваю
> VA
Просто адрес в памяти внутри образа
> RVA
Дельта относительно использованной при загрузке image base, т.е., GetModuleHandle(...) + RVA = VA.
> Есть вообще какой-то инструментарий для подобных махинаций
PE file editor в ассортименте.
> винапи/макросы в каких-нибудь майковских хедерах
Есть в основном недокументированные LdrXXX и RtlImageXXX, есть макросы в winnt.h, но это все в основном для чтения.
>Да.
Тогда наверное, я чего-то не понимаю
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.
Отладчиком пробовал пользоваться? Поставь точку останова на вызове функции и проанализируй регистры/стек, там все наглядно видно.
300кк в наносекунду
> теперь поинтер указывает на первый байт первого аргумента в СТЭКЕ
Или на первый аргумент, который был сохранен из регистра в стек, потому что компилятор очень хотел сделать то, что ты сказал, но у регистра взять адрес не очень получалось. Что ты сделать-то хочешь?
Не ебу про что ты, по я на пост про зарплату в авреах для реверсеров отвечал. Там же почти монополия и хуй куда в рф перекатишься.
каспер,дрвеб,есет,груп биби в конце концов,хотя к дебилу сачкову пойти самому это нужно постараться
>каспер
монополист
>дрвеб
это бренд, а не рабочий продукт и реверсеры им не нужны чтобы зарабатывать
>есет
в россии нет ресёрч центра
>груп биби
это даже не авре, но тоже монополист. зарабатывает на том, что каспер делает бесплатно или вообще забил и не делает. задрал цены, зажал зарплаты и нанял толпу прогеров писать нахуй никому не нужный российский клон снорта и арксайта лижбы впарить его втридорога всяким газпромам. а реверс им нужен, но платить не хотят. хотят вчерашних студентов ситиэфщиков за еду обещая должность деректора через 5 лет.
какая же это всё хуйня. а сачков пидор
>виндеф
Только щас понял, что ты говорил про встроенный в десятку дэфолтный виндеф. А я ещё туплю мол при чём тут виндовс когда мы говорим про хуёвую работу в рф
>полностью согласен,я бы даже сказал пидарасина
Как я рад, что кто-то согласен. А то у меня 2 знакомых к нему пошли и один планирует. Удивляются почему я носом ворочу и не соглашаюсь в гиб переходить. А у тебя к нему какие претензии? Может и тут сойдёмся?
Мерзкий тип он,посмотрев его интервью,с этими "Смотрю им в глаза на задержаниях","Ух сука бля всех бы нахуй посадил",рассказами что он хотел пойти в ментуру,но его просто не взяли.
От этого всего у меня о нем складывается впечатление,что он такой обиженный,но при этом полностью уверенный в том,что делает супер-пупер-добро всему миру когда ловит ужасных преужасных блечеров
Ну это помимо того что он педрилло которое сидит на госконтрактах и пиздит бабки
>А то у меня 2 знакомых к нему пошли и один планирует.
Я хз,смотря на ЗП всех этих пентестеров,реверсеров и прочих в ру конторах,которая редка превышает 100к и чет прям у меня непонимание,кто туда идет.
Уж лучше малварь пилитьмы не одобряем
black hat
В Dr.web уже год висят вакансии на джуна вирусного аналитика и обычного вирусного аналитика. Мало платят что-ли? Ну не верю я, что меньше 60к.
>Или на первый аргумент, который был сохранен из регистра в стек,
Это точно не так - принтом выдает первый обязательный аргумент n, expected. Поинтер, согласно отладчику, хранит адрес 4(%rbp), что похоже на истину. Если начать дальше сдвигать его вверх будь-то по байту, или 4 байтам, то необязательных аргументов не видно совсем.
>Что ты сделать-то хочешь?
Хочу понять куда проебываются остальные аргументы после вызова любой другой функции в int funct(), раз. Второе, просто понять как работать с этими функциями в таких конвенциях на высокоуровневом языке, просто для себя, уж больно зацепило.
Подержу в курсе. Сейчас глазками пробежался по ассемблеру из клэнга, и моих знаний хватило на вывод, что необязательные аргументы в регистрах просто-напросто испаряются нахуй перед вызовом подпрограммы. Подозреваю, что в гцц та же морковь. Наверное конпеляторы думают, что если у объекта нет имени в исходнике, значит хуй с ним, понимаешь, так и говорят, хуй с ним, зачем это говно нам в стэк кидать
> понять как работать с этими функциями в таких конвенциях на высокоуровневом языке
Да никак, врапперы писать или динамически генерировать. Максимум, что тебе сишка дает - это variadic-функции (которые с точечками - void foo(int first, ...)) и va_list/va_start/va_next для них, а уж дальше оно само.
Значит пора написать один такой и эмулятор.
Это в питере. В москве у каспера джун с 60ти начинается. Это если без сэйвборда. Через стажировку проще вкатиться, но меньше платят
Так это все равно мало сука
Очень блядь мало
Посмотри сколько получают всякие макаки на жыэсе и прочем и сравни уровень знаний который должен иметь средний макак и средний реверсер
уж лучше пилить моды всяких isfb за 5к долларов в месяц,чем дрочить семплы на потоке за 60 ссаных к в МСК
Не знаю. Не стал допрашивать. Подозреваю, что мне бы чуть больше 100к предложили. Хотя есть люди, которые на 50 евро в час в какую-нибудь германию уезжают. А иностранцы, которые в грите работают получают шестизначную зарплату в долларах.
шестизначную в долларах это в год,я полагаю?
Нормально конечно,но сколько надо проработать на эту хуйню чтобы столько получать
как-то меня это все портит настроение,когда я начинаю думать об этом.Вся эта срань с апт,аверы-хуяверы,шансы сесть в тюрьму,хуевые зп почти у всех
на кой хуй я поперся сюда..пилил бы сраные сайтики и сидел бы довольный
Единственный вариант который я вижу - спиздить откуда-то много биткойнов и всю жизнь заниматься любимыми делами,не боясь оказаться на улице
Хуевая идея, лучше работать всю жизнь; иначе ты быстрее превратишься в животное, чем будешь заниматься любимыми делами.
Почему?Уехал бы куда-нибудь в швейцарию,взял книжки по биологии и химии,ходил бы на лекции,нашел бы девушку с которой можно было-бы приятно проводить время,забыл бы нахуй это айти и прожил бы счастливую жизнь
юпд. прыгать со скал с парашютом,наслаждаться красивыми видами,даже можно попутешествовать и даже завести детей
Эээх...Как бы хотелось прожить такую жизнь сук...
>>528176
да хер его знает,дрочить всю жизнь малваре в авлабе это тоже не верх интеллектуальной деятельности.
+надоест быстро,я думаю
Всякие великие штуки типа лекарства от рака ты без миллионов долларов и кучи свободного времени не сделаешь все таки
Я о том, что хватит мечтать и делай работу, что делает другая сотня людей. Ну и развивайся.
А вот сидеть нихуя не делать 10 лет, и потом выпускать нечто гениальное уже менее полезно.
так это же отстойно,сидеть и делать рутину...
Мне моя концепция с спизжеными битками и деланьем любимого дела нравится больше,если честно
Да пошли вы в пизду тогда с своим программированием,в рот я вас ебал делать однообразную хуйню всю жизнь
На днях займусь тем чем собирался,ты меня окончательно переубедил.
По-моему норм, там из требований только знание x86 ассемблера, который осваивается за 2 месяца.
Макак как раз таки рыночек порешал, там сейчас дикий пердолинг фуллстек с кучей йоба технологий или иди гуляй, а реверсеров годами ждут и ценят. Только что погуглил, у джунов макак тоже в районе 60-80к зп. Вы переоцениваете сложность реверса, это абсолютно аналогичное по сложности осваивания ремесло и чем-то даже менее стрессовое чем программирование. Сидишь пердолишь семплы, никуда не торопишься, пока макаку ебут в жопу за проебаные дедлайны и говнокод.
кто ждет?на хх 1-2 обычно,если вообще есть,обновляются редко
но в чем-то ты прав,а потом можно накачаться и сплойты пилить и продавать например
Контекст потока сохраняется, переключается на ядро. А дальше либо ядро сразу обрабатывает вызов, либо откладывает поток в список ожидающих io. Когда все обработалось, контекст заменяется на юзермодный обратно.
> пропускает
После того, как eip/rip сменился, об этом уже сложно сказать "пропускает".
Так кто обрабатывает мой системный вызов? Системный ядерный тред из тредпула или у моего юзермодного треда меняется контекст и он выполняет всю работу?
Потому что дополнение до двух, ты что, совсем тупой?
Кстати да, заметил что все крутые багхантеры долбят 1-2 конторы. Так они по-любому какой-то сканер ставят, которым им алерты выдает чуть что в инфраструктуре изменилось. Вангую у них там покрыто все, похлеще блекхетовский штучек. Ну не верю я, что они руками каждый раз аудит проводят по новой.
Я тебе одну вещь скажу, ты только не обижайся (с)
Нравится ковырять бинари - ковыряй на здоровье. Кто-то готов тебе платить тебе, за то, что ты круто ковыряешь бинари - еще ахуеннее.
Но, ты увидел скрин чувака, который, возможно, поднял бабла ковыряя дыры в софте и решил, что тоже так хочешь - wrong.
ИМХО, возможно данный гражданин пиздит, возможно данный гражданин - официальный рекламный партнер H1 (сам не был их клиентом, но видел неоднозначные отзывы), возможно данный гражданин медиа представитель команды рабов NSA завлекающий соответствующих ботанов-аутистов работать на благо родины. Короче, я бы не стал доверять никаким красивым картинкам.
То, в чем можно быть уверенным - шансы на успех минимальны, если ты хочешь только результат и при этом не наслаждаешься самим процессом.
Я уже давно хотел вкатиться в автоматику, а тут твит в глаза бросился, еще раз убедился в том, что нужно копать в эту сторону. Думаю здесь без автоматики здесь не обошлось, решил у анонов спросить что вы думаете по этому поводу.
Алсо, на счет бинарей, где можно скачать нужные мне бинари конкретной версии винды? Дллки беру здесь https://www.dll.ru/, но нужны экзешики и дрова в том числе.
0. В декомпиле не подсвечивается переменная в соседних никаким образом, когда на нее курсор наводишь. При скролле и курсор сдвигается. Нередко приходится выхлоп декомпиля в нормальный текстовый редактор копировать, чтобы удобно по нему ориентироваться.
1. Постоянно ломается что-то, когда переименовываешь локальную переменную. Она переименовывается в какое-то говно вида aQstack59 и вываливается ошибка по размеру данных. Видимо, простое переименование триггерит какой-то DataFlow-анализ, который почему-то обламывается. Если откатиться (не по Ctrl+Z, а через переоткрытие проекта), то может прокатить повторная попытка.
2. Снова переименование, но уже класса. Его можно переименовать в окне редактирования его полей, с вероятностью 80% это ломает вообще все. Можно переименовать в SymbolTree, но при этом у меня часть функций продолжили ссылаться на уже не существующий тип данных, через Clear Flow and Repair привязки исправилась, стерев при этом названия всех полей класса, которые я собирал по кусочкам последние два часа.
Декомпиль по сравнению с Идой конкретно в случае с моим бинарем очень приятный. Код генерит простой и пошаговый, а не эзотерическую околоолимпиадную магию с непрозрачным жонглированием битами, как это делает в моем случае Ида.
Не отрицаю, что я вообще не очень понимаю, что делаю, и, возможно, эти постоянные ошибки парой действий можно уверенно исправлять, не теряя проделанной работы, но такая нестабильность удивляет, ведь Гидру должны были сотни реверсомакак каждодневно использовать.
Пишешь генератор малвари и сразу же разбираешь скриптами.
>Малварь пишет исключительно школота и макаки
малварь для целевых атак - нет
а на обычной можно быстро заработать,а не жрать гордым дошик,а после пары лет идти в групиби чтобв работать за 50-60к и дальше сосать хуй
уж лучше делать говномалварь с такими зп
> малварь для целевых атак - нет
А ее пилят студентики какого-нибудь ИТМО/МГУ, макаки те же, но с мат. бэком. Тему с зп и карьерным ростом уже обсуждали, все в порядке. Уходи из треда, здесь белые шляпы обитают.
>А ее пилят студентики какого-нибудь ИТМО/МГУ, макаки те же, но с мат. бэком.
Зачем тебе мат бэк чтобы малваре пилить?Почему именно студентики?есть же гос группы у которых бюджеты пиздец какие и там явно не студентота
И почему они макаки?
>>537270
Я к тому, что гуманитарий сможет написать что-то уровня хеллоуворлд-малвари, которую дятел расковыряет за часик под пивко или которую автоматика сама проглотит, но точно не малварь для целевых атак.
> Почему именно студентики?есть же гос группы у которых бюджеты пиздец какие и там явно не студентота
Там как раз студентота и сидит.
> И почему они макаки?
Потому что студентота, очевидно же. Нет опыта = говнокодят = макаки.
>>537269
Зерепортил.
>Я к тому, что гуманитарий сможет написать что-то уровня хеллоуворлд-малвари, которую дятел расковыряет за часик под пивко или которую автоматика сама проглотит, но точно не малварь для целевых атак.
У тебя какое-то странно представление малвари для целевых атак(Или у меня)
Малварь для ца должно быть сложно отреверсить или что?(с автоматикой понятно,она должна быть наебана чтобы все нормально отработало)
Зачем тогда семенишь? Шифруешься, малварьщик? Кидай сюда свою малварь для целевых атак, посмеемся. Она как минимум должна быть уровня Cobalt Strike.
>Шифруешься, малварьщик?
Да не особо если честно.Так,тыкаю сэмплы с твиттера разве что и смотрю что нового выходит на рынок
>Кидай сюда свою малварь для целевых атак, посмеемся
Я говорил что я ее делаю?Я говорил что я малварщик или тем более хороший малварщик?
Че ты накинулся вообще?
>Cobalt Strike
Это который гуй под метасплойт?
>Cobalt Strike
Он как раз и "реверсится за час под пивко" т.к. там нет никакой защиты от рерса. Только функционал
Руками в серьезном софте практически никакие дырки не находятся, лол. Грубый ручной статический анализ бинаря, в котором несколько десятков, а то и тысяч, функций, да еще если он stripped - чисто физически нереально. К тому же, очень легко самому прощелкать еблом и проебать дыру.
Ищут софтом (не только фаззерами, если чо), вручную долбят только подозрительные процедуры дополнительно. Найти уязвимость - полдела. Ее еще надо эксплуатировать (ну, или хотя бы вменяемый РоС написать), что с нынешними технологиями защиты не так просто. Ломать бинарь, даже с уже известной уязвимостью, при включенном ASLR, DEP, Full RelRo, ASCII armor, PIE - очень непросто. Если бинарник 64-битный, коих в 2к19 абсолютное большинство, то написать под него надежный эксплоит ОЧЕНЬ сложно, особенно если нет бага, который приводит к утечке данных (как в ошибке форматирования строки, но такие баги сейчас - большая редкость). Поэтому это энивей требует огромного багажа знаний в ОСях, структуре бинарников, да и вообще требует креативный и пытливый разум, поэтому не думай, что софт делает за исследователя всю работу, это лишь вспомогательная фича.
А нечего малварь здесь форсить, если у тебя деструктивный образ мышления, то не надо его распространять на других.
>>537524
Там даже из коробки модулей на несколько метров. Тот же бикон можно в проксю завернуть, как он сам это делает с другими тулзами и отреверсить получится только хуй с маслом, потому что вся логика останется на тим сервере.
Написал лабу челику из интернетов, но он не может её сдать, потому что не может в ней разобраться, мол они такого не проходили, как сделать её примитивней я хуй знает, может у вас буду мысли, как упростить
Ввести с клавиатуры строку с разделителями, поменять местами первое слово с последним, второе с предпоследним и тд, вывести результат
Вот что я писал, он жалуется на непонятную обработку в мейне и чето блять с выводом ему не ясно, я уже не могу с ним разговаривать
.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
main endp
code ends
end main
Написал лабу челику из интернетов, но он не может её сдать, потому что не может в ней разобраться, мол они такого не проходили, как сделать её примитивней я хуй знает, может у вас буду мысли, как упростить
Ввести с клавиатуры строку с разделителями, поменять местами первое слово с последним, второе с предпоследним и тд, вывести результат
Вот что я писал, он жалуется на непонятную обработку в мейне и чето блять с выводом ему не ясно, я уже не могу с ним разговаривать
.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
main endp
code ends
end main
> как сделать её примитивней я хуй знает
Зачем ты строку разворачиваешь, поехавший? Просто сканируй ее с конца на предмет пробелов и копируй/выводи найденное таким образом слово.
Инди, ты что ли?
ну погугли историю про то как реверсили вмпрот, вот те же грабли. Ну и не чел а группа людей по предварительному сговору. охуилярд человекочасов.
Это время в пустую, разок ради ачивки разве что, другое дело если бы он автоматикой распаковывал и действительно нашел способ обрабатывать любые исключительные случаи вмпрота.
заладил ты со своей автоматикой. автоматика появляется только после ручных разборов лол. До этого макаки страдают и ждут пока кто то сделает/
Ну и вполне возможно что у них все же уже софтина почти/готовая. скопипащу:
>--> vmprotect 3 trojan unvirtualize <-- - сэмпл автоматика разбирала, сам дамп не рабочий. Но явно близко до выпиливания вмпрота из малвары с последующим восстановлением исходного кода.
>DENUVO 1-3 (VMProtect 2.06 - удалось установить точную версию) в теории и "ломается" за два/три клика. Под "ломается" подразумеваю построение зависимостей HWID от набора секретных DWORD, вшитых в файл лицензии Origin/Steam. В ранних версиях за OEP даже ехать не требуется. Допишите "trace analyser" (анализ хендлеров VM и трассировщик с подавлением защиты целостности VMProtect готов, количество VM не играет никакой роли) для Denuvo_Profiler и будет Вам счастье
Там два этапа, распаковка это практически автоматика, а вот девиртуализация это примерно как собирать банкноту после перекрёстного шреддера, переваренную и высранную слоном. Если по-простому, есть два варианта - делать это полу-вручную, копаясь в слонячьем говне, для этого нужно быть человеком дождя, и сделать робота для сбора этой банкноты, что еще сложней.
>разок ради ачивки разве что
>the main idea of this project was to verify whether Denuvo affects CPU usage and overall performance of this game
Это другое.
>потому что вся логика останется на тим сервере
Это не усложняет реверс, а вообще делает его неприменимым. Я про дэфолтный бикон. На нём нет обфускации. Хексрэйс сами с ним спрявятся. А исходники метерпретора вообще на гитхабе лежат. И насколько я помню у коблаьтстрайка с метаслплоитом нет встроеных модулей чтобы их обфусцировать. Они скорее зашифруют длл, а потом инджектнут в тругой процесс чем будут пытаться что-то офусцировать на уровне asm кода. А именно сложность чтения ассемблера делает реверс сложным. Вот я и говорю, что раз не обфусцирован, то и реверсить легко.
Вы всё о высоком, а толковых мануалов о том как сделать глобальный хук я чёто не наблюдаю.
На подступах
Сообщения ловит, но не передаёт в основной поток. Можно же весь код в эту дллку запихнуть, че я мучаюсь.
Открыл ее в binEdit(OllyDbg не смогла)
Правильно я понял что комментарии к коду сгенирировал
сам binEdit?
Почему? Жизненный мем же. Всегда проигрываю с маня-хантеров, которые на серьезных щах пишут о том, как они нашли xss на васян.ру проставив ковычечки. Такое то достижение!
Мы и так знаем что ты в теме бро, не нужно вкидывать раковые мемы и объяснять их. Лучше расскажи из жизни что-нибудь по теме имела интересного
Но вкидывал я, а писал - он)
По теме сейчас классную книгу читаю. The art of exploitation. Очень мощно, прям в подробностях объясняют базовые бинарные уязвимости и эксплуатации.
Собсна, мем потому такой и выбрал, что плавно вникаю в тему pwn/rop/aslr, а вокруг мои знакомые ковычки кругом тыкают да в бурпе сидят
Я надеялся что тут кипит хоть какая-то жизнь, а тут весьма вяленько
Меня там иногда постят!
Так это ASM & Reverse engineering тред, мы здесь малварь ковыряем, да винду ресерчим, а не баги ищем.
Я например в играх читерю. (и шинду ресерчу, да)
Хотя античит по сути и есть малварь, и по устройству и по цели применения.
Ну тут ведь нету PWN CTF треда. А создавать я его не хочу, это ж напряги вот эти вот. А я себе баночку курнул, иду открыл, GDB запустил и развлекаюсь. Че, нельзя тут, гражданин начальник?
Я относительно ньюфаг, обламываю зубы об ЕАК пока, расковыриваю дамп, ковыряюсь пальчиком в ядре, пытаюсь байпас захерачить. У меня уже каждый кусочек железа в тестовой пеке там побанен наверно. А сам пейлоад писать да игру реверсить ума много не надо.
>а вокруг мои знакомые ковычки кругом тыкают да в бурпе сидят
Как будто что-то плохое.
Устав от реверса я вкатился в баунтихантинг.
На пиво хватает.
Вкатываюсь в асм, есть годный учебник на пикрилейтед, но листинги кода там для FASM.
А мне нужен годный учебник с хорошим введением в принципы работы процессора (не обязательно) и (обязательно) адаптированный под синтаксис TASM. Потому что в FASM нету отладчика под DOS.
Подскажите учебники плиз.
Tasm ? Если новичок вкатись лучше в MASM, уйма документации, .chm Юрова и его книги с примерами ещё быстрее помогают вкатиться
1280x720, 1:18
https://norseev.ru/books/windowapplicationfasm/
FASM сила, masm могила
Изучай Olly
https://wasm.in/blogs/vvedenie-v-krehking-s-nulja-ispolzuja-ollydbg-glava-1.433/
Я тут единственный кто смог что-то написать, остальные умничают а толку нет.
Однако суть асма это работа, асм должен работать, хоть что-то делать, хоть складывать 2+2, но асм должен работать.
Но я не вижу чтобы асм работал, одни заумные фразы, но по факту то ноль.
Fasm придерживается именно такой филасофии - он для того чтобы делали.
А отлаживать проги под DOS там разве можно?
Любой программист понимает, что понимание асма, это ключ к пониманию любого высокоуровнегого транслируемого языка и его компилятора.
А также ключ к пониманию работы самого железа.
Ну вот я выше спрашивал про глобальный хук. Но ведь ничего не сделано же. Мне нужен глобальный хук чтобы прога за меня перепечатывала сообщения в игры, в которых отсутствует возможность вставить текст через ctrl+v, и вообще получить доступ к управлению приложением через посылаемые сообщения.
Вы мне тогда не ответили про команду sleep и вот это продолжается. Это не упрёк вам, просто на этом можно делать деньги.
Но это АСМ детка. Научись писать на нём законченные приложения. Очень много предприятий нуждаются в асм-приложениях, просто они об этом не знают. Особенно предприятия занимающиеся торговлей, там где точность сократит расходы, сократит время сотрудников.
Поэтому мы должны именно делать, мы должны дать понять людям что это не предел мечтаний, что можно ещё так и вот так. И всё, у них станут появляться запросы, высокоуровневые конечно же будут возмущаться и говорить нам какие мы бестолковые и ничего не умеем, но мы то будем делать, а они просто говорить.
Да че-то да, пива перепил. Хотел сказать что есть много задач которые можно решить асмом, но они не всплывают, потому что.. Потому что никто не задумывается, все живут в высоких материях. Я дра там компилят и прочее
А эти потребности это деньги, но даже сам потенциальный клиент не знает что он нуждается в "моей" программе, это как бы суть эпохи.
Ну и мне хотелось бы обсуждать этот вопрос, как, где, в какой области искать этих потенциальных клиентов, как им доносить что это им нужно.
Предприниматель занимается продажей помидор, у него скажем 100 точек. На каждой точке у него есть весы, на эти весы он покупает по, чтобы они вообще взвешивали. Этот предприниматель знает что один продавец сможет взвесить на этих весах 100 кг помидор в день, поэтому у него максимальный оборот 100 кг помидор в день.
Но потом на одну из точек устраиваюсь работать я, и вижу что тут нужно всего 30 строк на асме и весы будут взвешивать в 10 раз быстрее, и предпринимателю не нужно покупать по на каждую точку, а нужно всего лишь заплатить один раз мне.
Вопрос: как мне узнать в чём нуждается конкретный предприниматель? Как мне его убедить в том что он нуждается?
Всем похуй на асм, кроме реверса. Всем нужны либо веб-макаки с пистоном/пхп впридачу, либо с++ кодеры.
Никак. Ты либо убеждаешь быстро за два предложения, либо ему это просто не нужно.
И почему если не написать mov 0 rdx, то выходит floating point exception? еще можно написать cqo, но я так и не понял что эта инструкция делает
>а тут div работает только при делении 128 бит на 64?
Так у тебя на картинке 64-bit dividend и 32-bit divisor, откуда ты взял 128 и 64 бит соответственно?
> Почему для умножения, сложения и вычитания нам достаточно одного 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 просто обнуляешь.
>>546993
> откуда ты взял 128 и 64 бит
Ну очевидно же, что он под 64-битную машину пишет, а на картинке 32-битная. Суть-то не меняется.
Да, inx инкрементириует пару (BC/DE/HL) или SP, указываешь первый регистр в паре.
> Но как тогда обращаться с переполнением?
Страдать, проверяя результат на 0 вручную, например. Эта инструкция вообще в основном требуется, чтобы по массивам гулять (инкрементировать указатель после LDAX/STAX/M у MOV - вот это все), и в таком варианте использования случаях тебе не особо нужно думать о переполнениях.
Спасибо!
>>548993
У античитов своя атмосфера. Им невыгодно сразу рвать жопу, иначе читописцы тоже подтянутся и придется рвать жопу еще больше, а единичных васянов вроде меня с кастомным дерьмом всех всё равно не заловишь. Они пытаются глушить наибольший текущий раздражитель в виде текущих коммерческих читов, не более. Поэтому работают по схеме что-то произошло - как-то отреагировали. Обычно это происходит мега-уебански и на полных похуях, например в одной игре недавно заблочили USB VID/PID всех мышей A4Tech, ибо некоторые из них могут макросы на антиотдачу на контроллере мыши исполнять. (уже представляю как афотеки выпускают прошивку со спуфингом ID). Кроме того, в паблик античитах стараются особо не параноить, по куче причин. В лиговых более параноидальный режим.
Про то, что практически все античиты это как минимум спайварь, я и говорить не буду. В 2013 esea умудрился даже майнить на компах клиентов, лол.
Гуглится же.
https://play.esea.net/forums/492102
Этих даунов потом штрафанули на лям
https://nj.gov/oag/newsreleases13/pr20131119a.html
помимо этих линков, дохуя шитшторма было на разных ресурсах
Кастомный драйвер понятие растяжимое. Я уверен, что смог бы отловить его на 100%, только если это не гипервизор другой уровень пердолинга, придется фазить гипервизор для поиска уязвимости и последующего детекта или загрузочный пакет UEFI. Кроме того, конечная точка любого софта - это процесс игры, следовательно его модификация, которую скрыть просто невозможно можно через SLAT.
Алсо, за читы тоже уже бутылят. Скоро за обычный фриланс сажать начнут. А что? Налоги не платят - пусть сидят. Пиздец конечно.
А вот это пиздос конечно..
Может он именно малварь под видом читов пытался распространять? Просто как бот/кликер под 273 можно подвести? Да и кому прижало его в РФ искать за бота в забугорной игре?
Слышал в китае челам, которые для пубг читы писали, давали реальные сроки лол
Напиши статью с подробным разбором. В сети не хватает нормальных тьюториалов по каким-нибудь большим работам, а не по крэкми на сорок минут.
Серьезное что-то нашел?
Аж интересно стало, напиши подробнее что и как, плиз если конечно ценности уже не представляет.
>Кастомный драйвер понятие растяжимое. Я уверен, что смог бы отловить его на 100%, только если это не гипервизор другой уровень пердолинга, придется фазить гипервизор для поиска уязвимости и последующего детекта или загрузочный пакет UEFI. Кроме того, конечная точка любого софта - это процесс игры, следовательно его модификация, которую скрыть просто невозможно можно через SLAT.
Рано или поздно проблему решат радикальным образом - у пекарастов отнимут швабоду нахер, введут анальный chain-of-trust на уровне EFI, забанят прыщеОС, а для "программмируевать" разершат использовать только вижуалстудию и только для зарегистрированных лиц с паспортными данными и под NDA.
Ну да, у эпл все оси на таком принципе и работают. Анальный вендорлок, пукнуть никуда нельзя.
Вангую, что это последствия линковки. Берутся, потому что так удобнее линкеру и компилятору. Второй вариант - разработчик сам обернул внутренний апи функциями с точно такими же аргументами (в виде задела на будущее), а компилятор увидел, что аргументы совпадают и заменил обертки на jmp.
>>550275
> у пекарастов отнимут швабоду нахер
Фантазии такие фантазии. Скорее x86 умрет, чем обычные пользователи начнут жить исключительно с подписанным кодом. На самом деле, худшее, что могло случиться с читами, уже случилось, и называется оно Google Stadia.
> чем обычные пользователи начнут жить исключительно с подписанным кодом
Уже есть такое, гугли Windows 10 S (secure).
А смысл? Цепочка доверия и сейчас есть, читам она не мешает и никто особо не морочится чтобы её отключить, есть попроще способы поковыряться в ядре, чем в уефи лезть. Если на системе можно выполнять произвольный код, и есть драйверы от криворуких вендоров, её всегда можно будет сломать, как ни закручивай анальные гайки. В читерстве ты контролируешь систему и можешь легитимно привести её в произвольно уязвимое состояние, а обычно оно такое и по дефолту.
>>550421
Стриминг-сервисам лет уже больше десятка. Стадию в гугле кто-то внедрил ради KPI, и она не особо. Хороши в этом плане разве что разработки OTOY, но рендерить лайтфилды обосрёшься. В любом случае, стриминг скорее наоборот приведет к необнаруживаемым читам. Уже сейчас в пиксельных аимботах успешно играются с ML, просто сейчас игра не стоит свеч.
>>549828
Гипервизоры тоже довольно популярное дело, да. И модификация не всегда нужна.
Дыры драйверов от криворуких вендеров патчат каждый апдейт и добавляют в блэклист, ось их тупо не загрузит. В инсайдер версиях винды уже никакие дрова не работают.
> И модификация не всегда нужна.
А как по-другому? Мышь эмулировать, да квадраты рисовать? Это еще проще спалить и софт выходит низкого качества.
В любом случае на текущий момент все античиты говно полное. Вангую им майки скоро подгонят интерфейс, типо threat-intelligence.
Также в инсайдер версиях винды уже обкатывают легитимный перехват системных вызовов в ядре, скоро наступит пиздец всей малвари.
Но сейчас прочитал в датабуке
>>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 ?????????
> в зависимости от четности результата операции
Ту четность ты можешь and-ом проверить. А эта предназначена для контроля целостности: ты берешь данные, дописываешь к ним PF и отправляешь по какому-нибудь модему. Принимаешь, кладешь в регистр и тестишь PF (вариант: аппаратно ксоришь биты между собой и инвертируешь результат). Если результат 1, то была ошибка при передаче, если 0 - при передаче ошибок либо не было, либо было больше одной 1-битовой ошибки.
> он проверяет на четность сумму битов
Да. Или проверяет, что количество ненулевых битов четное.
Пасиб!
#pragma data_seg(".sec")
__declspec(allocate(".sec")) unsigned char buffer[size];
#pragma data_seg()
Работает, но если включить оптимизацию, то очевидно компилятор оптимизирует этот хак. Как это делается по канону?
Все равно исключал из сборки, но я разобрался, нужно было нулевой указатель добавить, как это делается при сборке TLS директории. А я был убежден, что должна быть какая-то директива для подобным манипуляций. По-моему уж где, а в студии должны быть такие вещи. Я уже месяц пердолюсь с этим PE-форматом и у меня реально голова болит от этого пиздеца, особенно от таблицы релокаций.
Все разобрался
Просто рандомное название для 64 регистра, думал конкретно "13" может что-то значит
Многое спасибо
Хочу написать фаззер средней паршивости в качестве проекта (не уровня afl офк, Москва не сразу строилась, но с чего-то надо начинать), че посоветуете покурить?
https://youtu.be/BrDujogxYSk
У него вроде еще самоделки с пояснениями были полистай канал, если зайдет.
Программы, которые имеют выход в сеть (или либы, которые дают сетевой функционал программе).
Совершенно очевидно, что фаззер должен будет искать в бинарнике функции инпута, которые получают и обрабатывают пакеты, и фаззить их. И иметь функционал black box фаззинга на случай, если нет исходного кода.
Эта программа должна находить корень на промежутке a, b по формуле f(x)=x3+5x2–4x–20 с точностью до e. Е здесь это не число e, а просто переменная.
Вроде бы всё понятно, кроме одного: что значит "с точностью до e"? Если что, e здесь просто переменная, а не число вроде пи.
Ай, бля, с пояснением про E повторился. Повторенье мать ученья, да?
https://yadi.sk/d/8aVM6NhjK3fvcA
Плагин для бурпа/шарка напиши.
Я из этого определения не понял ровным счётом нихуя
>Метка – идентификатор, который используется в программе и возвращает адрес памяти, по которому она находится. Метка – это главная форма взаимодействия с данными в памяти. Если метка используется в программе, то фактически на месте метки будет стоять адрес, на который она указывает.
>Существуют разные способы определения меток. Простейший из них – двое-точие после названия метки. За этой директивой на той же строке может следовать инструкция или директива. Она определяет метку, значение которой равно смеще-нию, т.е. адресу точки, в которой она определена. Вернее, смещению следующей директивы или инструкции. Этот метод обычно используется, чтобы пометить ме-ста в коде, но ничто не мешает вам пометить этим методом данные.
Метка - абстракция для людишек, ибо гораздо удобнее воспринимать адрес как yobaaddress, нежели 0x0804f5a7. По той же причине, что и удобнее написать mov eax, 10 , нежели писать эту инструкцию в виде опкодов.
Гуглил много, именно для tasm не нашел нормального решения без пердолинга в жопу, XCode посылает нахуй даже препода и не хочет компилировать вообще ничего.
Да, забыл сказать, что он должен быть x86
> которые может в FASM синтаксис
Нахуя?
> Посоветуйте нормальный дебаггер
WinDbg единственный нормальный дебагер, но там сложна. x64dbg твой выбор.
В твоем IDE нет дебагера? Или ты в нотпаде пишешь код?
>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 наносекунды.
Чому всё так слоожнооо?: Оказывается еще что в мануале под "cycles" понимается "machine cycles" а "clock cycles" - это "flags", но "flags" это так же и матоп флаги... Ааааааааааа!!!!!1
пасиб.
Методом итераций делай. И там не e скорее всего, а ε, иначе составитель официально хуесос.
Пушто от нуля считают.
Ну перехвати инпут/аутпут и делай с ними все что хочешь.
В процессоре каждое ядро имеет свои собственные регистры, или регистры одни на весь процессор?
Если второй вариант, то как работает тот же рендеринг на процессорных ядрах? Ведь там по сути всё идёт параллельно, а значит по логике, должнен быть отдельный набор регистров для каждого ядра. Но ни в одной книге по ассемблеру, или архитектуре процессора я не нашёл ни одного упоминания о том как работает многопоточность
Если коротко, то так (отсюда https://habr.com/ru/post/482170 ) а длинно - открой любую книгу по архитектуре процов
>языке процессора
Ассемблере всмысле? https://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like
Параллелизм != многопоточность. У процессора нет потоков, потоки это абстракция ОС.
Последовательность выполняющихся инструкций - это поток. Процессор инструкции выполняет? Тогда какие проблемы? У всех процессоров есть потоки (но не те, что в ОС), а у x86 есть даже задачи настоящие (только ими никто не пользуется).
Ну да, я это и имел ввиду, мне кажется не совсем корректно называть это потоками, тк это не объект, как в случае с абстракцией ос, тогда уж поток выполнения. Код выполняется на логическом/физическом процессоре (ядре).
Сам асмокод компилится, но вылетает ошибка пикрелейтед
Я нихуя не понимаю, в чём проблема
Есть SASM
Но он какой-то багнутый. Может это я криворучка, но у меня черезнего не компилился код, экзамплов, которые идут в комплекте с ФАСМом с оф сайта При чём при запуске через стандартный "IDE" если его так можно назвать, ФАСМА всё спокойно компилилось
Я в курсе. Но как ни крути, работать это так или иначе должно. Но тем не менее не работает
MessegaBoxA/W, нюфань...
Отложите дебаггер,вим,ИДЕ и прочие инструменты
Постарайтесь провести его хорошо :3
И тебе, анончик.
А у меня наоборот вдохновение пришло. Составил себе список пет-проектов на год, книжки подобрал для чтения там Востоков опять годноту написал по отладке, windows internals
2 часть 7 издания выходит и еще много всего, листаю твитер в поисках годных блогов, слепил пару плейлистов на ютубчике, итд.
>книжки подобрал для чтения
>твитер в поисках годных блогов
>слепил пару плейлистов на ютубчике
Поделишься?
> книжки подобрал для чтения
https://www.patterndiagnostics.com/
https://www.amazon.com/Windows-Internals-Part-2-7th/dp/0135462401
https://www.amazon.com/Hardware-Software-Virtualization-Synthesis-Architecture/dp/1627056939
https://www.amazon.com/Windows-via-C-6th/dp/0135953391/
+ пикрил моя текущая библиотека
>твитер в поисках годных блогов
>слепил пару плейлистов на ютубчике
Всего подряд накидал, не сортировал еще, ссылок 100 вышло. Плейлисты буду собирать из выступлений на конференциях, их тоже надо посмотреть сначала.
Thnx a lot
>>501062
Апдейт того, что у них изменилось за год нихуя https://vmcall.blog/battleye-analysis-2020/
Кому надо - велкам в их телегу https://telegra.ph/MIYAMOTO-SYNDICATE-06-16
В чём?
Два совершенно разных инструмента, грубо говоря фаззер подготавливает и грузит пейлоады, а санитайзер отлавливает ошибки. Обычно работают в паре.
У меня тут встал вопрос. А могу ли я накатить макось на виртуалку и ковырять ее там? Или без техники ЭПЛ не обойтись?
Скажите плиз, в реальном софте, а не в крэкмис или челленджах на ситиэфах, вручную статическим анализом ищут дыры в софте или в нынешних реалиях это невозможно? И без скриптов/фаззеров не обойтись никак от слова совсем? Просто написать эксплоит под дыру - сам по себе челлендж в реалиях 2к20 года со всеми технологиями защиты целостности памяти, а найти дыру в сотнях тысяч строк кода, пусть даже если есть исходник, это же пиздец анрил.
Ищут. Читал статью (хотя возможно смотрел видео) как чувак прочитал описание одного cve в виндосовском драйвере. Увидел, что там неправильно аргументы передали в какую-то стандартную функцию перепутав 2 аргумента местами. Это позволило экспоитить rce. Потом он тупо скачал драйверы разных антивирусов, прошёлся глазами по всем вызовам этой функции во всех драйверах и в некоторых из них нашёл такую же ошибку разработчиков. Дальше эксплоить не стал.
>Интересно, что там с этим >>549844 читаком..
Если дело завели, значит посадили/посадят, 99%.
Но стори натурально мутная, просто так им нахуй не сдалось бы бутылить. Под 273 читы пока вроде не подводили, может там еще что было. Подробностей бы.
>>549844
Я абсолютно уверен что у кого-то такой бизнес даже оформлен по закону.
Так показывают
Ты про instruction pointer? Или effective address ? Любой отладчик показывает. Любой отладчик в принципе показывает все что нужно и даже больше.
Нужно (в виде текста или стандартного потока) отображение всех регистров, которые использует и меняет конкретная инструкция, соответственно до и после выполнения инструкции.
Так это цветом обозначается. Во всех отладчиках. Не замечал что ли?
Можешь, хотя это и является нарушением 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;
После чего я мог использовать переменную в обоих файлах.
В старых - ставишь xcode с образа вида xcode-хуй-пизда.dmg
Если чисто в консольку пердолиться и шеллкоды писать - можешь поставить консольные тулзы. Но они ставятся где-то только начиная
Конпялятор - очевидный gcc или шланг в зависимости от версии хкода, ассемблер - очевидный nasm или gas (под ppc nasm нирикоминдую). Отладчик - gdb.
Если понадобятся m4, лексы-хуексы, cmake - всё это ставится из brew или портов.
сш скрипт с echo hui pizda внутри это будет шелкодом?
Я пиздец тупой,знаю
Тфу, не дописал.
Скрипт для автоустановки консольных тулзов есть только где-то начиная с 10.10. За полным образом xcode надо ходить на девелопер.кукоблядь.ком и иметь apple id.
>>567298
Шеллкод это хуйня написанная на асме (или вообще в hex-кодах), которая запихивается в дырку (переполненный буфер) и на неё передаётся управление.
Например, если в проге буфер длиной 100 байт - можно передать ей 101 букву А + в конце шеллкод, который запустит rm -rf /
> Что такое шеллкод
Исторически - код, который спавнит шелл и привязывает его к сокету. Чтобы ты байтики отправил =-получил удаленный шелл. А сейчас любой исполняемый код, который удалось запустить не предназначенным для этого способом, даже если он калькулятор запускает.
Решил проблему, оказывается на masm'e можно кастить, прям как на сях.
>Почему на зеродиуме покупают за миллионы только бинарные уязвимости?
Сложность их доставания их и потенциальный дамаг который ты можешь им нанести.
Зиродиум селлит только госам,а им не очень интересно где там можно поставить ковычьку,а вот всякие рце в хромах это пожалуйста
мужики выручайте
https://github.com/Inndy/ggpk-tools
переделайте под fasm, ну или хотя бы что то накидайте, а я буду пробывать. а пока я пойду пофармлю эхальт
проиграл,спасибо
gcc -S -masm=intel тебе "накидает". А вообще иди нахуй, никто бесплатно за тебя твои лабы делать не будет.
Шизик, ты уже целый месяц в нескольких тредах всех нахуй посылаешь. Не устал? Что-то мне подсказывает, что ты сам нихуя не знаешь.
Тебе уже сказали, как переложить твои 30 строчек кода на сях в ассемблер. Если ты настолько тупорогий, что сам этого сделать не можешь.
В принципе, да - 32 бита, двойное слово. Там вообще лонг с интом конфликтуют в JNI. Чувствую, это надолго.
>>570497
Сразу тебе спасибо, ты мне уже тут однажды помог.
https://ideone.com/3sqDGp
Где можно скачать крякнутый фулл hiew?
Нет, инт платформозависимый.
Я тоже нихуя не понял, странная методика у него. Попробуй что-то другое почитать.
Челик, если ты не знаешь Си, кресты, асм хотя бы одной архитектуры, основы операционных систем и системного программирования, лезть в реверсинг, а тем более бинарную эксплуатацию, вообще смысла не имеет. Это все равно, что начать изучать математику в первом классе не с арифметики, а курса матанализа уровня MIT. Камон.
Почему во время статического анализа меня тянет взять листок и ручку и рисовать стэк, дабы не запутаться в асме? Это норма или не?
Ага, только определенные знаки в этом году смогут залезть в реверсинг. Читать дальше....
>Выучить основы С, чтоб хоть что-то понимать?
Нет, с ОСНОВАМИ си тебе разве пхп получится выучить. Тебе надо углубиться в си. Учи указатели. Как работает память. В идеале пиши собственные программы, и исследуй их листинг ассемблера. Посети ##
Сказки не рассказывай, каждый может вкатиться с нуля. Достаточно быть обучаемым и замотивированным.
Кстати это ведь я так понял просто шелкод который переодически сканит изнутри процесса игры, в самом драйвере там наверное еще дохуя всего.
А какой смысл им делать все эти сканы из под юзер мода, если можно делать все то же самое и даже больше из ядра?
Потому что:
> античит - говно от поехавшего немца-бухарика
Собственно поэтому китайцы и убили пубг и прочие дрочильни, а сами разрабы пубга пошли по стопам близзард и пилят интегрированную защиту.
loc == location, кусок кода под лейблом, куда идет прыжок при выполнении каких-либо условий (не функция, засим новый стэковый фрейм там не открывается)
Очевидно, что у игрового движка будет класс отвечающий за текущее состояние игры и в нем будет переменная определяющая идет игра или нет.
Спасиб
лол, всё начинается с мибендовскими прошивками примерно так (но путь пройден до тебя) https://myamazfit.ru/threads/instrukcii-po-rabote-s-proshivkami-cherez-ida-pro-i-binedit.97/
https://pastebin.com/bZG2Zgyn
Программа должна переводить две 8-длинные строки в числа, суммировать их, переводить в третью строку и печатать ее на stdout. До суммирования включительно все заебись, но при первом же делении результата на 10 случается хуйня. Я ебал.
А я, блядь не могу. Оно не хочет по одной инструкции выполнять. Может надо не голый _start писать, а main, потому что отладчику там уютнее с первой точкой останова размещаться? Anyway, я четко вижу, что в регистре rsi 22222222, он копируется в rax и делится на r8, который 10. ЧЗХ?!?!
секунда в гугле https://stackoverflow.com/questions/8649180/assembly-divisions-and-floating-points
RDX занули, он divом воспринимается как верхняя часть делимого
Спасибо, анон. Буду внимательнее. Знал лишь, что умножение в RDX верхнюю часть кладет, а деление - остаток. Данный же случай вполне, однако, логичен.
>divl
это деление 16 битного AX на 8 битовое значение имеется ввиду? Ну если делимое в 8 бит укладывается, то можешь и так. Удобнее просто rdx занулить и работать с 64 битным делимым как мне кажется.
Да я так и сделал. А суффикс L - это ведь dword. Только частное и остаток разбиваются на два регистра даже при ширине типа в полрегистра и меньше, т.к. логически разные части результата, чтоб SHR-ом не извлекать), исключение - однобайтовый, т.к. есть AH:AL.
Как ускорить статический анализ? Есть какие-то дзен-техники/скрипты? Невозможно же читать асм листинг всего бинаря, особенно если он огромен, и тем более, если stripped
Че делать?
> Невозможно же читать асм листинг всего бинаря
Именно поэтому изобрели декомпилятор. Монополии Ильфака пришел конец, теперь почти во всех опенсурсных решениях присутствует этот компонент. Также, у тех же самых иды/гидры, есть встроенные скриптовые движки с приличным апи и готовая база плагинов.
А что насчет скриптов? К радару и айде прикручены скриптовые япы вроде питона, луа... Как их можно юзать, чтобы ускорить статический анализ? Слышал, что благодаря скриптам справляются даже с обфускацией, поэтому полуавтоматизировать или хотя бы облегчить статический анализ можно, не? Но как?
Ну допустим программа юзает шифрованные строки которые только в рантайме расшифровываются по мере использования, можно написать скрипт который будет их искать и расшифровывать.
Плагины это и есть скрипты. Что конкретно ты реверсишь и что тебе там надо ослаблять? С декомпилем любая макака бинарь за день отреверсит.
Внатуре Чад. Вунерабилитис пофиксил, наташку выебал, кайф. Это вам не веб макака галерщик.
>@natashenka
Эх.. Может и правда без определенных личностных деформаций в профессии не добиться успеха, сколько жопочасов не трать?
А аутизм уровня "дрочь на тамагочи-дампы", как лакмусовая бумажка(
Двачую. Хотя лучше бы ту тяночку редтимершу из фейсбука оприходовал, поняшнее будет.
ну памагити((
Как лучше всего организовать рабочий процесс, чтобы понять, что делается? Я нашел опенсорсный эмулятор и в принципе могу залогировать все, что угодно, но может у кого есть еще какие-то советы
С однобайтными все просто:
mov byte [rdx], 32
а с многобайтными пока только так приходит в голову:
mov byte [rdx], 0xE2
inc rdx
mov byte [rdx], 0x97
inc rdx
mov byte [rdx], 0xA3
Какой бинарь ты за день отреверсишь? Калькулятор?
Речь идет о сложных прогах с минимум 20-30к функций
Какая у тебя там сложная прога с 20-30к функций? В ядре винды их меньше. Если ты реверсишь бинари такого размера полностью, то ты явно не знаешь, что тебе нужно.
Ок, я все перефразирую.
Дано: прога типа телеги или вотсапа (мессенджер взят как пример, похуй на самом деле что)
В моем понимании, реверсинг с целью поиска дыр в таких прогах должен происходить следующим образом: подрубается фаззер на мощной машине в несколько десятков тредов и крутится до посинения нахождения хэнгов/сегфолтов.
Вручную что реверсят с целью найти дыры? Функции, которые обрабатывают ввод извне, я полагаю. Но сама уязвимая функция не обязана быть именно этой, само переполнение/произвольное чтение/запись/дабл фри/UAF и т.п. могут быть не обязательно в самих функциях обработки ввода. Как тогда все искать вручную, учитывая, что серьезные бинари еще и stripped?
У меня есть подозрения, что при поиске дырок используется софт типа фаззера, а статический анализ проходит уже в найденной софтом уязвимой функции, и тех, на которые она влияет (по xref можно почекать, например), чтобы понять как это эксплуатировать, если вообще возможно. Сам поиск дыр в крупных бинарях/ядрах ОС вручную не производят, я прав? Иначе я не понимаю как вручную можно искать дыры в крупных программах, особенно не имея сорца, это же пиздец. Даже с декомпилятором.
Раз в год и палка стреляет. Слышал про такое? Сидят и дрочат до посинения, свой первый баг уж точно, а вот потом можно задуматься об автоматизации процесса. Естественно, все реверсить не нужно, достаточно знать узкие места, изучить последние баги за последний год и искать похожие места. Тулзы для динамееского анализа, которые реально помогают в этом деле стоят очень дорого, по несколько тыс. баксов в год и имеют тонкую настройку для конкретного кейса.
>подрубается фаззер на мощной машине в несколько десятков тредов и крутится до посинения нахождения хэнгов/сегфолтов.
И что этот фаззер делает вообще? Ищет функции в бинаре и вызывает их с рандомными параметрами?
>>566035
>>501062
https://youtu.be/yJHyHU5UjTg
BlackHat Official начал заливать прошлогодние выступления, может местным читакам будет интересно.
Сам толком нихера не понял, кроме того, что парень из ядра делает грязь, чтоб не палится дергая WinAPI.
Ну, я имел ввиду применительно читов/античитов в играх. Наверное на первое время хватит покурить исходники hvpp и сопутствующие бложики/unknowncheats
Просто не сталкивался на практике с виртуализацией уже запущенной системы, поэтому не сразу понял возможные профиты в игровой области - спасибо за наводку.
Так гипервизор вообще имба какая-то получается. Если я правильно понял, то с помощью EPT можно сделать защиту памяти так, что при чтении будет показывать одни данные, а при исполнении другие. Как это вообще можно обнаружить?
https://vmcall.blog/battleye-hypervisor-detection/
Это из того, что вчера нарыл интересного почитать.
А так, наверное применимо все то, чем любая малварь детектит запуск себя в VM.
Сложно что-либо понять в исходниках без мат. части. Метод тыка не сработает. Есть четкая спецификация которой надо следовать. Все эти вещи описаны в мануалах. Какие профиты? Считай это год мод. Реалтайм отладка/трассировка ядра, модификация страниц памяти на лету, куча с горкой разных евентов и калбеков железячных. Применение в игрульках: установка скрытых перехватчиков, создание анклавов.
>>583808
Да. Никак. Можно использовать разного рода эвристики для обнаружения присутствия гипервизора. Ошибки конфигурации так скажем, кривые обработчики событий итд.
>>583876
Разве APERF счетчик не привязан к частоте процессора? Эта эвристика не может быть надежной. Вообще тайминг атаки это хаки, которые нигде кроме низкосортной малвари не должны использоваться.
>понять в исходниках без мат. части
КМК, по началу мне и обычных туториалов хватит, наподобии:
https://github.com/SinaKarvandi/Hypervisor-From-Scratch/
Тем более, там вроде и автор hvpp руку приложил.
Ну это чисто обнаружение присутствия самого гипервизора, а сами хуки с EPT получается вообще никак не обнаружить?
https://techcommunity.microsoft.com/t5/windows-kernel-internals/dtrace-on-windows-20h1-updates/ba-p/1127929
Вот например, уязвимость найденная фазером. https://talosintelligence.com/vulnerability_reports/TALOS-2019-0964
Я сделал.
Только через жопу(( Оказывается, если тасовать и добавлять/удалять картинки, то макаба загружает не то, что показывает. Сорян, потерпите Эдди в ОП-посте.
Перекот
>>1584716 (OP)
>>1584716 (OP)
>>1584716 (OP)
>>1584716 (OP)
Блэт что такое фазер поясните для долбаеба плез (непонятно )
Если у тебя сяоми, то в моих глазах ты просто чмошник.
миссклик парни
кидай пак мы знаем что у тебя есть - не мне прост друг просит оч срочно
540x344, 0:09
Как в keil записать данные во flash для Cortex M3?
Это копия, сохраненная 9 марта 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.