В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.Книги по RE:beginners.re - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!Чтобы не палить свой адрес почты, вот прямая ссылка https://beginners.re/f572d396fae9206628714fb2ce00f72e94f2258f/https://mega.nz/#!Bc9VVAYC!Vk6CFlW6VIoskLNgDKXbsL6FacDQeOKe6LX92wNicKY Нарваха практический курс по дебагингуhttps://www.goodreads.com/shelf/show/reverse-engineering - список книгСайты по RE:http://wiki.yobi.be/wiki/Reverse-Engineeringhttps://www.reddit.com/r/ReverseEngineering/comments/hg0fx/a_modest_proposal_absolutely_no_babies_involved/http://www.program-transformation.org/Transform/ReengineeringWikihttp://blog.livedoor.jp/blackwingcat/https://yurichev.com/blog/http://wiki.xentax.com/index.php/DGTEFFhttps://exelab.ru/Инструменты для RE:Дизассемблеры:0) IDA Pro 7.2 когда подберут пароль к архиву1) IDA Pro 7.0.torrent (x64 only, для XP нужно патчить PE + вылеты)2) IDA Pro 6.8.torrent3) IDA Pro 5.0 - бесплатная версия для некоммерческого использования4) Radare 2 - наконец прикрутили гуй, но по прежнему нужна только клиническим, не умеющим в скачивания торрентов, или пользователям альтернативных ОС5) Ghidra для любителей анальных зондов от АНБ6) ОстальноеВсе книги и статьи Криса Касперски (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. Язык неограниченных возможностей.Сайты по ассемблеру:Замена почившему wasm.ru- https://wasm.in/ , архив старого сайта https://rutracker.org/forum/viewtopic.php?t=407571https://www.unknowncheats.me/wiki/Assemblyhttp://asmworld.ru/https://software.intel.com/en-us/articles/intel-sdmhttp://www.nasm.us/doc/https://sourceware.org/binutils/docs/as/index.html#Tophttps://msdn.microsoft.com/en-us/library/afzk3475.aspxdisassembler.io Дизассемблер онлайнДля ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:http://msdn.mirt.net/http://terminus.rewolf.pl/terminus/http://geoffchappell.com/Предыдущие№6 https://arhivach.ng/thread/415252/ №7 https://arhivach.ng/thread/437556/
Почему декомпилятор из асм в Си hex-rays до сих пор не отреверсили и не внедрили у себя ребята из radare2 (r2dec)? Это слишком сложно или слишком нинужно?Вообще "профессиональные реверсеры" этим пользуются ли? Читал, что он иногда некорректно работает.
>>1406222Пользуются конечно, глупый вопрос. Каким надо быть мазохистом чтобы в статике простыни ассемблерного листинга рассматривать?
>>1406213 (OP)№8 https://arhivach.ng/thread/455487/> Ghidra для любителей анальных зондовНет там никаких зондов, бесплатная и вполне применима для чего-то серьезного (в отличие от радара).>>1406222> hex-rays до сих пор не отреверсилПотому что он говно. Меньшее говно, чем другие, но все же никому не хочется в этом копаться. Он, как и вся IDA, состоит из хаков. Проще с нуля написать (нет).> пользуются лиДа. Ты экономишь много раз по много часов ценой того, что однажды он тебя обязательно наебет.>>1406259> Каким надо быть мазохистом чтобы в статике простыни ассемблерного листинга рассматривать? Жили и до иксрэйсов, и неплохо жили. И сейчас есть куча архитектур, где никаких иксрэйсов нет и никогда не будет, а реверсить как-то нужно.
>>1406347> когда она открывала порт наружу для отладкиКак будто это единственное в мире приложение на Java, в котором используются отладочные возможности Java. Как будто тебя на машине нет файрвола, а между тобой и интернетом нет роутера. Может быть, и ида, которая ищет своих друзей в твоей локалке, тоже тебя смущает?
>>1406468Не все с начала сплайсят. Тот же пролог стандартный нет никакой проблемы пропустить даже без полноценного дизасма, достаточно дизасма длин.>>1406465> Аноны, как обнаружить inline hook в рантайме?Прочитать секцию кода с диска и сравнить, например. Она обычно ридонли, RWE сейчас не в почете.
>>1406213 (OP)>Ghidra для любителей анальных зондов от АНБЭто вы про дебаг гидры? Порт же закрыть можно. А в новых версиях дебаг по дефолту выключен. В версиях 9.0.2 и 9.0.4 точно.C каких пор реверсеры боятся зондов?
>>1407016> про макрос data importdata - не макрос, а директива, она пишет начало и размер блока data в поля IMAGE_NT_HEADERS.OptionalHeader.DataDirectory, import/export/fixups преобразуется в соответствующий индекс директории, но индексы можно указывать и сразу числом.А вот чтобы понять, как работают макросы library и import, читай в fasm.pdf про forward и common (хотя бы), ну и начать в любом случае нужно сhttps://docs.microsoft.com/en-us/windows/desktop/debug/pe-format
>>1407032>ну и начать в любом случае нужно с>https://docs.microsoft.com/en-us/windows/desktop/debug/pe-formatЯ знаю. Сейчас я собираю свой минимальный PE-имидж по байтам и параллельно пишу лоадер для него. Но в FASM оказалось много неизвестного для меня.Здесь есть удобный аналог assume edi:IMAGE_DOS_HEADER? Или как его накостылировать?
>>1407039Нет, макрос assume как бы есть, но работает хуево. Можно еще virtual at edidosheader IMAGE_DOS_HEADERend virtual, но оно глобально и неотменяемо. В целом в фасме принято делать явно mov eax,[edi+IMAGE_DOS_HEADER.e_lfanew]. Больше писанины, зато все сразу понятно.
32 бит винда ВСЕ? Есть ли смысл в 2019 году разрабатывать wow64 приложение? По статистике стима < 10% пользователей сидят на 32битной винде.
>>140753516 бит всё. А 32 ещё работают.Хотя в век современных электронов 2 (4) ГБ н"серьёзному" приложению (например пасьянс) не хватает, так что можно смело переходить на 64 бита.АЛСО, для асма не актуально.
В прошлом треде я просил посоветовать кроссплатформенный ассемблер (чтобы один код работал везде), мне посоветовали:nasm/fasm/gas1) Правильно ли меня поняли насчёт кроссплатформенности?2) Какой конкретно диалект АСМа выбрать?
>>1407697В общем я тут почитал и пришёл к выводу, что GAS не нужен.И выбирать стоит между NASMом и FASMом.Первый устарел и больше кода писать, но не знаю, как у второго с кроссплатформенностью.
>>1407719Так, пришёл к выводу, что надо брать FASM, потому что он новее.Но не знаю, как у него с производительностью относительно NASMа, видимо, хуёвей.
Покопался я тут в "Ассемблерах" для GPU, там полный зоопарк.Короче, если хочется что-то универсальное, тогда придётся брать фреймворки OpenCL, OpenGL итп. Естественно, это всё высокоуровневая хренотень.Почему до сих пор не создали хотя бы мало мальски универсальный Ассемблер для GPU?Даже то, что каждый тянет одеяло в свою сторону, каждый строит свой рынок не должно было сильно помешать подобному проекту.Видимо, всем просто по хуй.А посему и смысла использовать ЦП-Ассемблеры нет в игрушках, как и в sci и Big Data. Всё равно эти фреймворки срежут производительность до своего уровня.Лучше всё хуярить на C/C++.А Ассемблер только для ОС и драйверов, ещё встраиваемые.Вот и всё.
>>1407747>Лучше всё хуярить на C/C++.Нет, лучше хуярить на питоне/ноде, а критические участки на C/C++
>>1407870Жирдяй, Питон до 100 раз медленней С, а местами всё ещё хуёвей. Node/JS пошустрее (в 2-3 раза), но всё равно говно.Даже скорость Java говно, а она самая оптимизированная из всех высокоуровневых; в её оптимизацию больше денег вгрохано, чем в Питон и Раби целиком.Говорят, её скорость приближается к С и C++ (в 2-3 раза медленней всего). На деле фуфло это всё. Она в 10 и более раз медленней С по тестам итд.А медленней Питона из мейнстримных ЯП нет вообще.
>>1407931Блд, сказали же, Питон - самый медленный, миллион тестов в сети есть и самых разных.Питон 4х версий будет уже просто сосать, он станет неприменим для серьёзных проектов. Будут в учебных целях его дрочить, как когда-то ТурбоПаскаль дрочили, чисто, чтобы научиться программировать на базовом уровне, понять основные принципы итд.А большинство проектов перекатится на Нод/ЖС. Особенно всё, что веб. Питон к 5й версии в вебе и вовсе сдохнет. (Раби ещё подержится.)К 6й станет устаревшим языком, который только в школках и будут проходить вместо Бейсика и Паскаля, но основное внимание будет уделяться JS.Потом Питон выкинут и из школ.К 7й версии Питон станет историей.Так что я советую вам с этого питоноговна уже сегодня слезть. Учите нормальные ЯП, C++ тот же, или хотя бы ненормальные, но востребованные вроде JS.
Ребята, а какой компилятор или утилита умеет автоматом перехуяривать код АСМа под разные процы (и желательно API ОС автоматом перехуяривать)?
>>1408062пизда, вали из нашего треда обратно в общий, так и знал, что это ты тут трольнул, продолжая гнуть свою глупую линию, дохуя перегоняльщиков кода, они тебе только уникальную специфику проца не смогут сделать, а стандартный код сделают.
А что означает двойное использование регистров?Ну короче, зачем две скобочки?mov [BX][SI], ALПочему нельзя просто [BX]?
>>1408583>mov [BX][SI], ALТо же самое что и MOV [BX+SI], ALБазовая индексная адресация.BX - базаSI - индекс
>>1408583> Ну короче, зачемОсновная причина - попытка приблизить синтаксис к индексации массивов в сишке.
Как думаете, печему не взлетел IA64? Какие, вообще, есть перспективы у новых наборов инструкций? Я правильно понимаю, что, в конечном итоге, будущее за RISC?
>>1409032> печему не взлетел IA64Очень сложные компиляторы или отсутствие преимуществ, если компилятор хуевый.> Какие, вообще, есть перспективы у новых наборов инструкций?Рано или поздно мы к VLIW придем (вернемся).
>>1406213 (OP)ОП, я не понял. Почему в шапке нет книги Рендала Хайда? Какой, нафиг, Зубков? Лучший асм-учебник на русском - Юрова. Не лишним будет упомянуть Интел-талмуды. Где книги Агнера Фога? Можно ещё опус магнум по оптимизации Майкла Абраша привести (хоть и устарело).
>>1409157>Рано или поздно мы к VLIW придем (вернемся).Так ли уж нужен параллелизм на уровне инструкций? Это, ведь просто, способ избежать спекулятивного исполнения, не потеряв в производительности. Или я плохо улавливаю идею?Что думаете про RISC-V?>>1409251Телепат в треде?
>>1410054Вот накидал. Сам выбери, что больше подходит.http://booksdescr.org/item/index.php?md5=9C0F88DC623FCE96A4F5B901ADCE95D3http://booksdescr.org/item/index.php?md5=73957AEFEADCB7F0C112DCAED165FEB6https://software.intel.com/en-us/articles/intel-sdmhttps://www.agner.org/optimize/http://booksdescr.org/item/index.php?md5=4AA9BC0EB46F82759D5A88876072B52Chttp://booksdescr.org/item/index.php?md5=5D0F6DBC1410E10BC489167AFE8192DF
>>1410199Не заметил.Вот ещё Абраш http://booksdescr.org/item/index.php?md5=ED318BFDC1D842E73E6615CE41F9417DМожет быть ещё что-нибудь добавлю, если вспомню.
Я неопытен в фасме. Хочу написать модуль для логирования в файл. Соответственно, внутри объектника должны определяться переменные для дескриптора открытого файла, форматной строки и функция, приинимающая произвольные строки, которыезаписываются в файл. Мне это нужно для тщательного логирования того, что происходит внутри программы. Как можно создать такой модуль и подключить к программе?
В линуксовых shared object'ах extern переменные и функции в двух разных процессах будут иметь один и тот же виртуальный адрес, или могут (и должны) иметь одинаковые значения в младших битах адреса, но разные в старших из за какого нибудь ASLR? При этом для обоих процессов они имеют одинаковый физический адрес до первой записи?
>>1410247К сожалению, в фасме макросы не могут возвращать значения. Можешь сделать так:macro round n, r { rounded = (((n+(r-1))/r)*r) }round 12,5; и используешь:mov eax,rounded
>>1410480А как написать макрос, который бы получал value и align, но генерировал в результате директиву dd aligned_val?То есть, чтобы можно было написать _align(filesize, 512), и получить код типа dd 512?
>>1410521Только что проверил макрос. У меня filesize equ $ - $$ определено в конце исходника и компилятор ругается на то, что filesize не определена.
>>1410054Может ещё добавите несколько полезных ссылок?http://www.cs.cmu.edu/~ralf/files.htmlhttp://www.sandpile.org/https://en.wikipedia.org/wiki/X86_instruction_listingshttps://www.felixcloutier.com/x86/index.htmlhttp://ref.x86asm.net/index.htmlhttps://pnx.tf/files/x86_opcode_structure_and_instruction_overview.pnghttp://www.jegerlehner.ch/intel/
Как условному Васяну получить EV сертификат для подписи дров? И нужен ли он вообще? Обычный не прокатит что-ли? Гуглить пробовал, там одни диваны, сами толком не знают.
>>1410523> У меня filesize equ $ - $$ определено в конце исходникаТы хотел сделать filesize = $ - $$. = обрабатывается на стадии ассемблирования, оно создает или изменяет настоящую переменную (ассемблера, а не генерируемой программы естественно), фасм умеет в forward references (ценой дополнительного прохода ассемблирования). А вот equ работает в препроцессоре, ничего про переменные не знает, это просто текстовая замена, работающая от equ и до конца файла (или до отмены equ c помощью restore). Даже если предположить, что твой equ сработал бы, как ты хотел, то $ в месте использования отличался бы от $ в месте, где ты создал equ.
О круто, тред про ассемблер. Я полный ноль в этом, но хочу вкатиться. Что надо скачать чтобы получить хоть какое-то начальное представление, а то в шапке дохуя написано. Посоветуйте одну книгу и одну прогу пока.
>>1410614Что-то как-то стремно решается моя надуманная задача на фасме. Возьму, пожалуй, NASM. Я собираю минимальный PE-имидж по байтам и параллельно пишу лоадер. Хочу сделать имидж меньше 200 байт.
>>1410652Я собираю PE файл таким образом:opthdr: dw 0x10B ; Magic (PE32) db 0 ; MajorLinkerVersion UNUSED db 0 ; MinorLinkerVersion UNUSED dd 0 ; SizeOfCode dd 0 ; SizeOfInitializedData UNUSED dd 0 ; SizeOfUninitializedData UNUSED dd start ; AddressOfEntryPoint dd code ; BaseOfCode UNUSED dd 0 ; BaseOfData UNUSED dd 0x400000 ; ImageBase dd sectalign ; SectionAlignment dd filealign ; FileAlignment dw 0 ; MajorOperatingSystemVersion UNUSED dw 0 ; MinorOperatingSystemVersion UNUSED dw 0 ; MajorImageVersion UNUSED dw 0 ; MinorImageVersion UNUSED dw 4 ; MajorSubsystemVersion dw 0 ; MinorSubsystemVersion dd 0 ; Win32VersionValue UNUSED dd 0 ; SizeOfImage dd 0 ; SizeOfHeaders Здесь SizeOfImage равно нулю, но я хочу записать туда размер дискового образа, выровненный на section aignment. Размер файла определяю так: filesize equ $ - $$Как написать макрос, чтобы сделать dd выровненное значение размера файла?В NASM та же самая проблема с макросами.
>>1410666Что-то в фасме сложно делаются простые вещи. Мне нужно в файловом заголовке сохранить значение SizeOfOptionalHeader. Я делаю это так: dw opthdrsize ; SizeOfOptionalHeader (including data directories)Сразу после опционального заголовка, непосредственно после дата директорий я делаю объявление:opthdrsize equ $ - opthdrИ фасм при формировании File Header не видит переменную opthdrsize, потому что она определена дальше. Как это исправить?
>>1410662Что он должен делать? Загужать исполняемые образы для исполнения? Вместо системного загрузчика?
>>1410714>Загужать исполняемые образы для исполнения? Вместо системного загрузчика?Да. Еще хочу добавить к нему защиту от динамического анализа.Что сейчас актуально? Видел детект VM Ware по GDT, защиту от рантайм анализа при помощи сообщений из других потоков, коды возврата недокументированных апи. Все это, вроде, устарело. Но кода я только начал этим заниматься, детект движения курсора лучше всего останавливал динамическую проверку.Как работают эмуляторы? Они передают управление на точку входа и анализируют поведение программы, или действуют более тщательно, дизассемблируют каждую процедуру и трассируют ее? В последнем случае, наверное, можно было бы навставлять в процедуры ret и перепрыгивать их при выполнении. Это должно запутать дизассемблер, если он дизассемблирует от начала функции до ret. Но это, наверное, слишком наивный способ обойти дизассемблирование.
>>1410735Я еще не могу для себя точно объяснить разницу между отладкой и трассировкой. Там, где я работал, слово трассировка вообще не употребляли. А в лоу лвл кодинге оно используется часто. Я нагуглил тред о различии отладки и трассировки, и там говорится, что отладка - это пошаговое выполнение, а трассировка это пакетный анализ поведения программы: запускаешь программу и смотришь журнал выполнения, по которому определяешь место проблемы, после чего начинаешь в этом месте отладку. То есть и принтф, и логи в консоль, и журнал в файле, и MessageBox'ы с ошибками можно назвать трассировкой. Я прав?
>>1410652> Что-то как-то стремно решается моя надуманная задача на фасмеНа насме будет еще хуже, фасм в плане ебли байтов гораздо мощнее.>>1410666> я хочу записать туда размер дискового образа, выровненный на section alignmentНу я же тебе написал, как сделать.dd (SizeOfImage + sectalign - 1) and not (sectalign - 1)...; В конце файла:SizeOfImage = $ - $$ ; тут возможны варианты, в зависимости от того, хочешь ли ты ебаться в org в секциях.Что сложного-то?
>>1410579Конечно. Правда ссылка на вики это моветон, если реверсер её не найдёт, то он и в ИДЕ не разберётся, и компутер не включит.>>1410580Зарегистрировать компанию, только им и выдают. Можно попросится подписать у пары компаний, которые подписывают дрова с открытым кодом, но там, ВНЕЗАПНО, нужен открытый исходный кот, твои затрояненные бинари отошлют тебе обратно.>>1410632>а то в шапке дохуя написаноЯ тебя разочарую, но в книгах по асму написано ещё больше, чем в шапке. Если ты шапку ниосилил, то и асми не осилишь.
>>1410832Почему малварь-то сразу? Те кто создают малварь подобного уровня, спонсируются и достать такой серт им не составит труда. А мне Васяну где и как его взять? Я может хочу свой антивирус бабушкина с блэкджэком и куртизанками запилить. Но думаю начать с мини-тулз, типа sysinternals. Есть конечно вариант опенсурса, гит прокачаю, портфолио так сказать, но думаю шанс, что меня кто-то заметит и озолотит мизерный..
Есть здесь, вообще, специалисты/ценители демосцены? Скажите, как научиться далать демки? Что можно почитать? Как практиковаться?
репост из сишного тредаЧто для gcc значит contstraint "c" в записиasm volatile("clflush 0(%0)\n" : : "c"(addr) : "rax");не могу найти описание именно для "с"
>>1410054Michael Abrash's Graphics Programming Black Book Special Editionhttp://www.phatcode.net/res/224/files/html/index.html
поясните мне пж за следующий аспект кэш памяти процессоров.вот есть у меня программа, которой нужно прочесть N байт по адресу 0xAAAABBBB. процессор может закешировать эти данные, и они будут от L1 до L3. вот процессор начинает выполнять команду типаadd %(0xAAAABBBB), %eax,он такой возьмёт VA, получит с него PhA, с PhA хеш получит какой нибудь 0xABCD, но! как он знает, что сейчас в кеше для данного адреса под индексом 0xABCD лежит чанк именно для текущего процесса и именно для нужного VA, а не из какого нибудь другого процесса, что выполнялся до последнего прерывания, и если одному блоку данных в кеше могут соответствовать несколько физических адресов, в которых могут находиться данные того же самого процесса?
>>1411676Смотрел недавно лекцию на данную тему, но проебал ссылку. Короче все сводится к тому, что... нихуя толком не говорится как это работает, ПРОСТО работает и все.
>>1411676> именно для текущего процессаКакие процессы, если речь идет о физических адресах? Вот в TLB есть всякие PCID/ASID.> если одному блоку данных в кеше могут соответствовать несколько физических адресовРядом с данными хранится индекс кэшлайна.
https://m.habr.com/ru/company/jetinfosystems/blog/454576/Почему ты еще не сделал свою малварь на два миллиарда баксов?
>>1411923Спалятся потом где-нибудь, как malware-tech и сядут на бутылку. Даже если не спалятся, то за такие бабки их фбр где угодно найдут. Вы мне лучше скажите, как сломать F5 в иде, дабы подпортить жизнь школоте? Видел много раз в комерческом софте такие функции. Это из серии виртуализации?
>>1412005Стандартные антидизасмы на иде работают.Заспагеть там все, джампай в середину инструкции, или, как выше сказали, стек ломай.
>>1412010>джампай в середину инструкцииКак это на деле реализуется? Вот джампну я на байт ModRM или SIB. Что дальше делать, чтобы процессора не выдал исключение?
>>1412154>Как это на деле реализуется?>>1412155>А это как?Берешь и без задней мысли гуглишь "защита от дизассемблера".
>>1411567А есть какие-нибудь базы с исходниками демок?Мне бы какие-нибудь обучающие материалы. Или что-то, что можно использовать для обучения.>>1411281Почему так?
>>1412167>А есть какие-нибудь базы с исходниками демок?http://www.pouet.net/search.php?what=source&type=prod
Ну что у вас тут? Код то мало-мальский написали хоть, или может реверснули чёнить? Ксорить то хоть умеете?
>>1412010>Заспагеть там все, джампай в середину инструкцииИда вроде бы справляется с этим. JMPOUT пишет.>>1412007Что значит сломать стек?>>1412160>Берешь и без задней мысли гуглишь "защита от дизассемблера".Там одни баяны и нулевых, под x64 вообще 0 информации.
>>1412406> Что значит сломать стек?Разбалансировать. Например, чтобы в одной из веток был ret при оставшихся в стеке локальных переменных. Или вызов функции, которая за собой подчищает стека больше, чем ей передали параметров. Реально передавать управление в эти ветки вовсе не обязательно, лишь бы они были. HexRays очень чувствителен к такому, но исправляется оно элементарно, поэтому помогает только от школоты.
>>1406465Разобрался. Теперь следующий вопрос: как убрать инлайн хук в рантайме? На диске нет данных, предварительных данных тоже нет. Потыкал всякие антируткиты, они каким-то магическим образом имеют предыдущие байтики и спокойно убирают хук.
>>1412650не знаю, насколько это реально и вообще полезно в боевых условиях, но я как то раз в образовательных целях на элементарной х86 программе в хэдерах пидорасил ОЕР, заведомо указывая его в ебеня, а потом в TLS коллбэке опционально восстанавливал, прибавляя захардкоженную дельту к одному месту в памяти. не помню точно как это работало, но то ли на +-0х1000 байт от EBP то ли еще где неподалеку лежал не то VA с уже прибавленной дельтой релоков, не то RVA OEP, куда должно выполнение перейти после TLS. ну и в итоге ОЕР восстанавливалась, а ида смотрела на неправильный ОЕР со всеми вытекающими.
Сап,кто знает можно ли получить триал вирустотал интележенс?мне буквально пару сэмплов скачать нужнораньше давали триалы всем подряд,а теперь не выходит(вроде как только фирмам типа ав и студентам(и то не всем)если у кого-то есть,то буду очень благодарен если поможете
Анонче, как подпрограммы строить на ассемблере?Можно пример программы с подпрограммой? А то я в методичке смотрел, а там какая-то хуйня запутанная.У меня такой вариант задачи, но это так ради понимания уровня задачи. Не нужно слишком сложное.Разработать подпрограмму, которая разбивает заданную строку на две части: первое слово строки (до первого пробела) и оста-ток строки (пробелы после первого слова отбрасываются). Разработать программу, которая вводит с клавиатуры строку и выводит каждое слово с новой строки.Сложна, сложна, нипанятна.
Заранее извиняюсь за то, что насру здесь.Я хочу вкатиться взламывать разный софт и писать под него патчи/кейгены, но я полный ноль. Мне посоветовали:а) Сначала подучить лёгкий язык вроде питона и обмазаться курсами по CS, а потом уже начинать медленно бросать взгляд в сторону ASMб) Сразу учить Ассемблер, стоически переносить сложности, попутно читая те же курсы по CS и в целом про особенности различного железаНа какой стул себя посадить, а на какой не стоит? Важно ваше мнение, анончики.
>>1413031Идея хуйня. Современный CS это такая хуйня для неосиляторов и мочеглотов, способных только языком чесать. Язык какой-то учить? Ну разве что всякие кресты/си, на которых системы/АПИшки для железа написаны да шеллчики. Интересно сидеть инструкции дрочить? => Сиди дрочи насм дальше, и нахуя тебе этот пайтон сдался тогда? Советую тебе учебников по информатике закупить для 1-3 курсов для начала.
>>1413057> нахуя тебе этот пайтон сдался тогдаДа без питона сейчас никуда. Анализ же. capstone, frida всякая, скрипты в IDA.
>>1412941Есть куча других бесплатных ресурсов откуда можно скачать свежие сэмплы. Кто-то даже вт зеркалит.
>>1413102К питону возвращаться можно и нужно, только когда ты уже успешный c/c++ боярин, ресерчер, сеньер-байтоеб и знаешь что тебе нужно. А так это довольно бесполезный яп.>>1413031Учи ассемблер, изучай архитектуру ос, учись пользоваться тулзами: ida pro, windbg.
>>1413208>windbgНу ты и посоветовал. Ладно бы он сплоенты изучал. Ему же просто обычным крякером хочется стать.Тут лучше ollydbg/x64dbg ничего не придумали.К ним и туторов масса, и плагины на любой вкус и цвет, и скрипты под плагины, и кодериперы для кейгенов.
>beginners.re - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!>Чтобы не палить свой адрес почты, вот прямая ссылка https://beginners.re/f572d396fae9206628714fb2ce00f72e94f2258f/Что-то ссылка поломалась, как и новорегнутые на самом beginners.re((Желающие натянуть латексное белье с затычкой - велкам на гитхаб, собирать книгу сами:https://github.com/DennisYurichev/RE-for-beginnersДля нежелающих ссылка на собранную сегодняшнюю RU/EN копию:https://dropmefiles.com/ESdEPНаверное хватит переждать, пока господин Юричев починит свою хитрую систему сбора адресов.
>>1413282Считаю что нужно сразу самые лучшие и мощные инструменты изучать, крупную рыбу олей не подебажишь. Для старта x64dbg подойдет, ты прав.
Предлагаю шапку обновить, ибо протухла. Нужны ссылки на свежие, активные блоги. Книги/гайды по современному ассемблеру. Раз скрины из ядрер ОС, то следует и добавить блоги/гайды/любой другой ресерч по осям.
Хочу написать простой драйвер под винду. Какой SDK качать, чтобы можно было кодить в студии?Когда я в первые хотел этим заняться, помню, что пришлось поебать себе мозги тем, какие библиотеки скачать. Я нагуглил статьи для ньюфагов и пошел на сайт МС за либами, а там оказалось, что того пакета либ уже не существует и надо качать что-то другое.
>>1413338WDK установи и все. Create new project -> Windows Drivers -> и тут выбираешь что тебе нужно. Начать наверное лучше будет с легаси либо wdf драйверов. Спрашивай если будут вопросы.
>>1413406Ой, ну это уже думать надо. Windows Internals книгу в шапку нужно запихать точно, в нескольких тредах упоминали её.http://undocumented.ntinternals.net - описание недокументированных апи в шапке только структурыhttps://vimalshekar.github.io/blog/ - основы для вкатывальщиков, за пару вечеров можно осилить.Книгу - Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and AVX 1st edition.Книгу по Идочке.Кстати, спасибо анону, который залил Rootkits and Bootkits книжку, читаю потихоньку
>>1413363>Начать наверное лучше будет с легаси либо wdf драйверов.Это какой тип проектов в VS Studio 2019 Preview?
>>1413440>Modern X86 Assembly Language Programming...http://booksdescr.org/item/index.php?md5=3DFB070C1742F50B500F07A63A30C86A
>>1413526Это второе издание, посвещённое x86-64, AVX, AVX2, AVX-512. Оно не заменяет первое (x86-32, x87, MMX, SSE, а также x86-64 и AVX). Оно частично с ним пересекается. Но в основном его дополняет. Поэтому, нужны оба.http://booksdescr.org/item/index.php?md5=A6F924CE6277FB3D4AFA71E35F538558
>>1413363Поставил WDK, создал в студии проект типа KMDF Driver, начал писать код, но #include <ntddk.h> не может найти хедер. Где искать этот хедер и wdf.h?
Хочу обмазаться этими статьями: https://vxlab.info/wasm/article.php-article=drvw2k01.htmАвтор использует масм и советует скопировать библиотечные файлы из DDK в каталог \masm32\lib\w2k. Но у меня win10 и стоит WDF. Как использовать то, что у меня имеется, для изучения этих статей?
>>1413567Там же где и все остальные инклуды.C:\Program Files (x86)\Windows Kits\10\Include\Подключать там же, в настройках проекта, принципиальных различий в использовании ide нет.
Допустим, у меня есть адрес возврата некоторой функции, как мне определить какой конкретно функции принадлежит данный адрес? Нашел только LdrFindEntryForAddress, с помощью данного апи получаю имя модуля, в котором находится нужная функция. Куда дальше копать? Не самому же сканить с дизасмом?
>>1415527Отдельный режим процессора, который включается при подергивании соответствующей ноги процессора, который в отдельной области памяти выполняет код, практически незаметно (не считая потраченного процессорного времени) и не спрашивая разрешения у гипервизоа и выше.> Но куда ниже то?Ну как это куда?! Отдельный чип, который рулит всей системой.
>>1415555Если у ОС нет доступа к SMM, то выходит, попасть в него без физического контакта с машиной не выйдет?
посоветуйте пж годных статей по структурам дампов ОС. типа вот если сдампить процесс винды, то у него будет структура РЕ, в ней там хэдеры, секции, тоси боси, у линуксов ELF с его структурами, а с ОС что? все запросы в гугле переводят на конкретные инструменты типа lime, volatility, а я хотел бы предварительно просто пробежаться по теоретический части структур дампов популярных ОС типа чё в них есть, что в них может быть, чего в них не может быть, как это в теории должно быть выложено, и т.д.
>>1415786Что ты имеешь ввиду под структурами дампов ОС? Читай книги по архитектуре интересующей тебя ОС. Структуры, функции, таблицы и прочее вычленяются с помощью отладочных символов и WinDbg.
Читаю про аппаратно-программные руткиты, которые в прошлом веке располагались в святая святых BIOS материнки и сетевухи. Насколько это актуально сейчас, когда в материнках UEFI? Дело в том, что мои компы побывали в органах. Данные на дисках затер нулями.
>>1416872То что на это способны наши органы, я сомневаюсь. Естественно сбросить и переустановить прошивку нужно на всякий случай. Более вероятно что тебя будут просто прослушивать. Меняй провайдера, шифрую трафик, сиди с вайфая соседа.
Как лучше заимплементить PE-загрузчик на фасме, если перед загрузкой происходит парсинг заголовков, а после него мапинг?Определить все структуры, реализовать структуру контекста, в которую напихать все структуры (или наиболее значимые поля) и в процессе парсинга заполнять контекст, а во время отображения дискового образа на память пользоваться этим контекстом?
Поясните по факту, почему какой-нибудь линукс не может заебашить себе читалку и выполнялку для екзешников, чтобы все работало без эмуляторов?
>>1416982Но ведь виндовый загрузчик уже делает самое правильное, что можно сделать: мапит заголовки, валидирует заголовки, мапит секции, занимается инициализацей и динамическим связыванием. Зачем тебе контекст с отдельной копией заголовков, если тебе их все равно грузить?>>1416984binfmt_pe.c написать несложно (и не один раз его уже реализовали), но вот окружение само по себе не появится.
>>1417027> окружениеСреда, в которой выполняется код - все, что он видит вокруг себя. Системные вызовы, системные данные в памяти (тот же PEB), библиотеки, структура файловой системы. Все это предоставляет вайн. Можно было бы, как сделала Microsoft для WSL, эмулировать только системные вызовы, пользуясь родными библиотеками, но в винде слишком много всего прибито гвоздями к ядру.
>>1417036>Можно было бы, как сделала Microsoft для WSL, эмулировать только системные вызовы, пользуясь родными библиотекамиНельзя, проприетарная лицензия-с.>но в винде слишком много всего прибито гвоздями к ядру.На самом деле к драйверам. Win подсистема ютится в win32k.sys, и ядру NT она нафиг не нужна, оно может работать и без неё.Только эмулировать ядро до степени работоспособности драйверов ещё сложнее, чем по внешним интерфейсам. Перед последней задачей даже МС спасовали, в новых версиях WSL они будут запускать едро люнупса в виртуалке.
>>1417045> лицензияНельзя пользоваться либами, но это проблемы юзеров. Так часто при реверсинге игр делают: движок опенсорс, данные родные, и лицензию, даже если она что-то подобное запрещает, нарушает пользователь, а код ни в чем не виноват.> оно может работать и без неёНу ты же понимаешь, что фактически это часть ядра, а все эти "может работать" равносильны заявлениям, что софт может работать без ОС (да, может, но такое пишут крайне редко).> в новых версиях WSL они будут запускать едро люнупса в виртуалкеНу вот, теперь в десяточке нет абсолютно ничего хорошего.
>>1417023Пишу упаковщик с лоадером.Но если не пихать заголовки в контекст, все равно ведь придется делать два прохода по заголовкам: первый раз, чтобы прочитать ImageBase, а второй раз - выделить память по этому адресу и развернуть там образ.Алсо, как работает лоадер на сисколлах? https://github.com/luis140219/luismark-loader/blob/master/luisldr.asmВ чем плюсы, минусы? Как вообще загрузка образа сводится к вызову ZwCreateSection? Что делает эта функа?
Насколько кэширование процессором кода может помешать выполнению кода при довольно интенсивном его изменении находу? Можно ли как-нибудь избежать отрицательных эффектов? Отключить кэширование кода для приложения/треда?
>>1417047>Нельзя пользоваться либами, но это проблемы юзеров.В общем то да, и сейчас можно подсунуть вайну родные либы. Но видимо уровни программ разные, и что можно реверсеру с гитхаба с 3 звёздочками, то запрещено проекту с тысячей контрибуторов.>Ну ты же понимаешь, что фактически это часть ядраНе а. Оно, как драйвер, работает в адресном пространстве ядра, пользуется его сервисами, ядро пользуется сервисами этого драйвера, но неотъемлемой частью оно не является.>Ну вот, теперь в десяточке нет абсолютно ничего хорошегоНу не знаю. Как по уровню интеграции Wine в сравнении с WSL?>>1417129Кеширование не мешает изменяемому коду, оно помогает неизменяемому, притом существенно.Решение только одно - не использовать полиморфный код. Отключить кеширование можно для отдельных страниц, обладая правами админа, но будь готов к производительности уровня первых атомов.
>>1417221>Решение только одно - не использовать полиморфный код.Хотелось-бы наоборот. Есть ли необходимость для этого флагировать страницу как PAGE_NOCACHE? Это что-нибудь даст?
Если я рассматриваю программирование как хобби и процесс>результат, те могу писать условный хеллоуворлд годами, то ассемблер мой выбор?Веб мне не нравится, хотя для такого гуманитария как я он лучший выбор, но не хочу и все тут.
>>1417261Для начала стоит хотя бы понять о чем говоришь. Веб это не только разметку рисовать и конфигами жонглировать. АСМ явно не твой выбор, ибо с текущим уровнем дискурса ты себе даже задачу не сможешь поставить.
>>1417260Ничего не даст, дело не только в кэше, но еще и в конвейере. Изменение страницы, инструкции из которой уже выбраны и декодированы/декодируются = сброс конвейера. Постоянные сбросы конвейера = никакая производительность.>>1417221> Не а. Оно, как драйвер, работает в адресном пространстве ядраЭто все понятно, но это все детали. Но мы ведь об эмуляции винды говорим? И если рассматривать картину с этой стороны, то win32k и другие дрова вполне можно считать частью ядра. Выбрось их, и это уже будет не винда.
>>1417264>>1417261> АСМ явно не твой выбор, ибо с текущим уровнем дискурса ты себе даже задачу не сможешь поставить.Так он за задачей и пришел Пускай идёт пиликать МК По моему лучшей альтернативе аутизма от мира cs - нет
>>1417379>По моему лучшей альтернативе аутизма от мира cs - нет Можно на FPGA создавать асики для пиликания.
>>1417119Ты видимо вообще нюфаня, раз такие вопросы задаешь и не знаешь, как загрузчик винды работает. Куда собрался то свой писать? Мы тут уже обсуждали защиту софта, лодеры и прочее, в итоге порешали, что все это херня и единственный рабочий метод - виртуализация кода.Прямой вызов сисколов хорош тем, что тебя нельзя похукать можно на самом деле из юзермода, тк ты минуешь функцию-обертку и сразу переключаешь контекст в ядро. Из минусов - сложность реализации, зависимость от среды. Это если вкратце.Про апи винды на msdn читай. Исходный код ReactOS в помощь.
>>1417429>Ты видимо вообще нюфаня, раз такие вопросы задаешь и не знаешь, как загрузчик винды работает.В статьях пишут про такой алгоритм:1) Парсинг хедеров2) Разбор таблицы секций3) Проецирование4) Обработка импорта5) Рекурсивная загрузка длл6) Переход на точку входаА как он работает на самом деле? Знаю, что можно почитать сорцы вин 2000, но их надо снова выкачивать и копаться к них.
>>1417451Ну еще редактирование PEB. Но моя задача проще. Я хочу просто запамить PE-файл и запустить его.
>>1417451Похоже, что половина процесса загрузки вообще происходит с дисковым имиджем: https://wiki.osdev.org/PETo load a PE file is quite simple;1. Extract from the header the entry point, heap and stack sizes.2. Iterate through each section and copy it from the file into virtual memory (although not required, it is good to clear the difference between the section size in memory and in the file to 0).3. Find the address of the entry point by finding the correct entry in the symbol table.4. Create a new thread at that address and begin executing!
Я правильно понимаю, что в unix-like системах все процессы создаются методом вызовов fork(); exec();, и начинается всё с самого первого процесса init после старта системы?
>>1417451>Исходный код ReactOS в помощь.Там полноценный загрузчик реализован, практически 1 в 1 как у винды. Ничего качать не надо, через браузер смотреть можно. На худой конец открой ntdll и ntoskrnl в иде, загрузи .pdb символы и изучай.>>1417454Куда замапить? Где запустить? В каком контексте? Какой PE-file? Ты недоговариваешь. Просто загрузить длл - LdrLoadDll. Ты эту функцию хочешь реализовать?
>>1417465>Куда замапить?В адресное пространство пакера.>Где запустить?В АП пакера.>В каком контексте?В контексте пакера>Какой PE-file?exe, dll>Ты эту функцию хочешь реализовать?Хочу реализовать красивую загрузку exe для начала. Раньше по статьям какого-то системного программиста я написал свой вариант лоадера, который не только мапит exe, но еще и рекурсивно загружает дллки и прописывает их в PEB, но сейчас я хочу написать простой лоадер для узкой задачи на фасме. И мне не хватает идей, как сделать это правильно.В предыдущем своем лоадере я делал контекст, который содержал указатели на структуры типа PIMAGE_DOS_HEADER и накладывал их на результат MapViewOfFile, а потом копировал заголовки и секции в другое место (по адресу ImageBase). А если по адресу ImageBase же что-то было (например, например, сам лоадер), то вызывал там UnmapViewOfFile. Но чтобы такого не было, ImageBase лоадера я сделал ниже, чем ImageBase загружаемого файла.Почему вообщн загрузка может сводиться к вызовам ZwCreateSection? Как это работает?
>>1417568Правильный переносимый способ это использование документированных апи, а не копание во внутренних структурах. Есть шанс, что они их изменят, тогда твой лоадер придется переписывать.>Почему вообщн загрузка может сводиться к вызовам ZwCreateSection? Как это работает?Чтобы отобразить секцию, сначала нужно создать объект/получить дескриптор этого объекта секции. MapViewOfFile читай как ZwMapViewOfSection.
>>1420434Гуглишь на MS Docs функцию CoInitializeEx. Внизу страницы видишь, что, линковать надо с библиотекой Ole32.lib.Проверить, что символ __imp_CoInitializeEx экспортируется из этой либы можно утилитой dumpbin (наряду с другими и компоновщиком link прилагается к MSVS).C:\...\Microsoft_Visual_Studio\2019\Preview\VC\Tools\MSVC\14.22.27706\bin\Hostx64\x64\dumpbin /linkermember /out:Ole32.exports "C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\Ole32.Lib"Находишь нужный символ в извлечённом файле Ole32.exports.
>>1420447> C:\...\Microsoft_Visual_Studio\2019\Preview\VC\Tools\MSVC\14.22.27706\bin\Hostx64\x64\dumpbinПроиграл. Все для людей. Вот в 2005 студии такой хуйни не было. На самом деле пердолиться в библиотеки импорта совершенно незачем, есть http://www.dependencywalker.com/>>1420434> место, где находитсяЗависит от того, что ты понимаешь под словом "место". Жмешь Enter на символе, в статусной строке видишь позицию в файле и виртуальный адрес. Скроллишь вверх, видишь имя длл (или ищешь во View->Imports в более удобном для восприятия виде).
>>1420502>http://www.dependencywalker.com/Это чтобы (рекурсивно) просматривать импорт, если у тебя есть исполняемый файл. Я забыл, что все вы тут дофига реверсеры (свои программы не пишем - чужие ковыряем). А если нет файла? А если только исходник (да и тот не весь)?
>>1420447>>1420502Я поэтому и спросил потому что нифига там нет. В api-ms-... пусто, нет реализации. А саму реализацию в combase.dll нашел. Что за бред?
>>1420687А, я, в свою очередь, забыл, что в этих ваших десяточках теперь импорты исключительно через жопу. Вот это посмотри, например: https://github.com/lucasg/Dependencies
>>1420694Вот за это спасибо, давно хотеть альтернативу dependencywalker, который не умеет в новомодные перенаправления.Мимо ОП
Сап, реверсачХочу вкатиться в разработку драйверов на ЛинуксС чего начать? Сишкой и плюсами владею на достаточно высоком уровне, умею в структуры данных, знаю основы ОСЕсть топовая книга/курс для начинающих в этом деле?
>>1421185Для переносимости (читай: чтобы добить нативный софт) и версионирования (как будто нам SxS мало было), теперь API логично сгруппированы по функциональности, а не по подсистемам и абстрагированы от этих самых подсистем. В общем, максимально нинужная фича, как и все остальные фичи восьмерочки и десяточки, которая просочилась обратно в 7 и даже в XP.
>>1421306>чтобы добить нативный софтЯ так и подумал. С одной стороны хорошая затея то, но реализуют ее как всегда майки, поэтому все через жопу и понятно только им самим. Не понимаю, для кого они апдейты каждые несколько месяцев выкатывают. Дедлайнов никаких нет, конкуренты не жмут, закройтесь, сука, в подвалах на годик-два и запилите норм ОС... Но нет...да нибамбит у меня
>>1421185Теоретически производители встраиваемых систем могут собрать свои версии системных библиотек безо всякой хуиты. MinWin называется. Но всем как всегда похуй, и это лишь добавило ещё один нахуй не нужный слой абстракции.>>1421312>Не понимаю, для кого они апдейты каждые несколько месяцев выкатывают.Чтобы не обосраться как с вислой.
https://mega.nz/#!W7Y1lSzC!dESOPpPtUcSC7rQW4WCYiqmbdd-XAb3ecv3AE0KTVAQНашел у Спорова, кто слил информации нет.
>>1421399Я так понимаю сбрутили пароль для утекшей версии.На меге содержимое потерли, но сам архив уже лежит на рутрекере.
>>1421556https://rutracker.org/forum/viewtopic.php?t=5748289или сразу магнит, правда доска наверное покоцает:magnet:?xt=urn:btih:89C510068D46F2EC48D6589B6FAE6ECC0B4CC3CB&tr=http%3A%2F%2Fbt4.t-ru.org%2Fann%3Fmagnet&dn=IDA%20Pro%207.2.181105%20WIN%20x86%2Fx64%20%2B%20Hex-Rays%20Decompilers%20(x64)%20%5B2019%2C%20ENG%5D>Не могу найтиКак же ты искал?
Потестили новый хекс-рейсик? Как вам? Мне понравился, много всего декомпилить начал, чего раньше не мог.
Есть какой-нибудь эмулятор куда это можно скопипастить и посмотреть на результат? Там иногда переполнения случаются поэтому самому писать долго будет.
>>1422191А ты в Debuggers посмотри, там для выполнения кусков кода специально есть адаптер для Bochs, ничего копипастить не нужно (Bochs, разумеется, нужно поставить).>>1421817Если там 32-битного x86 и ARM нет, то не нужен.
Аноны, не могу осилить архитектуру устройства памяти в шиндоувс. Почему так сложно? Есть какой-нибудь огромный чертеж/рисунок охватывающий сразу всю иерархию, чтобы можно было примерно посмотреть как это все между собой взаимодействует?
>>1424071Не помог. Я конечно теперь понимаю, что такое VAD, MDL, но не более. В windbg потыкал, все равно остаются вопросы, как это все между собой связанно, а как на физическую память транслируется? Какой-то пиздец, физиком надо быть что-ли чтобы понять?
>>1424316>а как на физическую память транслируетсяНу пиздец. Что ты творишь? Теперь и я думаю, что что-то не понимаю.
>>1425211http://gen.lib.rus.ec/search.php?req=rootkits+and+bootkits&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def
>>1425211Кидали выше вроде. Хорошая книга, но практической информации мало. Весь код протух лет 5 назад.
Думаю вкатиться в низкоуровневое программирование. Чет я заебался, когда пишешь как по мануалу, а оно не работает. Компилится, но не работает. А я не могу ничего сделать: не я же писал. Сложно ли?
>>1426191Эти книги мне кажутся несравнимыми. С разных углов на ось смотрят. Это из-за того что винда более монолитна и там можна гораздо больше компонентов назвать стандартными и изучить. И в линуксе изучается только ядро и то не достаточно подробно. В 100 страниц едва можно вписать процедуру создания нового процесса в линуксе. Это заняло бы пол книги. И даже этого там нет. Книга про ядро, это не все внутренности линукса.
>>1426495>(Mac|i)OS InternalsВот так неожиданность)Блин, даже стыдно стало за свое гугл-фу, спасибо большое.>>1426523ИМХО, просто эти две книги первыми приходят в голову, если возникает вопрос, что там у соответствующей ОСи под капотом.Если ты подскажешь другие варианты, буду только благодарен за толковое чтиво по тематике.
>>1426704>Если ты подскажешь другие варианты, буду только благодарен за толковое чтиво по тематике.Я бы сам почитал аналог windows internals про линукс, но кажется его нет.
>>1426495Двачую. Алсо, вангую в макось перспективно вкатываться в плане ресерча и поиска уязвимостей. У них же под откос все идет, сейчас пойдут сокращения в компании, дорогих разработчиков набреют и как всегда сэкономят на безопасности. Надо вкатываться, аноны.
>>1427487Да хер его знает.Мне не сложно, но я РЕ занимаюсь по большей части.Книжек не читал, функциональные патчи (читай: не только кряки) публиковал.Я хоббиист и практик — с меня мало толку в советах.Жди унылых компенсирующих профессиональных кукаретиков теоретиков.Из подводных камней состоит чуть более чем полностью. Ну и много времени надо не только на обучение и проектирование, но и на написание, ибо ничтожная атомарность.Стандартный совет: потыкай палочкой и задайся, в первую очередь, вопросом, в кайф ли тебе всё это.Жду гнева теоретиков.всё ещё крокодил
>>1427487Асм - самый простой язык, потому что процессор делает только то, что ты скажешь, только так, как ты скажешь, и ничего больше по крайней мере, все должно так выглядеть. Подводные в основном в том, что даже в пределах архитектуры есть зоопарк ассемблеров с частично несовместимым синтаксисом.>>1427499> Из подводных камней состоит чуть более чем полностьюПримеры будут?
Просто ссу в рот всем формошлепам. Ебучая помойка. Все работает через 3 пизды, если вообще работает. Если не работает, то соси хуй, ибо сам мало что изменишь. То ли дело всякие приближенные к железу и математике штуки. Все точно, как часы. Мне нужно было выговориться
>>1427519> Если не работает, то соси хуй, ибо сам мало что изменишь> То ли дело всякие приближенные к железуDRAM, например, с его роухаммером. Или те же процессоры, у который кроме распиаренных уязвимостей еще дохуя багов в errata. Тут ты хуй сосать не будешь, прикупишь себе фабрику и зделоешь правильно.
Гайд от очень известного и крутого дядьки, как стать топовым реверсачером. Без такого графика ты будешь лох-чмо с 30к зп в ООО НИИ ЛАХТА - Рога и Копыта. Что думаете?
Кто нибудь в треде пользуется kaitai struct? Как можно с помощью него описать поле флагов, чтобы в визуализаторе я все это видел в человекочитаемом виде?
Краем глаза заметил, как антивирус быстро сканирует объекты и стало интересно. Написал на Си небольшую программу, сканирующую память процесса на поиск сигнатуры и потерпел фиаско, скорость желает ожидать лучшего. Как они это делают так быстро?
>>1427842Не знаю. Но у меня на случай таких вопрос давно скачана и ещё не прочитана эта книга. Может тебе пригодится.
>>1406213 (OP)Забыл как формировать битмаски. http://ideone.com/UFArrzПочему в op вместо 0x31 записывается 0x49? В чем я ошибся при формировании маски? В макрос я передаю 0b00110001, а получается 0b1001001
Подскажите пожалуйста, как написать следующее в синтаксисе at&t:Mess_ins equ [bp+4] ;сообщение внутри рамкиAttr_ins equ [bp+2] ;атрибуты сообщения внутри рамкиOther equ [bp] ;иная конфигурация окна
>>1427982Уверен что гуглиться элементарно, а ты даже не пробовал. Первое не ебу, а второе алгоритм поиска Ахо-Корасика
>>1427982Ну кмп очевидно он про линейную оптимизацию поиска с помощью автоматов, которая вряд ли была реализована в простенькой программе на си. А 2 других слова не знаю.
>>1427983>>1427984Да тут дело не в алгоритмах. Я один процесс сканировал секунду, а антивирус за эту же секунду всю память обошел. Черная магия. Я так понял не написать мне йоба-антивирус без магистратуры мат. фака? Но я все же уверен, что тут дело в каких-то скрытых фишках винды.
>>1427829Бамп.А вообще тут есть аноны, разбирающие бинарные форматы? Чем пользуютесь? Нашел synalize it(под винду то же самое называется hexinator) - hex редактор с возможностью полудекларативно писать грамматики и интерактивно с подсветочкой парсить файл и смотреть определенные блоки. Потом нашел то же самое только лучше - kaitai struct и их webide. Но в обоих случаях не могу(или не понял как) нормально отображать битовые области с флагами.
>>1428039> А вообще тут есть аноны, разбирающие бинарные форматы? Есть. Использую HxD и глаза, параллельно пишу парсеры на питоне или сишке. Считаю эти ваши кайтаи и 010 неюзабельным говном, в лучшем случае пригодным, чтобы .bmp распарсить, но не сложные форматы.
>>1427994> Я один процесс сканировал секунду, а антивирус за эту же секунду всю память обошелТы можешь, например, пропускать регионы, которые не помечены, как исполняемые.
>>1428118Это еще ладно. Например не просто лежать и ворониных смотреть, а гулять с корешами и шутить так, чтобы задыхаться. А вот как интенсивно СЕМЬИТСЯ??? или ДОМИТЬСЯ?
>>1426704>>1426495>#MOXiIЕсть у кого сабж свежих версий?Или может кто из нищебродов типа меня готов скинуться на трехтомник 225$ ?
Где почитать про базовые адреса, буфера сиськи гыгы и тд, нужное для работы с памятью другого процесса. Интересуюсь для использования Memoryapi на c++. Я прям ноль в этом.
Randomized base Addres меняет базовый адрес единожды? То есть узнав его однажды, я могу каждый раз обращаться по этому адресу и это всегда будет искомый адрес?
>>1428405>>1428407Зайди на вики или msdn и почитай про ASLR. Получить базовый адрес - GetModuleHandle(NULL).
>>1428420Ну а дальше только шерстить MSDN и блоги всякие. Грубо говоря антивирус работает следующим образом:Регистрирует мини-фильтры/каллбэки на определенные события.Например при запуске процесса, их каллбэк срабатывает до точки входа приложения, следовательно они могут провести некоторые проверки и изолировать процесс. Тут больше винду надо исследовать, на то какие она возможности предоставляет для всего этого.
>>1427842Вспомнило как умельцы из ESET написали NOD32, который невероятно быстро на тот момент делал нихуяшеньки.
>>1428455Что за link.exe? Раз у него специфика такая, то никак, лол. Восстанови оригинальные байты, либо отобрази новую секцию в обход патчей.
>>1428457MS Link.exe.>Восстанови оригинальные байты, либо отобрази новую секцию в обход патчей.Чего? Какие байты? Мне надо, чтобы он секцию не загаживал при пересборке.
>>1428416Ок. Прочту. Я правильно понял, что эта функция не работает для стороннего процесса? Если так, то она мне не подходит
http://www.blackstormsecurity.com/docs/DEFCON_CHINA_ALEXANDRE.pdfЧитали? Согласны? Мое мнение, DTrace - просто имба. Теперь я точно все лето просижу за компом ковыряясь в винде. Алсо, запись данной конференции есть у кого? Не могу найти.
>>1406213 (OP)Какой принцип работы таких дизассемблеров? https://github.com/vxlabinfo/malware/blob/master/beetle2/beetle/ldasm.cppПо какому принципу строится таблица? Где-то в ней размещается ОПкод, и по этому опкоду можно найти ModR/M или SIB что ли?
>>1428949Опкод используется в качестве индекса в таблице, из таблицы читаются флаги для инструкции, указывающие, из чего она состоит (офсеты, модрм). Если опкод хочет модрм, читается модрм, если модрм предполагает SIB, читается SIB. С помощью всего этого вычисляется, сколько байт после опкода нужно пропустить. Всё, что приводит к раздуванию таблицы (префиксы, альтернативные таблицы) обрабатывается явно.
>>1429009А как такая таблица строится и почему формула построена именно как return packed_table[packed_table[code / 4] + (code % 4)];Почему берется остаток от деления и неполное частное? Почему четверка? Как такую таблицу составить для декодирования инструкции mov eax, [0x00401000]?unsigned char mov[] = "\x8B\x05\0x00\0x10\0x40\x00";Хочу начать написание такой же штуки с простейшего случая. Ну или с декодирования NOP, но это неинтересно.
Как записать адрес функции в массив байтов?memcpy(buffer, &function, 8) - какой-то мусор вместо адреса записывает.
>>1429053>memcpy(buffer, &function, 8)Судя по документации, ты копируешь 8 первых байт самой функции (тела) вместо её адреса.Делай проще. Как-нибудь так:*bufer = &function;
>>1429119Почти. Просто хакиры. У многих инструкций форматы совпадают, поэтому можно не хранить флаги для всех 0x100 + 0x100 (однобайтовых и двубайтовых) опкодов отдельно, а вместо этого положить совпадающие флаги один раз, и на них ссылаться. В таблице фактически сначала индексы лежат, а потом флаги. Но индексы тоже занимают место, и ты вроде бы наоборот должен проиграть. Но как ты верно заметил, у многих инструкций есть d/w биты, и если флаги для группы инструкций положить последовательно, то ты можешь адресовать одним индексом всю такую группу. Так и сделано: code / 4 убирает младшие два бита (нормальный челове написал бы code >> 2), получает индекс группы и прибавляет к нему офсет в группе (code & 3), по получившемуся индексу читает флаги. Можешь это дело распаковать и посмотреть: http://ideone.com/WeETG5
>>1429053#include <stdint.h>∗(uintptr_t ∗)buffer = (uintptr_t)function;и ты не ломаешься, когда тебя с -m32 соберут. Правда, здорово?
>>1429133Приду домой после настолочек - поковыряю. Как такую таблицу сгенерить скриптом? Сначала положить все опкоды (это первые 6 бит любой инструкции без префикса), а остальные клетки заполнить флагами?А насколько актуально морфить код, изменяя бит d в инструкциях типа xor ax, ax с одинаковыми операндами? Таких инструкций в любом коде мало. Я думаю, такой морфинг немного бесполезен. В инструкциях вида op reg, mem и op reg, imm тоже можно поиграть с битами, но я с этим еще не разобрался.
>>1429133>У многих инструкций форматы совпадают, поэтому можно не хранить флаги для всех 0x100 + 0x100 (однобайтовых и двубайтовых) опкодов отдельно, а вместо этого положить совпадающие флаги один раз, и на них ссылатьсяДа, форматы совпадают, но инструкции mov ax, ax и add ax, bx кодируются по-разному. Как отобразить обе эти инструкции на одну ячейку с флагами?
>>1429136> Как такую таблицу сгенерить скриптом?Обновил код по ссылке. Берешь мануалы интела, том 2, appendix A с табличками. Записываешь для каждой из двух таблиц (однобайтовые и двухбайтовые опкоды) нужные флаги (можешь и трехбайтовые поддержать, если хочешь), получаешь список из 512 (768) элементов. Ну а дальше жмешь. Это простейший словарный метод фактически - если последовательность из 4 байтов с флагами есть в таблице - записываешь индекс, если нет - кладешь ее туда и записываешь индекс. Все эти разговоры про d/w-биты интересны лишь для того, чтобы понять, почему именно для 4 байт оно жмется лучше всего.>>1429137> Как отобразить обе эти инструкции на одну ячейку с флагами?Записать один и тот же индекс ячейки с флагами для обеих инструкций?ADD - это "группа" 00-04 ((Eb, Gb), (Ev, Gv), (Gb, Eb), (Gv, Ev))MOV - это "группа" 88-8с ((Eb, Gb), (Ev, Gv), (Gb, Eb), (Gv, Ev))Т.е., да, у нас разные опкоды, похуй на опкоды - операнды-то кодируются одинаково (для 01 и 89 это Ev, Gv, для остальных пар тоже совпадают). Где-то в таблице (по индексам 80-84) лежат 4 байта с флагами, которые подходят и для ADD, и для MOV. Поэтому ты пишешь в индекс (01 >> 2) значение 80, в индекс (89 >> 2) значение 80, все.
>>1429182По большей части (на реально существующих и распространенных платформах) - да. Вот если платформа требует выравнивания для чтения/записи указателей, а буфер не выровнен - может случиться что-нибудь нехорошее. Ну можешь сделать: uintptr_t funcadddr = func; memcpy(buffer, &funcaddr, sizeof(funcaddr)), если тебя это волнует.
>>1425211Кто уже прочитал? Обсудим? Вам не кажется, что слишком мало посвящено современным технологиям? Сейчас нет смысла что-нибудь писать, что не работает в дэфолтной win10 x64 с uefi. И про обход проверки целостности в таких условиях там полторы страницы без описания PoC или разбора какой-нибудь малвари. Упомянули эксплоит в драйвере виртуалбокса всего в одном предложении, хотя эта тема заслуживает отдельной главы. При этом более древние техники с mbr на xp разобраны на 100 страниц.
>>1429357Дочитал. Вот сижу https://www.youtube.com/watch?v=7p2uAgO9lBQ смотрю. Ну да, я тоже большего ожидал, на самом деле, каких-то практических знаний, а вышло по итогу, что я знаю что какие-то технологии / дыры там есть, но как их исследовать не знаю и остается только фантазировать. Короче углубляться надо самому.
>>1429357На сколько я понял, удаленно уже ничего провернуть нельзя. Не зря за удаленное постоянство на уровне железа награда в 1-2 миллиона долларов у эпл и 1 лям у мс. Но атаки с физическим доступом более чем реальны. Погугли блог Dmytro Oleksiuk'a (Cr4sh).
>>1429412>Cr4shЭтого знаю. Речь не про удалёный jailbreak, а просто как установить драйвер в винду не имея подписи. Ну или не драйвер, а какой-нибудь другой буткит, но он должен работать на чём-то современном, а не пытаться лезть в мбр.
>>1429431В таком случае не становятся ли актуальными полиморфные-метаморфные вирусы? Зачем ебаться с подписями, если можно жить в файлах?
Что почитать об оперативной памяти? Меня волнует это, потому что захотел написать свой недо cheat engine с функционалом 1/10000 от оригинала. Как я понял ReadProcessMemory читает всю память процесса (с кодом). А мне код нахуй не нужен. Данные же полюбому как то помечаются на исполняемые и неисполняемые.
>>1429133>В таблице фактически сначала индексы лежат, а потом флаги. Но индексы тоже занимают место, и ты вроде бы наоборот должен проиграть. Но как ты верно заметил, у многих инструкций есть d/w биты, и если флаги для группы инструкций положить последовательно, то ты можешь адресовать одним индексом всю такую группу.Примерно понял. Число code >> 2 это начало группы флагов, а число (code >> 2) + code & 3 непосредственно выбирает флаг. Но зачем так сделано? Разве mov ax, ax с d=1 отличается от mov ax, ax с d=0? Разве от флагов d, w, s зависит то, будет ли за первым байтом инструкции идти байт ModR/M или SIB? Может, лучше просто выбирать флаги по индексу code >> 2?
>>1429431> а просто как установить драйвер в винду не имея подписиНа своем компьютере если, то просто отключаешь проверку подписи драйвера, включаешь режим отладки и грузишь драйвер. Также в биосе есть функции по отключению проверки подписи прошивки.Удаленно установить прям именно драйвер никак нельзя. Можно разве что выполнить шеллкод в режиме ядра с помощью уязвимостей в компонентах ОС, либо через уязвимый легитимный драйвер но у тебя уже должны быть права админа. Буткит на тачке со всеми включенными функциями защиты то есть по дефолту ты никак не установишь. В теории конечно можно, но очень много где должны сойтись звезды.
>>1429619И как ты себе это представляешь? При заражении файла сигнатура бьется, файл не считается легитимным. Также есть всякие ASLR, DEP, CFG и прочие механизмы, которые убили полиморфные вирусы уже очень давно.
>>1429774>Также есть всякие ASLRКак рандомизация базового адреса и защита стека убили вирусы, если вирус можно написать базонезависимым?
>>1429735Я попытался тебе объяснить, почему именно группы по 4, а в итоге только запутал. Давай еще раз.Похуй, какая там структура у инструкций, какие у нее там где d или w. У тебя есть массив из каких-то 512 байт, ты хочешь его сжать (не знаю, зачем, но ты, наверное, хакир). Ты можешь использовать RLE, LZW или еще какую-нибудь хуйню, и оно отлично все пожмет, но тогда ты не сможешь запросто взять элемент i из массива, тебе придется его распаковывать от индекса 0 до i. Это тебе не подходит, это медленно. Тут ты замечаешь, что в массиве по офсетам, кратным 4 часто начинаются совпадающие последовательности байтов длиной 4. И ты решаешь хранить каждую такую последовательность один раз и делаешь новый массив. Но индексы элементов пошли по пизде, они отличаются от старых. Поэтому тебе нужна табличка, которая преобразует индекс i в несжатом 512-байтовом массиве в новый j в сжатом. Но эта табличка, очевидно, займет как минимум 512 байтов, плюс еще сжатый массив. Но офсеты последовательностей у тебя были кратны 4! Значит, для каждого i+0, i+1, i+2, i+3 где i кратен 4, можно хранить один и тот же индекс j, а вот эти +0, +1, +2, +3 прибавлять уже потом. И тогда у тебя таблица трансляции i -> j из 512 байтов становится всего 512 / 4 = 128, плюс сжатый массив. И это уже выигрыш.А вот ответ, почему в массиве больше всего одинаковых последовательностей оказалось по 4 байта и по адресам, кратным 4 - как раз в том, что опкоды не всегда присваивались как попало, а существуют вот эти самые d и w. Ты мог бы хранить последовательности по 2, и флаги сжались бы лучше, но ты бы проиграл на индексах. Ты мог бы хранить последовательности > 4, так ты бы выиграл на индексах, но флаги бы сжались гораздо хуже (наверное, я не проверял).Алсо, если ты сам дизасм длин собрался писать, нахуй тебе в 2019 сжимать таблицу и вот в это все пердолиться? Храни как есть.> Может, лучше просто выбирать флаги по индексу code >> 2?Это сработало бы, если бы у всех инструкций были бы d и w. Но вот есть cbw (98), cwd (99), call far (9a). У 98 и 99 нет операндов, у 9a один и большой. Если ты сделаешь просто table[9a >> 2], ты получишь флаги для cbw и вычислишь неверную длину в результате.
>>1429837Можно вопрос. Где эти знания могут пригодиться вообще? Зачем писать дизасемблер самому, если есть десятки аналогов? Пердолинг ради пердолинга?
>>1429856Это кажется, что есть аналоги, а как до дела дойдет - то нельзя, это не работает, это только через ебаный костыль, вся либа ебаный костыль, пошло оно все в пизду, учу 1С. На самом деле дизассемблеров длин не так много, а если искать одновременно поддерживающий все современные инструкции и чтобы размером в одну-две страницы на Си, то их вообще ноль, наверное.
>>1429837Принцип сжатия я понял. Мне интересно, на какие группы разбиваются все инструкции на x86. Вот у mov eax, [00401000] есть ModR/M и 4-байтный адрес. А у push eax (0x50) больше нет никаких байт, кроме этого опкода. add eax, [00401000] похож на mov выше. А еще есть инструкции с 8-битными, 16-битными и 32-битными операндами. Есть инструкции без операндов. Я предполагаю, что количество групп, на которые можно разделить все инструкции, совпадает с количеством 4--байтных последовательностей флагов. Хочу понять, что это за группы и сколько их.
>>1429935> на какие группы разбиваются все инструкции на x86Ну оно разве что когда-то давно разбивалось: https://gist.github.com/seanjensengrey/f971c20d05d4d0efc0781f2f3c0353da (да и то, например софтварный INT не просто так cd, а потому что в 8080 по cd CALL был). Потом, в процессе развития x86, инструкции уже просто тыкали везде, где оставалось свободное место (а с ним было очень напряжно, из-за чего, например, pop cs под двухбайтовые опкоды реюзнули). Поэтому не стоит искать структуру там, где ее уже давно нет. Даже в RISC форматы кодирования дробятся со временем.> количество групп, на которые можно разделить все инструкции, совпадает с количеством 4--байтных последовательностей флаговНет. Например, "группы" для PUSH reg и POP reg состоит из 8 инструкций, расположенных последовательно. А вот в PUSH sreg (для es,cs,ss,ds) сегментный регистр указывается в середине инструкции, т.е., "группа" как бы существует, но получившиеся опкоды разбросаны по всей таблице.Если реально интересно, возьми мануалы интела постарше (типа 486, а лучше 8086), там инструкции хоть и сгруппированы по применению, их структура наглядно нарисована, можешь спарсить оттуда данные и погруппировать.
Кто нибудь находил какие либо технические детали по поводу Memory Integrity с использованием HVCI? Такими темпами винда убьет всю малварь сама и антивирусы станут не нужны, как в случае с макосью. Что думаете?
>>1430397> Такими темпами винда убьет всю малварь самаКак это защитит от на коленке сделанного скрипта из десяти строк, который зашифрует Documents и попросит бетховенов?
>>1430554> Одно слово - SRP. Ну ты у себя настроишь. А кто будет пользователям объяснять, почему у них инсталлятор скачанной программы не запускается? А если запускается? А если в инсталляторе тот самый скрипт?
Есть такая няка. Как пропатчить эту программу, чтобы MessageBox отобразился два раза? Не примитивные способы типа копипаста.
>>1431394– Вот как мне, интересно, файлы получше заражать, – размышлял Винни. – Если я положу в начале программы RET, а стек заставлю смотреть на адрес возврата…– Кого заставишь смотреть? – испугался Пятачок, которому померещилось чего-то страшное.– Стек, – сказал Винни Пух.– Ага, – сказал Пятачок понимающе и отодвинулся от монитора подальше.– Вот… Заставлю его смотреть на адрес возврата, то Пчелы, наверное, подумают, что это просто какая-то ошибочка и ничего не заметят. А если я поставлю вначале переход на вирус, как вызов процедуры, то Пчелы, наверное, подумают, что это маленькая подпрограммка и тоже ничего не заметят. По-моему так.– Ага! – поддакнул Пятачок.– Ну, чего будем ставить? – спросил Винни.– Я? А… Его… Знаешь, Винни, – сказал Пятачок решительно. – Если там кто-то на кого-то будет смотреть, то это очень страшно. Давай лучше ма-а-аленькую парт… порт… прод-программочку, все равно Пчелы ни чего не заметят.– Устами поросенка глаголет Истина, – сказал Пух важно, решительно опуская лапы на клавиатуру, и Пятачок заметно покраснел и стал выводить левым задним копытцем неопределенные круги.
>>1431403Как это сделать в hiew, чтобы не затирать байты, а добавить новые? В меню edit->asm только затирание
>>1431515Ты хочешь в середину сегмента кода новые байты вставить? Тогда у тебя после них все ссылки поедут и ничего не будет работать.
>>1432027Ок. Завтра напишу. Если не постесняюсь.Обсудим теперь эту книгу? Помню алиса в твитере так пафосно прокомментировала книгу. "не буду утверждать, что всё написанное про меня правда". А оказалось, что про неё там 2 абзаца скопипащенных с форбса. И странно, что не упоминали диму краша из-за которого как раз и попала под санкции алиса. Хотя сама виновата, что понабрала школьников с античата в компанию. В gib например всех на полиграфе проверяют и каким бы талантливым он не был его бы туда не взяли.
>>1432099там и платят мало. идти стоит или студентом, а потом валить или директором, а потом оставиться
В нулевых был какой-то годный русскоязычный журнал, который каждый уважающий себя асемблятор выписывал, название было из двух слов, журнал точно был one of a kind, может тут кто-то вспомнит?
>>1431583Да, хочу, например, пропатчить адрес возврата и записать что-то типа mov dword ptr[esp+1], 401000h.Что надо делать, чтобы все ссылки не поехали? Есть инструменты, которые автоматизируют такой патчинг?
>>1432368Как виннипух тебе написал. Вместо call MessageBoxA делаешь call куда-то в пустое место программы, а там делаешь что нужно. Пчелы подумают, что это маленькая подпрограммка и ничего не заметят.
>>1432376Понял. У меня как-то не так встали адреса. В hiew я выбираю edit->Asm и ввожу push 0401000. Это адрес подпрограммки, которая выводит окно. Но в OllyDbg видно, что обращение происходит вообще не туда. Видимо, я не умею правильно записывать адреса в hiew. Как это делать?Потом я хотел переместить вывод окна в пустую область нулей, но команда call MessageBoxA не ассемблировалась. Как ассемблировать вызовы импортов?
>>1432460> Но в OllyDbg видно, что обращение происходит вообще не тудаУ exe-шника случайно релоков нет?> hiewНо зачем пердолиться в это говно мамонта, если ты можешь ассемблировать прямо в ольке?
>>1432609Ясен пень, тян априори в лоу левел въехать не могут. Есть книга то в нормальном .pdf формате? А то скачал выше по ссылке, там фотками все.
>>1432609Можно скрин треда?Я просто хз вообще как на факаве регу пройти тк у меня из профилей на форумах только пустой профиль на экспе
>>1432638Вроде, это https://fuckav.ru/showthread.php?t=32169Суть такова. Там внезапно появилась тян, которая стала активно тусить на форуме и влезать в каждый тред, чтобы показать свою компетентность. Предлагала безвозмездную помощь. Тем не менее, все обращались к "ней" в мужском роде. Потом она там начала барыжить и ее поймали на барыжничестве чьим-то криптором.
>>1432640Какая-то ересь полная. Заказчик там сам мягко говоря с программированием мало знаком, исполнитель - тоже. Я что-то передумал даже книгу читать, если там о таких товарищах пишется. Или годная все таки?
>>1432685>Я что-то передумал даже книгу читать, если там о таких товарищах пишется.Это и есть настоящие хакеры. Люди, которые хуево знают программирование, но любят залезать в анусы операционных систем, чтобы поиметь с этого деньги. Такие товарищи носят в своих вирусах bat-файлы. А в книге еще рассказывается про барыгу оружием.
>>1432688Да уж. Из всей этой тусовки только персонаж Indy вызывает доверие. Олдфаг со стажем, помогает бесплатно, ресерчит даже что-то успешно. На забугорных форумах видел упоминания о нем и похвалы. Жалко конечно что у него своего блога нет, приходится в интернетах сообщения выискивать. Короче нафик этот хакинг, тот еще пердолинг, либо чернухой заниматься и вот такие кадры будут тебе написывать, либо в какую-нибудь Лахту-2 устраиваться, где тебя на полиграфах будут насиловать. Тут по-моему единственный адекватный выбор - это идти малварь реверсить к какую-нибудь тир2-3 ав кантору.
>>1432792Давай решим сначала, что такое хакинг. По ссылкам выше ребячество. Пару сотен строк кода с использованием документированного апи. Это хакинг разве? Такое даже в джава треде осилят.Ты чего так загорелся-то? Я тебя задел что-ли? Ну если хочешь, давай проверим чье кунг-фу сильнее. Придумывай задание.
>>1432616>Ясен пень, тян априори в лоу левел въехать не могутБоюсь мне придется хуй тебе по рылу размазать.ничего личного, Северодвинск рулит
>>1432816>Придумывай задание.Реализуй аналог WinApi функции LoadLibrary, получающей указатель на буфер в памяти с содержимым DLL-ки вместо имени файла.
Хочу написать низкоуровневую программку, которая прочитает от юзера два сколь угодно длинных числа, сложит их и выведет результат на экран. Без аллокаторов памяти и прочего. Как это можно сделать?Я хочу заюзать прерывания биос, но тогда, наверное, придется работать в реальном режиме. Прерывания ведь недоступны из ПМ?Как еще можно решить задачу?
>>1433210> Как еще можно решить задачу?Никак. Защищенный режим на то и защищенный, чтобы не давать тебе доступ к железу в обход дров (мы же про ОС говорим, а не про код, который сам в защищенный режим переключается?). Алсо, вот как раз в реальном режиме ты можешь обойтись и без прерываний, выводя напрямую в видеопамять.
какие поля у структуры линуксового модуля могут быть интересны при разработке IDS? можете посоветовать какой нибудь современный цикл статей по фундаментальным структурам линукса типа процессы, сетевые соединения, модули и тд, чтобы читалось легко?
>>1433196Издеваешься? Исходники на васме еще с 2000 года висят, куча современных аналогов на гитхабе. Реализаций отображения буфера в целевой процесс может быть несколько, также как и вызова мейн функции. Давай корректное задание с описанными деталями реализации и не то которое придется весь день писать.
>>1433430https://github.com/Zer0Mem0ry/ManualMap/blob/master/ManualInjector/ManualInjector.cppВот например. Самая обычная реализация с использованием высокоуровневого документированного апи. Выделяешь виртуальную память в целевом процессе, записываешь туда буфер, правишь его согласно правилам pe-формата, вызываешь мейн функцию по средствам создания нового потока. Никаких хаков.
>>1433437Сойдет, хотя код жопошный, конечно.Хоть бы RAII-врапперы понаписал для базовых вещей, и макрос для доступа в структуру с проверкой валидности смещения.
>>1433437> с использованием высокоуровневого документированного апиДавай заценим:1) Формат не проверяется совсем, вообще, никак. Скормив этой фукции сломанную длл или неподдерживаемую длл (см., например, типы поправок, которые не проверяются тоже), можно уронить все нахуй. Да этой хуйней можно mp3 грузить!2) Модуля нет в PEB_LDR_DATA, многие функции Windows API с этой "длл" работать не будут. Например, та же работа с ресурсами.3) TLS не поддерживается.4) Activation context-ы не поддерживаются, load configuration не поддерживается, 64 бита не поддерживаются, runtime function table, куча других сколько-нибудь современных вещей - нет. И это я еще молчу о тонкостях PE-формата.Выводы сделаешь сам?
>>1433447По хорошему надо PE-парсер туда имплантировать и разные врапперы/хелперы, а так да, нечитабельно.>>1433462Правильно, это POC скорее всего, а не полноценная реализация. Но хацкеры обычно инжектят голые длл или шеллкод, где нет никаких TLS, эксепшенов и прочей лабуды. Грамотный парсер PE-формата фиксит все вышеперечисленные тобою проблемы. Кроме того, я уверяю тебя, что все это вообще не нужно, ибо весь функционал можно реализовать в рантайме. А что там за тонкости PE-формата?
>>1433471> А что там за тонкости PE-формата? Ну я имел в виду всякие банальности типа VirtualSize = 0 у секций. Код не читал, только скроллил.> инжектят голые длл или шеллкодТам выше просили "аналог WinApi функции LoadLibrary", а не шелкоды-инжекты-хаки-спамы-куки. Шелкоду PE-лоадер без надобности.> я уверяю тебя, что все это вообще не нужноЭто у тебя просто никогда MessageBox() не фэйлился из-за того, что лоадер SxS не умеет.
>>1433520Тогда и смысла реализовывать это все руками нет, если не для хакинга. Некорректная задача. Реализовать все и не получится, потому что есть куча мест, куда нужно что-то впихнуть, где-то счетчик ссылок поправить забыл и у тебя все упадет.>Это у тебя просто никогда MessageBox() не фэйлился из-за того, что лоадер SxS не умеет.Приведи пример.
>>1433546> Приведи пример. Деталей уже не помню, много лет прошло. Примерно так: XP, comctl32 в импортах, отсутствие InitCommonControls. MessageBox возвращал 0 с валидными параметрами. Допилили SxS и заработало.> если не для хакингаДля моддинга. Грузилась игра, правились/подменялись импорты и код на лету. На WriteProcessMemory возбуждался антивирус, пользователи пугались, поэтому был запилен лоадер. Потом по-другому сделали, правда.
>>1432090А неплохая все таки книженция. Интересные истории получились, кому-то повезло, кому-то совсем нет. Ну а про наше внутреннее устройство и так все знали, разве что навальнята вон пусть просвещаются.
Пытаюсь расковырять в IDA Pro обычную программу (хэллоуворлд), скомпиленную в Visual Studio. Я долго искал main через _start, в итоге обнаружил, что он вызывает метод с двумя вложенными методами с двумя вложенными методами и так далее... Разок наткнулся на строку, которую программа выводит, а сам метод printf вызывается не в той подпрограмме, где значение кладется в стек, а через два слоя таких вот sub'ов! Анончик, почему все так дико?
>>1434867https://dropmefiles.com/MGhyHОткрывать только на реальной машине. На виртуалке не сработает.
Студентоты полон тред. Кто нибудь здесь хоть раз операторы местами переставлял для того чтобы уменьшить время переключения пайплайна?
>>1435172судя по размеру тут первая версия с пальцами>>1435292держи няшhttps://anonfile.com/f0wd6ez8n6/Turovskiy_Vtorjenie_pdf
немного оффтоп, но может кто нибудь знает. есть произвольная линуксовая система, на которой запущен скрипт командой python3 scriptname.py от имени рута, но запускал не я, хоть и есть доступ к руту. ни в / ни в ~ рута скрипта scriptname.py нет, да и через find/locate по всей системе он тоже не находится. мне нужно узнать, что именно делает скрипт, в иделае вообще получить его сорсы. как это можно сделать?
>>1435337я ленивый студент и иду по https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12 вот этому гайду. почитал про /proc/pid/fd на so. в моём случае выдаёт пикрилейтед. что это может значить?
>>1435340Это значит, что ты пидор не умеешь учиться, и ждешь, что кто-то решит за тебя задачу. С таким подходом в ИБ делать нечего.В качестве общего подхода, могу посоветовать тебе смоделировать ситуацию, и смотреть там, что и как.
>>1435353ух ты блять какой. ну и ладно, придется тратить время и гуглить, я пришёл сюда за помощью с нетривиальной проблемой, потому что вроде как для этого форумы и нужны, но если тут только нахуй посылают с вопросами, то чё делать, пойду искать решение сам.
>>1435340Это значит, что питон не держит файл со скриптом открытым, а скрипт, скорее всего, себя уже удолил, раз find не находит. Хотя ты в /proc/<pid>/cwd смотрел? сдампи память процесса
>>1435294>судя по размеру тут первая версия с пальцамиТам сжато. не хотел 60 мегабайт по сети загружать
>>1432090>Обсудим теперь эту книгу?Хунта из под коня.Серьезно, кроме пары интервью вообще ничего нового/интересного.О каких-нибудь технических деталях я уже вообще молчу.
Такой вопрос. Я тут статью на хабре прочитал, там парень рассказывал, как занимался реверс инжинирингом контроллера лифта в подъезде.Насколько нужно быть профессионалом, чтобы провернуть такое?Вот допустим я чисто поприколу хочу влезть в лифт в падике и кнопки перемешать (теоретическая ситуация). Сколько мне нужно будет обучаться, чтобы смочь такое?
https://movaxbx.ru/2019/06/06/debug-uefi-code-by-single-stepping-your-coffee-lake-s-hardware-cpu/Под амд аналоги есть?
>>1406213 (OP)дело было вечером, делать было нечего, забэкапил на гит/гитбук с wasm.in перевод "Введение в реверсинг с нуля, используя IDA PRO" от Яши. Из плюсов гитбука - полнтекстовый поиск.Есть еще чем там заняться, но это уже по времени/возможности. Или если кто то сам поправит и пулреквест пришлет https://yutewiyof.gitbook.io/intro-rev-ida-pro
>>1436491это как вырезать гланды через жопу. Залезаешь в падк, снимаешь панель, тасуешь кнопки. профит.а в статье описано то что делалось овердохуя жопачасов
>>1436495>анус разработатьДа я же незаметно. Ночью залезу и сделаю всё.А если серьезно, интересен просто сам вопрос, сколько времени нужно изучать материал, чтобы смочь сделать такую вещь.Или, вот адекватный пример. Есть у меня например кофемашина. И я пару кнопок не использую (ну там где пенка и тд). Я хочу сам залезть и перепрограммировать так, чтобы на эти две кнопки делалось другое (кофе с выбранными параметрами). Чтобы не крутить вертушки и не настраивать, а просто кнопку нажать.Так вот, насколько это сложно для человека, который никогда платами не занимался и реверс инжинирингом тоже? Сколько потребуется времени, чтобы научиться?>>1436638Так не интересно. Да и это решения уровня, стереть вообще цифры у кнопок.Тут же вопрос скорее общий и теоретический.
>>1436695чтобы ты смог взять чип с кофеварки,написать свою прошивку на асме проца этой платы и все прошить?Или что ты имеешь ввиду?Найми спецов лучше
>>1436695>Тут же вопрос скорее общий и теоретический.к каждой цели надо идти разумными средствами/способами.
>>1436721А обязательно свою прошивку писать? Нельзя ли просто немного изменить ту, что уже есть? Может и тупой вопрос, я просто никогда этим не занимался.
>>1436755зависит от целей и размаха. начни для начала прогать, и смотри на результат. Заодно разбирай все что пишешь. У Юрича все хорошо написано.В шапке :beginners.re - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
>>1436755ЗЫ. если прогать сложно будет, то в реверс лесть тем более. Там многое завязано на багаж опыта.
>>1436637А вот за это большое благодарочка, анон. В шапку можно будет добавить. Алсо, куда Яшечка в итоге ушел? С васма то его выгнали, к сожалению.
аноны, помогите, как работать с режимами процессора в асме? я знаю его не очень, но просто интересно для себя покапаться в защищёных и прочих режимах проца, чтобы понять разобраться и получить базовые скилы.
Извиняюсь за небольшой оффтопКто может сказать где сейчас 29A,z0mbie и прочие крутые вирмейкеры из начала нулевых?Когда они все это творили я только родился,так что не застал.Интересна их судьба
>>1437468Наврено самое доступное и более менее актуальное:Аблязов Руслан Зуфярович - Программирование на ассемблере на платформе x86-64
Кроссплатформенный Ассемблер!https://gamedev.ru/code/forum/?id=244813Совершенно случайно наткнулся на такую тему, вопрос в том: КАК?
>>1437674Ничего не случилось, fasm остался. fasmg - это fasm2 движок для написания ассемблеров с помощью допиленных макросов fasm.>>1437865Ну начинается...
>>1437865>Совершенно случайно наткнулся на такую тему, вопрос в том: КАК?Кроссплатформенный Ассемблер это С, без шуток.
>>1438001>год появления 1970Потому что ему (ей) больше, чем большинству посетителей этой (и любой другой) борды.Хотя уже яваскрипту с пыхой больше 18, теперь даже с ними не зазорно трахаться.
>>1438003>Хотя уже яваскрипту с пыхой больше 18, теперь даже с ними не зазорно трахатьсяЯ бы не стал. Велики шансы подцепить рак глаз или даже мозга.
>>1438003ну и чтоалсо на картинке откуда она взята руби моложе джавы хотя должна быть старшеи самая милая там - лол визуал бейсик
>>1437999Без шуток, ассемблер это классический бейсик, буквально. Портянка инструкций с адресами, джампы, джампы с возвратом.
>>1436637>>1406213 (OP)https://backoftut.gitbook.io/intro-cracking-with-ollydbg/Аналогичный бэкап курса Нарвахи по азам но уже на примере Ольки КМК, тут основы лучше рассказаны чем в курсе с идой, там их по верхам. И вообще базу все же лучше отдельно, а материал по инструментам отдельно. Но как есть
>>1406213 (OP)ТЫ, КТО СМЕЕТ ЭТО ВАШЕ ДЕРЬМО ПОГАНОЕ ЗДЕСЬ ХЕРАЧИТЬ, ЭТО ТЫ, ТАК НАЗЫВАЕМЫЙ БАЙТОСЛЕСАРЬ, ТЫ ГЕЙСКАЯ МРАЗЬ ПОГАНАЯ, ТЫ МУДАК СРАНЫЙ, ВОНЮЧИЙ ТЫ УРОД, ПОДОНОК, ЧТОБ ТЫ В НИИ ЗА 30К В МЕСЯЦ ГНИЛ, ТВАРЬ, ГНИДА ПОГАНАЯ! Я ТОЛЬКО НАТУРАЛ АБСОЛЮТНЫЙ, ЧИСТЕЙШИЙ ГЕТЕРО ПОЛНОСТЬЮ, НАВСЕГДА ТОЛЬКО НАТУРАЛ Я - ТОЛЬКО ДЕВУШЕК ОДНИХ ЛЮБЛЮ, ТОЛЬКО ДЕВУШЕК КРАСАВИЦ И ВСЁ!! ТОЛЬКО С ДЕВУШКАМИ ВСТРЕЧАЮСЬ, ТРАХАЮСЬ С ДЕВУШКАМИ СПЛЮ ТОЛЬКО! И ПРОГРАММИСТ Я ТОЛЬКО И ВСЁ!
>>1438081Нет, макросы fasmg гораздо мощнее и позволяют делать вещи, невозможные или требующие костылей в fasm1 (хотя кое-что Томаш бэкпортировал уже).
>>1438120>В НИИ ЗА 30К В МЕСЯЦА где там зарплаты? Последнее предложение, что я видел, было 12. А я и в частной программистом на битриксе 30 умудряюсь получать.
>>1406213 (OP)Аноны, вопрос не совсем по теме, но спрошу - какие книги есть по машинному обучению в RE? Машоб-тред - помойка, там спрашивать бессмысленно.
прошу проверитьданоодно прерывание приходит каждые 13.57смнеобходима скорость в кмчэто интмогу на индекаторе отображать только 4 знакатое 1234точку естествеенно буду ставить в ручнуютое 45.5кмч это 455на пике кодпожалуйста проверьте эту константу
а именно 37980последний нуль смущаетнелюблю нулиоказываецатхл и тхх карочиэто таймера и прерыванияк примеруесть таймеру него 2 регистра по байтутх и тлкак только тл 256 тое =0 0хффон клацает камнемтое нельзя сделать так нижний регитр +2 кагда он 254верхний не щелница нихуяче забред? задаст вопрос зумерога этот бред начинаеца кагда ты начинаеш развадить второе прерывание по первому таймерупритом это второе прерывание очень долгоеи можето и 1 раз за перва тайиер и один раз за 200 таймерова можите и меня обассат
>>1437865не тупи маняме....после кросплатформы у твай няфы вместо ушей хуи вместо глаз залупа...один хуй все перещитывать в ручнуюя эту константу шитал 10 часов в течении полугодаи та мине не нравицапотомучто физики дахуятое внешних условий сверх быстрых просто ниебическое количество
>>1438491Ну вот с fasmg ты можешь генерировать дебагинфу в любом формате, для которого только сможешь написать макросы (азаза. А в обычном фасме у тебя есть .fas и конвертеры какие-то вроде были для него, но сразу CodeView (PDB) он тебе не сделает.
>>1438597не трахай мозг мальчикповерь мнедостаточно всеголиш знать канкретные точки и количество времени да оно будет плавать +- 0.0001но ты ахренееш от физики больше вот сматри к примеру я тут недавно пытался решить мазгом анона канкретную задачку проще оказалось взять ручку и написать все на бумаге я серьезно.а задачка достаточно простаесть прерывание оно происходит каждые 13.57 смтое стоит датчик и каждый оборот диска равен этой величинеесть таймер один тик которого пол микросекундыэтот таймер задающий и трогать его тое перезапускать нельзяон как начал со сваих 0хе100 так и ебашит до переполнениявся его работа занимает 3.98милисекундыну а теперь задача надо вычислить километры в чася об том что никакой фасм тасм хуясм не сделает твою работу по приведению физ виличин к требуемому порядкуодин хуй все считать надо в ручную и выводить константыневериш?тагда тебе очередной примерпечка шизиканеповериш я 3 месяца трахался с этой хуйнейсмысл вот в чемна печке в качестве ключа стоит семистрего вольт амперная...карочия могу дергать им только на включение на полу волнетое подал импульс и он включилсявсе просто?да когда у тебя либо включить либо выключить либо 50 процентова что если необходимо 37 процентов?и тут я начал знатно обсераца - осозновая что оказываеца полуволна это синусоидатое .....карочи я пришел сюда с этой проблемой и гдето неделю формулировал анону задачуон мне дал решениеты не повериш я его прогнал и оно оказалось вернымне без косяковканешн но анон и не говарил что идеальножопа началась чуть позжекагда я решил загнать эту формулу в исполняемый кодне повериш эта вся залупа выполнялась чтото около секунды и занимала в коде ниебучее количество места ........и лиш включив мазгипросчитав туда сюда подумав и прочее я написал пиканону спасибопечка уже 4 год греет маю запойную задницуи пряма сейчас сушит 30кг яблоквообще 8 бит это не столько программированиеэто больше понимание физ процессовепта нам в шараге препода искали помоему пол года на предмет математические величины физических процессовврать не буду но там именно была та хуйня чем я сейчас занимаюськанкретноесть датчиг? приведи его и поверь датчиги разные бываюти настолько порой узкие пределы и ограничения....это просто пиздец...к примерумой топливный на матарошкену вроде все заебись ога?он емкостный он кажет маи три с половиной литра с точностью в милилитр все заебисьнедогадался в чем жопа?угу бак сцука кривойа по мулилитру наливать три с половиной литра бензак то еще мероприятие калибровкиведуца разработки совмещеннаи с др проектами...но как обычно на бумаге то оно заебись а вот на практике таже стенка цилиндра хоть и из стекла ...проект не завершон много говарить не буду.карочиодин советвезде где есть возможность считайте все в ручнуюда да на маленьких машинах это не такуж и сложноугу не сложно я эти 37к считал помоему все лето..а других вариантов ну просто нетканечно можно пользоваться функциямибиблиотеками и прочей так любимой стмщиками залупамино говарю сразу все это платно и глючит да ГЛЮЧИТ- не верите?гуглим как тормазнули штрихи все маниты в рфии под новый годкакраз там переходили...че говарить не одни они понадеялись на функции и библиотекимногие если не все заводы обосрались ...это шаз они в курсеа тогда камуто на граблях прыгать приходилосьи кстати досих пор не все научилиськанечно с приходом атмеги и почих стм контроллеры шагнули и притом порядочно так одна андурина чего стоит - если раньше мне чтобы мигать ногой контроллера необходимо было иметь погромматор стоящий под 20-30кр, высшее образование чистого программера, понимание всей этой ебучей структуры, читание даташитов и прочих особеностей ядра то сейчас любой школьниг может дергать ногой контроллераа у меня в свое время при наличии оборудования и знаний ушло если недаст бог спиздеть чтото около полу года чтобы начать мигать...канечно никто не отменяет загадку шизика про обычную шариковую мышкуно блядж байтоебство это уже сравни шаманствуи я даже за12(ДВЕНАДЦАТЬ) лет все в сраном 8 битном камне все не знаю, не говоря уже о переходных 16 битных и современных 32битных стмахда умоом то я понимаю что все то оно в принципе тоже самоено нет предела совершенству и каждый раз агда смотриш на прерывание есть желание прогнать его в 100500раз и сократить ну хоть сцука на пол операции на четвертиночку хотябы на осьмушку...https://youtu.be/98LyQvwV1y4
>>1438548>>1438572не в ДСах тоже может если образование соответсвующие - кандидатская есть, идешь на пол ставки туда на пол ставки сюда, и полявляешься по 2-3 часа в неделю. А получаешь как за полные ставки)
>>1438597> но сразу CodeView (PDB) он тебе не сделаетединственный минус с другими :(>>1438614еще на рутрекере есть бэкап в CHM https://rutracker.org/forum/viewtopic.php?t=407571
>>1438604>и тут я начал знатно обсераца - осозновая что оказываеца полуволна это синусоидатое .....>карочи я пришел сюда с этой проблемой и гдето неделю >формулировал анону задачу>он мне дал решениеблэт. еще один сказочни пропустил школьную математику.
>>1438604>а у меня в свое время при наличии оборудования и знаний ушло если недаст бог спиздеть чтото около полу года чтобы начать мигать...еба, ты чо тут чешешь, птушник что ле?>так одна андурина чего стоит - если раньше мне чтобы мигать ногой контроллера необходимо было иметь погромматор стоящий под 20-30кр, высшее образование чистого программера, понимание всей этой ебучей структуры, читание даташитов и прочих особеностей ядра еще и ардуины восхваляет %) хоспади. более кривущего и монструозного SDK я пожалуй не видел. атмеги хорошо, ардуина детсадовское поделие из говна и палок.>и я даже за12(ДВЕНАДЦАТЬ) лет все в сраном 8 битном камне все не знаю, не говоря уже о переходных 16 битных и современных 32битных стмахэто всего лишь твои 12 лет которые ты нахуй проебал вместо того чтоб что то изучать. методом тыка и изобретением велосипедов занимался
Вы чё уебки? Да благодаря ардуино даже самый отсталый птушный электрик без опыта проги может закодить игровой автомат и каждого пиздюка в округе на десятку наебать. У меня все. рты ваши ебал, дети, выросшие на журнале хакер
Подкиньте, где есть подробное описание флагов секций pe-файла и какие они могут принимать значения (или в теории там можно выставить любые комбинации, и файл останется валидным?)
>>1438913У исполняемого файла есть секции, у секций есть набор характеристик - по-моему, dword. Где можно прочитать подробно про значения, которые туда могут устанавливаться?
>>1438958Очень смешно, какой-то уебок нажрался и врубил вот эту в стиле "пойми, мальчик".А ты ведь очень тупой и тебя не накрыли хуями только потому что через твою орфографию лень продираться.
>>1438618> единственный минус с другими :(Запили, все только рады будут.>>1438935https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
>>1438958перудн пездуй отсюдава, тема не про асм и кодинг, а про реверс. ты на старости лет ошибся малость
>>1439081за столько лет, никаких подвижек, ничего не изменилось, значит никому не нужно это) и ты предлагаешь ему запилить?)))опенсорс такой опенсорс.
>>1438904>себя вспомни ептасебя и вспоминаю. сел почитал повторил. как конструктор же. у ардуины плюс что прям по USB Шьешь и всё, но такое сейчас и в нормальных stm-ках есть которые на развес, да и атмеги такие имеются.Ардуина изначально неверное понятие у ребенка складывает о теме программирования железок в принципе.
>>1439085Ему нужно, видимо. Я вот не пилю, потому что не понимаю, что может добавить отладочная инфа в изначально ассемблерный код, который тобой же и написан. А вообще, решения разной степени костыльности уже запилили, просто прямой генерации .pdb нет.
>>1439222>моче похуйПричём здесь моча, даун? Тред я перекатываю, я тут не живу. Вы тут срёте со скоростью 1024 поста в секунду, и ещё чему-то удивляетесь.
Ну в общемТрипл-перекат>>1439555 (OP)>>1439555 (OP)>>1439555 (OP)>>1439555 (OP)>>1439555 (OP)Трипл-перекат>>1439555 (OP)>>1439555 (OP)>>1439555 (OP)>>1439555 (OP)>>1439555 (OP)Если бы моча убрала сраную рекапчу, запостил бы быстрее. Иногда думаю, что перерубание нахуй всего зарубежного интернета пойдёт рунету на пользу - хоть рекапчи не будет!!!