Это копия, сохраненная 13 августа 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Книги по 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-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:
Дизассемблеры:
0) IDA Pro 7.2 когда подберут пароль к архиву
1) IDA Pro 7.0.torrent (x64 only, для XP нужно патчить PE + вылеты)
2) IDA Pro 6.8.torrent
3) 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=407571
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
disassembler.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/
Вообще "профессиональные реверсеры" этим пользуются ли? Читал, что он иногда некорректно работает.
Потому что не хотят садится на бутылку.
Пользуются конечно, глупый вопрос. Каким надо быть мазохистом чтобы в статике простыни ассемблерного листинга рассматривать?
№8 https://arhivach.ng/thread/455487/
> Ghidra для любителей анальных зондов
Нет там никаких зондов, бесплатная и вполне применима для чего-то серьезного (в отличие от радара).
>>06222
> hex-rays до сих пор не отреверсил
Потому что он говно. Меньшее говно, чем другие, но все же никому не хочется в этом копаться. Он, как и вся IDA, состоит из хаков. Проще с нуля написать (нет).
> пользуются ли
Да. Ты экономишь много раз по много часов ценой того, что однажды он тебя обязательно наебет.
>>06259
> Каким надо быть мазохистом чтобы в статике простыни ассемблерного листинга рассматривать?
Жили и до иксрэйсов, и неплохо жили. И сейчас есть куча архитектур, где никаких иксрэйсов нет и никогда не будет, а реверсить как-то нужно.
> когда она открывала порт наружу для отладки
Как будто это единственное в мире приложение на Java, в котором используются отладочные возможности Java. Как будто тебя на машине нет файрвола, а между тобой и интернетом нет роутера. Может быть, и ида, которая ищет своих друзей в твоей локалке, тоже тебя смущает?
бамп, за 24 часа тогда хотя бы
Куда ведут*
Любой антивирь орать начнет даже без эвристики.
>Ghidra для любителей анальных зондов от АНБ
Это вы про дебаг гидры? Порт же закрыть можно. А в новых версиях дебаг по дефолту выключен. В версиях 9.0.2 и 9.0.4 точно.
C каких пор реверсеры боятся зондов?
> про макрос data import
data - не макрос, а директива, она пишет начало и размер блока 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
>ну и начать в любом случае нужно с
>https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format
Я знаю. Сейчас я собираю свой минимальный PE-имидж по байтам и параллельно пишу лоадер для него. Но в FASM оказалось много неизвестного для меня.
Здесь есть удобный аналог assume edi:IMAGE_DOS_HEADER? Или как его накостылировать?
Нет, макрос assume как бы есть, но работает хуево. Можно еще virtual at edi
dosheader IMAGE_DOS_HEADER
end virtual, но оно глобально и неотменяемо. В целом в фасме принято делать явно mov eax,[edi+IMAGE_DOS_HEADER.e_lfanew]. Больше писанины, зато все сразу понятно.
16 бит всё. А 32 ещё работают.
Хотя в век современных электронов 2 (4) ГБ н"серьёзному" приложению (например пасьянс) не хватает, так что можно смело переходить на 64 бита.
АЛСО, для асма не актуально.
nasm/fasm/gas
1) Правильно ли меня поняли насчёт кроссплатформенности?
2) Какой конкретно диалект АСМа выбрать?
В общем я тут почитал и пришёл к выводу, что GAS не нужен.
И выбирать стоит между NASMом и FASMом.
Первый устарел и больше кода писать, но не знаю, как у второго с кроссплатформенностью.
Так, пришёл к выводу, что надо брать FASM, потому что он новее.
Но не знаю, как у него с производительностью относительно NASMа, видимо, хуёвей.
Короче, если хочется что-то универсальное, тогда придётся брать фреймворки OpenCL, OpenGL итп. Естественно, это всё высокоуровневая хренотень.
Почему до сих пор не создали хотя бы мало мальски универсальный Ассемблер для GPU?
Даже то, что каждый тянет одеяло в свою сторону, каждый строит свой рынок не должно было сильно помешать подобному проекту.
Видимо, всем просто по хуй.
А посему и смысла использовать ЦП-Ассемблеры нет в игрушках, как и в sci и Big Data. Всё равно эти фреймворки срежут производительность до своего уровня.
Лучше всё хуярить на C/C++.
А Ассемблер только для ОС и драйверов, ещё встраиваемые.
Вот и всё.
Ты прав, АСМ в общем смысле давно мёртв.
>Лучше всё хуярить на C/C++.
Нет, лучше хуярить на питоне/ноде, а критические участки на C/C++
Жирдяй, Питон до 100 раз медленней С, а местами всё ещё хуёвей. Node/JS пошустрее (в 2-3 раза), но всё равно говно.
Даже скорость Java говно, а она самая оптимизированная из всех высокоуровневых; в её оптимизацию больше денег вгрохано, чем в Питон и Раби целиком.
Говорят, её скорость приближается к С и C++ (в 2-3 раза медленней всего). На деле фуфло это всё. Она в 10 и более раз медленней С по тестам итд.
А медленней Питона из мейнстримных ЯП нет вообще.
Блд, сказали же, Питон - самый медленный, миллион тестов в сети есть и самых разных.
Питон 4х версий будет уже просто сосать, он станет неприменим для серьёзных проектов. Будут в учебных целях его дрочить, как когда-то ТурбоПаскаль дрочили, чисто, чтобы научиться программировать на базовом уровне, понять основные принципы итд.
А большинство проектов перекатится на Нод/ЖС. Особенно всё, что веб. Питон к 5й версии в вебе и вовсе сдохнет. (Раби ещё подержится.)
К 6й станет устаревшим языком, который только в школках и будут проходить вместо Бейсика и Паскаля, но основное внимание будет уделяться JS.
Потом Питон выкинут и из школ.
К 7й версии Питон станет историей.
Так что я советую вам с этого питоноговна уже сегодня слезть. Учите нормальные ЯП, C++ тот же, или хотя бы ненормальные, но востребованные вроде JS.
И что gcc ошибки не ебашит так никогда?
пизда, вали из нашего треда обратно в общий, так и знал, что это ты тут трольнул, продолжая гнуть свою глупую линию, дохуя перегоняльщиков кода, они тебе только уникальную специфику проца не смогут сделать, а стандартный код сделают.
Ты только не плачь, у меня аллергия на детские слезы.
Не хочу не буду.
Ну короче, зачем две скобочки?
mov [BX][SI], AL
Почему нельзя просто [BX]?
>mov [BX][SI], AL
То же самое что и MOV [BX+SI], AL
Базовая индексная адресация.
BX - база
SI - индекс
> Ну короче, зачем
Основная причина - попытка приблизить синтаксис к индексации массивов в сишке.
> печему не взлетел IA64
Очень сложные компиляторы или отсутствие преимуществ, если компилятор хуевый.
> Какие, вообще, есть перспективы у новых наборов инструкций?
Рано или поздно мы к VLIW придем (вернемся).
Сижу на бутылке шампанского, на риске сидят ваши мамки.
ОП, я не понял. Почему в шапке нет книги Рендала Хайда? Какой, нафиг, Зубков? Лучший асм-учебник на русском - Юрова. Не лишним будет упомянуть Интел-талмуды. Где книги Агнера Фога? Можно ещё опус магнум по оптимизации Майкла Абраша привести (хоть и устарело).
Ссылки давай, добавлю. А то болтать все горазды, а гидру и ту пришлось гуглить.
Так может подскажешь апи?
Добавить в начало SEH
Вот накидал. Сам выбери, что больше подходит.
http://booksdescr.org/item/index.php?md5=9C0F88DC623FCE96A4F5B901ADCE95D3
http://booksdescr.org/item/index.php?md5=73957AEFEADCB7F0C112DCAED165FEB6
https://software.intel.com/en-us/articles/intel-sdm
https://www.agner.org/optimize/
http://booksdescr.org/item/index.php?md5=4AA9BC0EB46F82759D5A88876072B52C
http://booksdescr.org/item/index.php?md5=5D0F6DBC1410E10BC489167AFE8192DF
Не заметил.
Вот ещё Абраш http://booksdescr.org/item/index.php?md5=ED318BFDC1D842E73E6615CE41F9417D
Может быть ещё что-нибудь добавлю, если вспомню.
К сожалению, в фасме макросы не могут возвращать значения. Можешь сделать так:
macro round n, r { rounded = (((n+(r-1))/r)*r) }
round 12,5
; и используешь:
mov eax,rounded
А как написать макрос, который бы получал value и align, но генерировал в результате директиву dd aligned_val?
То есть, чтобы можно было написать _align(filesize, 512), и получить код типа dd 512?
Только что проверил макрос. У меня filesize equ $ - $$ определено в конце исходника и компилятор ругается на то, что filesize не определена.
Может ещё добавите несколько полезных ссылок?
http://www.cs.cmu.edu/~ralf/files.html
http://www.sandpile.org/
https://en.wikipedia.org/wiki/X86_instruction_listings
https://www.felixcloutier.com/x86/index.html
http://ref.x86asm.net/index.html
https://pnx.tf/files/x86_opcode_structure_and_instruction_overview.png
http://www.jegerlehner.ch/intel/
> У меня filesize equ $ - $$ определено в конце исходника
Ты хотел сделать filesize = $ - $$. = обрабатывается на стадии ассемблирования, оно создает или изменяет настоящую переменную (ассемблера, а не генерируемой программы естественно), фасм умеет в forward references (ценой дополнительного прохода ассемблирования). А вот equ работает в препроцессоре, ничего про переменные не знает, это просто текстовая замена, работающая от equ и до конца файла (или до отмены equ c помощью restore). Даже если предположить, что твой equ сработал бы, как ты хотел, то $ в месте использования отличался бы от $ в месте, где ты создал equ.
Пишешь на си, вставляешь в godbolt и смотришь код. Книга же beginners.re.
Что-то как-то стремно решается моя надуманная задача на фасме. Возьму, пожалуй, NASM. Я собираю минимальный PE-имидж по байтам и параллельно пишу лоадер. Хочу сделать имидж меньше 200 байт.
Я собираю 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 та же самая проблема с макросами.
Я собираю 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 та же самая проблема с макросами.
Что-то в фасме сложно делаются простые вещи. Мне нужно в файловом заголовке сохранить значение SizeOfOptionalHeader. Я делаю это так:
dw opthdrsize ; SizeOfOptionalHeader (including data directories)
Сразу после опционального заголовка, непосредственно после дата директорий я делаю объявление:
opthdrsize equ $ - opthdr
И фасм при формировании File Header не видит переменную opthdrsize, потому что она определена дальше. Как это исправить?
equ - текстовая замена. Для определения означиваемых переменных исползуй =
Что он должен делать? Загужать исполняемые образы для исполнения? Вместо системного загрузчика?
>Загужать исполняемые образы для исполнения? Вместо системного загрузчика?
Да. Еще хочу добавить к нему защиту от динамического анализа.
Что сейчас актуально? Видел детект VM Ware по GDT, защиту от рантайм анализа при помощи сообщений из других потоков, коды возврата недокументированных апи. Все это, вроде, устарело. Но кода я только начал этим заниматься, детект движения курсора лучше всего останавливал динамическую проверку.
Как работают эмуляторы? Они передают управление на точку входа и анализируют поведение программы, или действуют более тщательно, дизассемблируют каждую процедуру и трассируют ее? В последнем случае, наверное, можно было бы навставлять в процедуры ret и перепрыгивать их при выполнении. Это должно запутать дизассемблер, если он дизассемблирует от начала функции до ret. Но это, наверное, слишком наивный способ обойти дизассемблирование.
Я еще не могу для себя точно объяснить разницу между отладкой и трассировкой. Там, где я работал, слово трассировка вообще не употребляли. А в лоу лвл кодинге оно используется часто. Я нагуглил тред о различии отладки и трассировки, и там говорится, что отладка - это пошаговое выполнение, а трассировка это пакетный анализ поведения программы: запускаешь программу и смотришь журнал выполнения, по которому определяешь место проблемы, после чего начинаешь в этом месте отладку. То есть и принтф, и логи в консоль, и журнал в файле, и MessageBox'ы с ошибками можно назвать трассировкой. Я прав?
> Что-то как-то стремно решается моя надуманная задача на фасме
На насме будет еще хуже, фасм в плане ебли байтов гораздо мощнее.
>>10666
> я хочу записать туда размер дискового образа, выровненный на section alignment
Ну я же тебе написал, как сделать.
dd (SizeOfImage + sectalign - 1) and not (sectalign - 1)
...
; В конце файла:
SizeOfImage = $ - $$ ; тут возможны варианты, в зависимости от того, хочешь ли ты ебаться в org в секциях.
Что сложного-то?
Конечно. Правда ссылка на вики это моветон, если реверсер её не найдёт, то он и в ИДЕ не разберётся, и компутер не включит.
>>10580
Зарегистрировать компанию, только им и выдают. Можно попросится подписать у пары компаний, которые подписывают дрова с открытым кодом, но там, ВНЕЗАПНО, нужен открытый исходный кот, твои затрояненные бинари отошлют тебе обратно.
>>10632
>а то в шапке дохуя написано
Я тебя разочарую, но в книгах по асму написано ещё больше, чем в шапке. Если ты шапку ниосилил, то и асми не осилишь.
Почему малварь-то сразу? Те кто создают малварь подобного уровня, спонсируются и достать такой серт им не составит труда. А мне Васяну где и как его взять? Я может хочу свой антивирус бабушкина с блэкджэком и куртизанками запилить. Но думаю начать с мини-тулз, типа sysinternals. Есть конечно вариант опенсурса, гит прокачаю, портфолио так сказать, но думаю шанс, что меня кто-то заметит и озолотит мизерный..
Что для gcc значит contstraint "c" в записи
asm volatile("clflush 0(%0)\n"
:
: "c"(addr)
: "rax");
не могу найти описание именно для "с"
ты поехавший?
И чем GNU as не устроил?
Michael Abrash's Graphics Programming Black Book Special Edition
http://www.phatcode.net/res/224/files/html/index.html
вот есть у меня программа, которой нужно прочесть N байт по адресу 0xAAAABBBB. процессор может закешировать эти данные, и они будут от L1 до L3. вот процессор начинает выполнять команду типа
add %(0xAAAABBBB), %eax,
он такой возьмёт VA, получит с него PhA, с PhA хеш получит какой нибудь 0xABCD, но! как он знает, что сейчас в кеше для данного адреса под индексом 0xABCD лежит чанк именно для текущего процесса и именно для нужного VA, а не из какого нибудь другого процесса, что выполнялся до последнего прерывания, и если одному блоку данных в кеше могут соответствовать несколько физических адресов, в которых могут находиться данные того же самого процесса?
Смотрел недавно лекцию на данную тему, но проебал ссылку. Короче все сводится к тому, что... нихуя толком не говорится как это работает, ПРОСТО работает и все.
> именно для текущего процесса
Какие процессы, если речь идет о физических адресах? Вот в TLB есть всякие PCID/ASID.
> если одному блоку данных в кеше могут соответствовать несколько физических адресов
Рядом с данными хранится индекс кэшлайна.
Очень доступное изложение информации. Нортона не читал. Твои какие предложения?
Почему ты еще не сделал свою малварь на два миллиарда баксов?
тому что я не очень умный
Спалятся потом где-нибудь, как malware-tech и сядут на бутылку. Даже если не спалятся, то за такие бабки их фбр где угодно найдут.
Вы мне лучше скажите, как сломать F5 в иде, дабы подпортить жизнь школоте? Видел много раз в комерческом софте такие функции. Это из серии виртуализации?
Стандартные антидизасмы на иде работают.
Заспагеть там все, джампай в середину инструкции, или, как выше сказали, стек ломай.
>джампай в середину инструкции
Как это на деле реализуется? Вот джампну я на байт ModRM или SIB. Что дальше делать, чтобы процессора не выдал исключение?
>А есть какие-нибудь базы с исходниками демок?
http://www.pouet.net/search.php?what=source&type=prod
Ксорить то хоть умеете?
Никогда. Заведомо играем с нулевой суммой. Вся суть байтоёбли.
> Что значит сломать стек?
Разбалансировать. Например, чтобы в одной из веток был ret при оставшихся в стеке локальных переменных. Или вызов функции, которая за собой подчищает стека больше, чем ей передали параметров. Реально передавать управление в эти ветки вовсе не обязательно, лишь бы они были. HexRays очень чувствителен к такому, но исправляется оно элементарно, поэтому помогает только от школоты.
Разобрался. Теперь следующий вопрос: как убрать инлайн хук в рантайме? На диске нет данных, предварительных данных тоже нет.
Потыкал всякие антируткиты, они каким-то магическим образом имеют предыдущие байтики и спокойно убирают хук.
не знаю, насколько это реально и вообще полезно в боевых условиях, но я как то раз в образовательных целях на элементарной х86 программе в хэдерах пидорасил ОЕР, заведомо указывая его в ебеня, а потом в TLS коллбэке опционально восстанавливал, прибавляя захардкоженную дельту к одному месту в памяти. не помню точно как это работало, но то ли на +-0х1000 байт от EBP то ли еще где неподалеку лежал не то VA с уже прибавленной дельтой релоков, не то RVA OEP, куда должно выполнение перейти после TLS. ну и в итоге ОЕР восстанавливалась, а ида смотрела на неправильный ОЕР со всеми вытекающими.
Причём тут хохлы?
раньше давали триалы всем подряд,а теперь не выходит(вроде как только фирмам типа ав и студентам(и то не всем)
если у кого-то есть,то буду очень благодарен если поможете
Можно пример программы с подпрограммой?
А то я в методичке смотрел, а там какая-то хуйня запутанная.
У меня такой вариант задачи, но это так ради понимания уровня задачи. Не нужно слишком сложное.
Разработать подпрограмму, которая разбивает заданную строку на две части: первое слово строки (до первого пробела) и оста-ток строки (пробелы после первого слова отбрасываются). Разработать программу, которая вводит с клавиатуры строку и выводит каждое слово с новой строки.
Сложна, сложна, нипанятна.
Я хочу вкатиться взламывать разный софт и писать под него патчи/кейгены, но я полный ноль.
Мне посоветовали:
а) Сначала подучить лёгкий язык вроде питона и обмазаться курсами по CS, а потом уже начинать медленно бросать взгляд в сторону ASM
б) Сразу учить Ассемблер, стоически переносить сложности, попутно читая те же курсы по CS и в целом про особенности различного железа
На какой стул себя посадить, а на какой не стоит? Важно ваше мнение, анончики.
Идея хуйня. Современный CS это такая хуйня для неосиляторов и мочеглотов, способных только языком чесать. Язык какой-то учить? Ну разве что всякие кресты/си, на которых системы/АПИшки для железа написаны да шеллчики. Интересно сидеть инструкции дрочить? => Сиди дрочи насм дальше, и нахуя тебе этот пайтон сдался тогда? Советую тебе учебников по информатике закупить для 1-3 курсов для начала.
> нахуя тебе этот пайтон сдался тогда
Да без питона сейчас никуда. Анализ же. capstone, frida всякая, скрипты в IDA.
Есть куча других бесплатных ресурсов откуда можно скачать свежие сэмплы. Кто-то даже вт зеркалит.
например?на стандартных типа апп ани ран и вируссигн ничего нету
>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
Наверное хватит переждать, пока господин Юричев починит свою хитрую систему сбора адресов.
Считаю что нужно сразу самые лучшие и мощные инструменты изучать, крупную рыбу олей не подебажишь. Для старта x64dbg подойдет, ты прав.
Раз скрины из ядрер ОС, то следует и добавить блоги/гайды/любой другой ресерч по осям.
Когда я в первые хотел этим заняться, помню, что пришлось поебать себе мозги тем, какие библиотеки скачать. Я нагуглил статьи для ньюфагов и пошел на сайт МС за либами, а там оказалось, что того пакета либ уже не существует и надо качать что-то другое.
WDK установи и все. Create new project -> Windows Drivers -> и тут выбираешь что тебе нужно. Начать наверное лучше будет с легаси либо wdf драйверов. Спрашивай если будут вопросы.
ты че отсидел уже?
Ой, ну это уже думать надо. 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 книжку, читаю потихоньку
>Начать наверное лучше будет с легаси либо wdf драйверов.
Это какой тип проектов в VS Studio 2019 Preview?
>Modern X86 Assembly Language Programming...
http://booksdescr.org/item/index.php?md5=3DFB070C1742F50B500F07A63A30C86A
Это второе издание, посвещённое x86-64, AVX, AVX2, AVX-512. Оно не заменяет первое (x86-32, x87, MMX, SSE, а также x86-64 и AVX). Оно частично с ним пересекается. Но в основном его дополняет. Поэтому, нужны оба.
http://booksdescr.org/item/index.php?md5=A6F924CE6277FB3D4AFA71E35F538558
Поставил WDK, создал в студии проект типа KMDF Driver, начал писать код, но #include <ntddk.h> не может найти хедер. Где искать этот хедер и wdf.h?
Автор использует масм и советует скопировать библиотечные файлы из DDK в каталог \masm32\lib\w2k. Но у меня win10 и стоит WDF. Как использовать то, что у меня имеется, для изучения этих статей?
Там же где и все остальные инклуды.
C:\Program Files (x86)\Windows Kits\10\Include\
Подключать там же, в настройках проекта, принципиальных различий в использовании ide нет.
Неинтересно
Спасибо, анончик.
Мне что-то попадалось на тему полиморфизма в стеке. Может z0mbie что-то писал на эту тему.
Отдельный режим процессора, который включается при подергивании соответствующей ноги процессора, который в отдельной области памяти выполняет код, практически незаметно (не считая потраченного процессорного времени) и не спрашивая разрешения у гипервизоа и выше.
> Но куда ниже то?
Ну как это куда?! Отдельный чип, который рулит всей системой.
Если у ОС нет доступа к SMM, то выходит, попасть в него без физического контакта с машиной не выйдет?
Что ты имеешь ввиду под структурами дампов ОС? Читай книги по архитектуре интересующей тебя ОС. Структуры, функции, таблицы и прочее вычленяются с помощью отладочных символов и WinDbg.
То что на это способны наши органы, я сомневаюсь. Естественно сбросить и переустановить прошивку нужно на всякий случай. Более вероятно что тебя будут просто прослушивать. Меняй провайдера, шифрую трафик, сиди с вайфая соседа.
Определить все структуры, реализовать структуру контекста, в которую напихать все структуры (или наиболее значимые поля) и в процессе парсинга заполнять контекст, а во время отображения дискового образа на память пользоваться этим контекстом?
Wine Is Not Emulator
Но ведь виндовый загрузчик уже делает самое правильное, что можно сделать: мапит заголовки, валидирует заголовки, мапит секции, занимается инициализацей и динамическим связыванием. Зачем тебе контекст с отдельной копией заголовков, если тебе их все равно грузить?
>>16984
binfmt_pe.c написать несложно (и не один раз его уже реализовали), но вот окружение само по себе не появится.
> окружение
Среда, в которой выполняется код - все, что он видит вокруг себя. Системные вызовы, системные данные в памяти (тот же PEB), библиотеки, структура файловой системы. Все это предоставляет вайн. Можно было бы, как сделала Microsoft для WSL, эмулировать только системные вызовы, пользуясь родными библиотеками, но в винде слишком много всего прибито гвоздями к ядру.
>Можно было бы, как сделала Microsoft для WSL, эмулировать только системные вызовы, пользуясь родными библиотеками
Нельзя, проприетарная лицензия-с.
>но в винде слишком много всего прибито гвоздями к ядру.
На самом деле к драйверам. Win подсистема ютится в win32k.sys, и ядру NT она нафиг не нужна, оно может работать и без неё.
Только эмулировать ядро до степени работоспособности драйверов ещё сложнее, чем по внешним интерфейсам. Перед последней задачей даже МС спасовали, в новых версиях WSL они будут запускать едро люнупса в виртуалке.
> лицензия
Нельзя пользоваться либами, но это проблемы юзеров. Так часто при реверсинге игр делают: движок опенсорс, данные родные, и лицензию, даже если она что-то подобное запрещает, нарушает пользователь, а код ни в чем не виноват.
> оно может работать и без неё
Ну ты же понимаешь, что фактически это часть ядра, а все эти "может работать" равносильны заявлениям, что софт может работать без ОС (да, может, но такое пишут крайне редко).
> в новых версиях WSL они будут запускать едро люнупса в виртуалке
Ну вот, теперь в десяточке нет абсолютно ничего хорошего.
Пишу упаковщик с лоадером.
Но если не пихать заголовки в контекст, все равно ведь придется делать два прохода по заголовкам: первый раз, чтобы прочитать ImageBase, а второй раз - выделить память по этому адресу и развернуть там образ.
Алсо, как работает лоадер на сисколлах? https://github.com/luis140219/luismark-loader/blob/master/luisldr.asm
В чем плюсы, минусы? Как вообще загрузка образа сводится к вызову ZwCreateSection? Что делает эта функа?
>Нельзя пользоваться либами, но это проблемы юзеров.
В общем то да, и сейчас можно подсунуть вайну родные либы. Но видимо уровни программ разные, и что можно реверсеру с гитхаба с 3 звёздочками, то запрещено проекту с тысячей контрибуторов.
>Ну ты же понимаешь, что фактически это часть ядра
Не а. Оно, как драйвер, работает в адресном пространстве ядра, пользуется его сервисами, ядро пользуется сервисами этого драйвера, но неотъемлемой частью оно не является.
>Ну вот, теперь в десяточке нет абсолютно ничего хорошего
Ну не знаю. Как по уровню интеграции Wine в сравнении с WSL?
>>17129
Кеширование не мешает изменяемому коду, оно помогает неизменяемому, притом существенно.
Решение только одно - не использовать полиморфный код. Отключить кеширование можно для отдельных страниц, обладая правами админа, но будь готов к производительности уровня первых атомов.
>Решение только одно - не использовать полиморфный код.
Хотелось-бы наоборот. Есть ли необходимость для этого флагировать страницу как PAGE_NOCACHE? Это что-нибудь даст?
Веб мне не нравится, хотя для такого гуманитария как я он лучший выбор, но не хочу и все тут.
Для начала стоит хотя бы понять о чем говоришь. Веб это не только разметку рисовать и конфигами жонглировать. АСМ явно не твой выбор, ибо с текущим уровнем дискурса ты себе даже задачу не сможешь поставить.
Ничего не даст, дело не только в кэше, но еще и в конвейере. Изменение страницы, инструкции из которой уже выбраны и декодированы/декодируются = сброс конвейера. Постоянные сбросы конвейера = никакая производительность.
>>17221
> Не а. Оно, как драйвер, работает в адресном пространстве ядра
Это все понятно, но это все детали. Но мы ведь об эмуляции винды говорим? И если рассматривать картину с этой стороны, то win32k и другие дрова вполне можно считать частью ядра. Выбрось их, и это уже будет не винда.
>По моему лучшей альтернативе аутизма от мира cs - нет
Можно на FPGA создавать асики для пиликания.
Ты видимо вообще нюфаня, раз такие вопросы задаешь и не знаешь, как загрузчик винды работает. Куда собрался то свой писать?
Мы тут уже обсуждали защиту софта, лодеры и прочее, в итоге порешали, что все это херня и единственный рабочий метод - виртуализация кода.
Прямой вызов сисколов хорош тем, что тебя нельзя похукать можно на самом деле из юзермода, тк ты минуешь функцию-обертку и сразу переключаешь контекст в ядро. Из минусов - сложность реализации, зависимость от среды. Это если вкратце.
Про апи винды на msdn читай. Исходный код ReactOS в помощь.
>Ты видимо вообще нюфаня, раз такие вопросы задаешь и не знаешь, как загрузчик винды работает.
В статьях пишут про такой алгоритм:
1) Парсинг хедеров
2) Разбор таблицы секций
3) Проецирование
4) Обработка импорта
5) Рекурсивная загрузка длл
6) Переход на точку входа
А как он работает на самом деле? Знаю, что можно почитать сорцы вин 2000, но их надо снова выкачивать и копаться к них.
Ну еще редактирование PEB. Но моя задача проще. Я хочу просто запамить PE-файл и запустить его.
Похоже, что половина процесса загрузки вообще происходит с дисковым имиджем: https://wiki.osdev.org/PE
To 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!
возможно, тебе может помочь CLFLUSH m8
>Исходный код ReactOS в помощь.
Там полноценный загрузчик реализован, практически 1 в 1 как у винды. Ничего качать не надо, через браузер смотреть можно.
На худой конец открой ntdll и ntoskrnl в иде, загрузи .pdb символы и изучай.
>>17454
Куда замапить? Где запустить? В каком контексте? Какой PE-file? Ты недоговариваешь. Просто загрузить длл - LdrLoadDll. Ты эту функцию хочешь реализовать?
>Куда замапить?
В адресное пространство пакера.
>Где запустить?
В АП пакера.
>В каком контексте?
В контексте пакера
>Какой PE-file?
exe, dll
>Ты эту функцию хочешь реализовать?
Хочу реализовать красивую загрузку exe для начала. Раньше по статьям какого-то системного программиста я написал свой вариант лоадера, который не только мапит exe, но еще и рекурсивно загружает дллки и прописывает их в PEB, но сейчас я хочу написать простой лоадер для узкой задачи на фасме. И мне не хватает идей, как сделать это правильно.
В предыдущем своем лоадере я делал контекст, который содержал указатели на структуры типа PIMAGE_DOS_HEADER и накладывал их на результат MapViewOfFile, а потом копировал заголовки и секции в другое место (по адресу ImageBase). А если по адресу ImageBase же что-то было (например, например, сам лоадер), то вызывал там UnmapViewOfFile. Но чтобы такого не было, ImageBase лоадера я сделал ниже, чем ImageBase загружаемого файла.
Почему вообщн загрузка может сводиться к вызовам ZwCreateSection? Как это работает?
Правильный переносимый способ это использование документированных апи, а не копание во внутренних структурах. Есть шанс, что они их изменят, тогда твой лоадер придется переписывать.
>Почему вообщн загрузка может сводиться к вызовам ZwCreateSection? Как это работает?
Чтобы отобразить секцию, сначала нужно создать объект/получить дескриптор этого объекта секции.
MapViewOfFile читай как ZwMapViewOfSection.
Гуглишь на 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.
> C:\...\Microsoft_Visual_Studio\2019\Preview\VC\Tools\MSVC\14.22.27706\bin\Hostx64\x64\dumpbin
Проиграл. Все для людей. Вот в 2005 студии такой хуйни не было. На самом деле пердолиться в библиотеки импорта совершенно незачем, есть http://www.dependencywalker.com/
>>20434
> место, где находится
Зависит от того, что ты понимаешь под словом "место". Жмешь Enter на символе, в статусной строке видишь позицию в файле и виртуальный адрес. Скроллишь вверх, видишь имя длл (или ищешь во View->Imports в более удобном для восприятия виде).
Это чтобы (рекурсивно) просматривать импорт, если у тебя есть исполняемый файл. Я забыл, что все вы тут дофига реверсеры (свои программы не пишем - чужие ковыряем). А если нет файла? А если только исходник (да и тот не весь)?
А, я, в свою очередь, забыл, что в этих ваших десяточках теперь импорты исключительно через жопу. Вот это посмотри, например: https://github.com/lucasg/Dependencies
Вот за это спасибо, давно хотеть альтернативу dependencywalker, который не умеет в новомодные перенаправления.
Мимо ОП
Хочу вкатиться в разработку драйверов на Линукс
С чего начать? Сишкой и плюсами владею на достаточно высоком уровне, умею в структуры данных, знаю основы ОС
Есть топовая книга/курс для начинающих в этом деле?
Для переносимости (читай: чтобы добить нативный софт) и версионирования (как будто нам SxS мало было), теперь API логично сгруппированы по функциональности, а не по подсистемам и абстрагированы от этих самых подсистем. В общем, максимально нинужная фича, как и все остальные фичи восьмерочки и десяточки, которая просочилась обратно в 7 и даже в XP.
>чтобы добить нативный софт
Я так и подумал.
С одной стороны хорошая затея то, но реализуют ее как всегда майки, поэтому все через жопу и понятно только им самим.
Не понимаю, для кого они апдейты каждые несколько месяцев выкатывают. Дедлайнов никаких нет, конкуренты не жмут, закройтесь, сука, в подвалах на годик-два и запилите норм ОС... Но нет...
да нибамбит у меня
Теоретически производители встраиваемых систем могут собрать свои версии системных библиотек безо всякой хуиты. MinWin называется. Но всем как всегда похуй, и это лишь добавило ещё один нахуй не нужный слой абстракции.
>>21312
>Не понимаю, для кого они апдейты каждые несколько месяцев выкатывают.
Чтобы не обосраться как с вислой.
Нашел у Спорова, кто слил информации нет.
Я так понимаю сбрутили пароль для утекшей версии.
На меге содержимое потерли, но сам архив уже лежит на рутрекере.
https://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
>Не могу найти
Как же ты искал?
x86 там нет, но он и не нужен, разве что малварь разглядывать.
Не помог. Я конечно теперь понимаю, что такое VAD, MDL, но не более. В windbg потыкал, все равно остаются вопросы, как это все между собой связанно, а как на физическую память транслируется? Какой-то пиздец, физиком надо быть что-ли чтобы понять?
>а как на физическую память транслируется
Ну пиздец. Что ты творишь? Теперь и я думаю, что что-то не понимаю.
Спасибо
Кидали выше вроде. Хорошая книга, но практической информации мало. Весь код протух лет 5 назад.
Эти книги мне кажутся несравнимыми. С разных углов на ось смотрят. Это из-за того что винда более монолитна и там можна гораздо больше компонентов назвать стандартными и изучить. И в линуксе изучается только ядро и то не достаточно подробно. В 100 страниц едва можно вписать процедуру создания нового процесса в линуксе. Это заняло бы пол книги. И даже этого там нет. Книга про ядро, это не все внутренности линукса.
Вроде все функции вызываются, но не делают что нужно
>(Mac|i)OS Internals
Вот так неожиданность)
Блин, даже стыдно стало за свое гугл-фу, спасибо большое.
>>26523
ИМХО, просто эти две книги первыми приходят в голову, если возникает вопрос, что там у соответствующей ОСи под капотом.
Если ты подскажешь другие варианты, буду только благодарен за толковое чтиво по тематике.
>Если ты подскажешь другие варианты, буду только благодарен за толковое чтиво по тематике.
Я бы сам почитал аналог windows internals про линукс, но кажется его нет.
Двачую. Алсо, вангую в макось перспективно вкатываться в плане ресерча и поиска уязвимостей. У них же под откос все идет, сейчас пойдут сокращения в компании, дорогих разработчиков набреют и как всегда сэкономят на безопасности. Надо вкатываться, аноны.
Рад, что тебе удалось ознакомиться. Поделишься с нами?
Да хер его знает.
Мне не сложно, но я РЕ занимаюсь по большей части.
Книжек не читал, функциональные патчи (читай: не только кряки) публиковал.
Я хоббиист и практик — с меня мало толку в советах.
Жди унылых компенсирующих профессиональных кукаретиков теоретиков.
Из подводных камней состоит чуть более чем полностью. Ну и много времени надо не только на обучение и проектирование, но и на написание, ибо ничтожная атомарность.
Стандартный совет: потыкай палочкой и задайся, в первую очередь, вопросом, в кайф ли тебе всё это.
Жду гнева теоретиков.
всё ещё крокодил
Асм - самый простой язык, потому что процессор делает только то, что ты скажешь, только так, как ты скажешь, и ничего больше по крайней мере, все должно так выглядеть. Подводные в основном в том, что даже в пределах архитектуры есть зоопарк ассемблеров с частично несовместимым синтаксисом.
>>27499
> Из подводных камней состоит чуть более чем полностью
Примеры будут?
Мне нужно было выговориться
> Если не работает, то соси хуй, ибо сам мало что изменишь
> То ли дело всякие приближенные к железу
DRAM, например, с его роухаммером. Или те же процессоры, у который кроме распиаренных уязвимостей еще дохуя багов в errata. Тут ты хуй сосать не будешь, прикупишь себе фабрику и зделоешь правильно.
Не знаю. Но у меня на случай таких вопрос давно скачана и ещё не прочитана эта книга. Может тебе пригодится.
Забыл как формировать битмаски. http://ideone.com/UFArrz
Почему в op вместо 0x31 записывается 0x49? В чем я ошибся при формировании маски? В макрос я передаю 0b00110001, а получается 0b1001001
Mess_ins equ [bp+4] ;сообщение внутри рамки
Attr_ins equ [bp+2] ;атрибуты сообщения внутри рамки
Other equ [bp] ;иная конфигурация окна
Уверен что гуглиться элементарно, а ты даже не пробовал. Первое не ебу, а второе алгоритм поиска Ахо-Корасика
Ну кмп очевидно он про линейную оптимизацию поиска с помощью автоматов, которая вряд ли была реализована в простенькой программе на си. А 2 других слова не знаю.
Не хватает интенсивности.
Бамп.
А вообще тут есть аноны, разбирающие бинарные форматы?
Чем пользуютесь? Нашел synalize it(под винду то же самое называется hexinator) - hex редактор с возможностью полудекларативно писать грамматики и интерактивно с подсветочкой парсить файл и смотреть определенные блоки. Потом нашел то же самое только лучше - kaitai struct и их webide. Но в обоих случаях не могу(или не понял как) нормально отображать битовые области с флагами.
> А вообще тут есть аноны, разбирающие бинарные форматы?
Есть. Использую HxD и глаза, параллельно пишу парсеры на питоне или сишке. Считаю эти ваши кайтаи и 010 неюзабельным говном, в лучшем случае пригодным, чтобы .bmp распарсить, но не сложные форматы.
> Я один процесс сканировал секунду, а антивирус за эту же секунду всю память обошел
Ты можешь, например, пропускать регионы, которые не помечены, как исполняемые.
Я только rwx, wcx и читал.
Это еще ладно. Например не просто лежать и ворониных смотреть, а гулять с корешами и шутить так, чтобы задыхаться. А вот как интенсивно СЕМЬИТСЯ??? или ДОМИТЬСЯ?
mov и lea считаются?
На msdn.
И как мне быть уверенным, что тоь адрес который я нашел в exe верен. Вдруг я недоглядел
Ну а дальше только шерстить MSDN и блоги всякие.
Грубо говоря антивирус работает следующим образом:
Регистрирует мини-фильтры/каллбэки на определенные события.
Например при запуске процесса, их каллбэк срабатывает до точки входа приложения, следовательно они могут провести некоторые проверки и изолировать процесс. Тут больше винду надо исследовать, на то какие она возможности предоставляет для всего этого.
Вспомнило как умельцы из ESET написали NOD32, который невероятно быстро на тот момент делал нихуяшеньки.
Что за link.exe? Раз у него специфика такая, то никак, лол. Восстанови оригинальные байты, либо отобрази новую секцию в обход патчей.
MS Link.exe.
>Восстанови оригинальные байты, либо отобрази новую секцию в обход патчей.
Чего? Какие байты? Мне надо, чтобы он секцию не загаживал при пересборке.
Ок. Прочту. Я правильно понял, что эта функция не работает для стороннего процесса? Если так, то она мне не подходит
Читали? Согласны? Мое мнение, DTrace - просто имба. Теперь я точно все лето просижу за компом ковыряясь в винде.
Алсо, запись данной конференции есть у кого? Не могу найти.
Тогда CreateToolhelp32Snapshot или EnumProcessModules или NtQueryInformationProcess.
Какой принцип работы таких дизассемблеров? https://github.com/vxlabinfo/malware/blob/master/beetle2/beetle/ldasm.cpp
По какому принципу строится таблица? Где-то в ней размещается ОПкод, и по этому опкоду можно найти ModR/M или SIB что ли?
Опкод используется в качестве индекса в таблице, из таблицы читаются флаги для инструкции, указывающие, из чего она состоит (офсеты, модрм). Если опкод хочет модрм, читается модрм, если модрм предполагает SIB, читается SIB. С помощью всего этого вычисляется, сколько байт после опкода нужно пропустить. Всё, что приводит к раздуванию таблицы (префиксы, альтернативные таблицы) обрабатывается явно.
А как такая таблица строится и почему формула построена именно как 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) - какой-то мусор вместо адреса записывает.
В С-треде даже не знают о существовании memcpy.
БАМП
>memcpy(buffer, &function, 8)
Судя по документации, ты копируешь 8 первых байт самой функции (тела) вместо её адреса.
Делай проще. Как-нибудь так:
*bufer = &function;
Почти. Просто хакиры. У многих инструкций форматы совпадают, поэтому можно не хранить флаги для всех 0x100 + 0x100 (однобайтовых и двубайтовых) опкодов отдельно, а вместо этого положить совпадающие флаги один раз, и на них ссылаться. В таблице фактически сначала индексы лежат, а потом флаги. Но индексы тоже занимают место, и ты вроде бы наоборот должен проиграть. Но как ты верно заметил, у многих инструкций есть d/w биты, и если флаги для группы инструкций положить последовательно, то ты можешь адресовать одним индексом всю такую группу. Так и сделано: code / 4 убирает младшие два бита (нормальный челове написал бы code >> 2), получает индекс группы и прибавляет к нему офсет в группе (code & 3), по получившемуся индексу читает флаги. Можешь это дело распаковать и посмотреть: http://ideone.com/WeETG5
#include <stdint.h>
∗(uintptr_t ∗)buffer = (uintptr_t)function;
и ты не ломаешься, когда тебя с -m32 соберут. Правда, здорово?
Приду домой после настолочек - поковыряю. Как такую таблицу сгенерить скриптом? Сначала положить все опкоды (это первые 6 бит любой инструкции без префикса), а остальные клетки заполнить флагами?
А насколько актуально морфить код, изменяя бит d в инструкциях типа xor ax, ax с одинаковыми операндами? Таких инструкций в любом коде мало. Я думаю, такой морфинг немного бесполезен. В инструкциях вида op reg, mem и op reg, imm тоже можно поиграть с битами, но я с этим еще не разобрался.
>У многих инструкций форматы совпадают, поэтому можно не хранить флаги для всех 0x100 + 0x100 (однобайтовых и двубайтовых) опкодов отдельно, а вместо этого положить совпадающие флаги один раз, и на них ссылаться
Да, форматы совпадают, но инструкции mov ax, ax и add ax, bx кодируются по-разному. Как отобразить обе эти инструкции на одну ячейку с флагами?
> Как такую таблицу сгенерить скриптом?
Обновил код по ссылке. Берешь мануалы интела, том 2, appendix A с табличками. Записываешь для каждой из двух таблиц (однобайтовые и двухбайтовые опкоды) нужные флаги (можешь и трехбайтовые поддержать, если хочешь), получаешь список из 512 (768) элементов. Ну а дальше жмешь. Это простейший словарный метод фактически - если последовательность из 4 байтов с флагами есть в таблице - записываешь индекс, если нет - кладешь ее туда и записываешь индекс. Все эти разговоры про d/w-биты интересны лишь для того, чтобы понять, почему именно для 4 байт оно жмется лучше всего.
>>29137
> Как отобразить обе эти инструкции на одну ячейку с флагами?
Записать один и тот же индекс ячейки с флагами для обеих инструкций?
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, все.
По большей части (на реально существующих и распространенных платформах) - да. Вот если платформа требует выравнивания для чтения/записи указателей, а буфер не выровнен - может случиться что-нибудь нехорошее. Ну можешь сделать: uintptr_t funcadddr = func; memcpy(buffer, &funcaddr, sizeof(funcaddr)), если тебя это волнует.
Кто уже прочитал? Обсудим? Вам не кажется, что слишком мало посвящено современным технологиям? Сейчас нет смысла что-нибудь писать, что не работает в дэфолтной win10 x64 с uefi. И про обход проверки целостности в таких условиях там полторы страницы без описания PoC или разбора какой-нибудь малвари. Упомянули эксплоит в драйвере виртуалбокса всего в одном предложении, хотя эта тема заслуживает отдельной главы. При этом более древние техники с mbr на xp разобраны на 100 страниц.
Дочитал. Вот сижу https://www.youtube.com/watch?v=7p2uAgO9lBQ смотрю. Ну да, я тоже большего ожидал, на самом деле, каких-то практических знаний, а вышло по итогу, что я знаю что какие-то технологии / дыры там есть, но как их исследовать не знаю и остается только фантазировать. Короче углубляться надо самому.
На сколько я понял, удаленно уже ничего провернуть нельзя. Не зря за удаленное постоянство на уровне железа награда в 1-2 миллиона долларов у эпл и 1 лям у мс. Но атаки с физическим доступом более чем реальны. Погугли блог Dmytro Oleksiuk'a (Cr4sh).
>Cr4sh
Этого знаю. Речь не про удалёный jailbreak, а просто как установить драйвер в винду не имея подписи. Ну или не драйвер, а какой-нибудь другой буткит, но он должен работать на чём-то современном, а не пытаться лезть в мбр.
и зачем так жить то? если только работа да сон?
В таком случае не становятся ли актуальными полиморфные-метаморфные вирусы? Зачем ебаться с подписями, если можно жить в файлах?
>В таблице фактически сначала индексы лежат, а потом флаги. Но индексы тоже занимают место, и ты вроде бы наоборот должен проиграть. Но как ты верно заметил, у многих инструкций есть 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?
> а просто как установить драйвер в винду не имея подписи
На своем компьютере если, то просто отключаешь проверку подписи драйвера, включаешь режим отладки и грузишь драйвер. Также в биосе есть функции по отключению проверки подписи прошивки.
Удаленно установить прям именно драйвер никак нельзя. Можно разве что выполнить шеллкод в режиме ядра с помощью уязвимостей в компонентах ОС, либо через уязвимый легитимный драйвер но у тебя уже должны быть права админа. Буткит на тачке со всеми включенными функциями защиты то есть по дефолту ты никак не установишь. В теории конечно можно, но очень много где должны сойтись звезды.
И как ты себе это представляешь? При заражении файла сигнатура бьется, файл не считается легитимным. Также есть всякие ASLR, DEP, CFG и прочие механизмы, которые убили полиморфные вирусы уже очень давно.
>Также есть всякие ASLR
Как рандомизация базового адреса и защита стека убили вирусы, если вирус можно написать базонезависимым?
Я попытался тебе объяснить, почему именно группы по 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 и вычислишь неверную длину в результате.
Я попытался тебе объяснить, почему именно группы по 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 и вычислишь неверную длину в результате.
Можно вопрос. Где эти знания могут пригодиться вообще? Зачем писать дизасемблер самому, если есть десятки аналогов? Пердолинг ради пердолинга?
Это кажется, что есть аналоги, а как до дела дойдет - то нельзя, это не работает, это только через ебаный костыль, вся либа ебаный костыль, пошло оно все в пизду, учу 1С. На самом деле дизассемблеров длин не так много, а если искать одновременно поддерживающий все современные инструкции и чтобы размером в одну-две страницы на Си, то их вообще ноль, наверное.
Принцип сжатия я понял. Мне интересно, на какие группы разбиваются все инструкции на x86. Вот у mov eax, [00401000] есть ModR/M и 4-байтный адрес. А у push eax (0x50) больше нет никаких байт, кроме этого опкода. add eax, [00401000] похож на mov выше. А еще есть инструкции с 8-битными, 16-битными и 32-битными операндами. Есть инструкции без операндов. Я предполагаю, что количество групп, на которые можно разделить все инструкции, совпадает с количеством 4--байтных последовательностей флагов. Хочу понять, что это за группы и сколько их.
> на какие группы разбиваются все инструкции на 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), там инструкции хоть и сгруппированы по применению, их структура наглядно нарисована, можешь спарсить оттуда данные и погруппировать.
А можно инфы по поводу макоси и ее расправы над малварями?
> Такими темпами винда убьет всю малварь сама
Как это защитит от на коленке сделанного скрипта из десяти строк, который зашифрует Documents и попросит бетховенов?
> Одно слово - SRP.
Ну ты у себя настроишь. А кто будет пользователям объяснять, почему у них инсталлятор скачанной программы не запускается? А если запускается? А если в инсталляторе тот самый скрипт?
Пользователи не нужны.
Мириард вариантов.
Обработчик ошибок в обработчике ошибок.
– Вот как мне, интересно, файлы получше заражать, – размышлял Винни. – Если я положу в начале программы RET, а стек заставлю смотреть на адрес возврата…
– Кого заставишь смотреть? – испугался Пятачок, которому померещилось чего-то страшное.
– Стек, – сказал Винни Пух.
– Ага, – сказал Пятачок понимающе и отодвинулся от монитора подальше.
– Вот… Заставлю его смотреть на адрес возврата, то Пчелы, наверное, подумают, что это просто какая-то ошибочка и ничего не заметят. А если я поставлю вначале переход на вирус, как вызов процедуры, то Пчелы, наверное, подумают, что это маленькая подпрограммка и тоже ничего не заметят. По-моему так.
– Ага! – поддакнул Пятачок.
– Ну, чего будем ставить? – спросил Винни.
– Я? А… Его… Знаешь, Винни, – сказал Пятачок решительно. – Если там кто-то на кого-то будет смотреть, то это очень страшно. Давай лучше ма-а-аленькую парт… порт… прод-программочку, все равно Пчелы ни чего не заметят.
– Устами поросенка глаголет Истина, – сказал Пух важно, решительно опуская лапы на клавиатуру, и Пятачок заметно покраснел и стал выводить левым задним копытцем неопределенные круги.
Как это сделать в hiew, чтобы не затирать байты, а добавить новые? В меню edit->asm только затирание
Спасибо
Ты хочешь в середину сегмента кода новые байты вставить? Тогда у тебя после них все ссылки поедут и ничего не будет работать.
Ок. Завтра напишу. Если не постесняюсь.
Обсудим теперь эту книгу? Помню алиса в твитере так пафосно прокомментировала книгу. "не буду утверждать, что всё написанное про меня правда". А оказалось, что про неё там 2 абзаца скопипащенных с форбса. И странно, что не упоминали диму краша из-за которого как раз и попала под санкции алиса. Хотя сама виновата, что понабрала школьников с античата в компанию. В gib например всех на полиграфе проверяют и каким бы талантливым он не был его бы туда не взяли.
там и платят мало. идти стоит или студентом, а потом валить или директором, а потом оставиться
Да, хочу, например, пропатчить адрес возврата и записать что-то типа mov dword ptr[esp+1], 401000h.
Что надо делать, чтобы все ссылки не поехали? Есть инструменты, которые автоматизируют такой патчинг?
Системный администратор, любимый журнал Криса
Как виннипух тебе написал. Вместо call MessageBoxA делаешь call куда-то в пустое место программы, а там делаешь что нужно. Пчелы подумают, что это маленькая подпрограммка и ничего не заметят.
Понял. У меня как-то не так встали адреса. В hiew я выбираю edit->Asm и ввожу push 0401000. Это адрес подпрограммки, которая выводит окно. Но в OllyDbg видно, что обращение происходит вообще не туда. Видимо, я не умею правильно записывать адреса в hiew. Как это делать?
Потом я хотел переместить вывод окна в пустую область нулей, но команда call MessageBoxA не ассемблировалась. Как ассемблировать вызовы импортов?
> Но в OllyDbg видно, что обращение происходит вообще не туда
У exe-шника случайно релоков нет?
> hiew
Но зачем пердолиться в это говно мамонта, если ты можешь ассемблировать прямо в ольке?
Ясен пень, тян априори в лоу левел въехать не могут. Есть книга то в нормальном .pdf формате? А то скачал выше по ссылке, там фотками все.
Можно скрин треда?Я просто хз вообще как на факаве регу пройти тк у меня из профилей на форумах только пустой профиль на экспе
Вроде, это https://fuckav.ru/showthread.php?t=32169
Суть такова. Там внезапно появилась тян, которая стала активно тусить на форуме и влезать в каждый тред, чтобы показать свою компетентность. Предлагала безвозмездную помощь. Тем не менее, все обращались к "ней" в мужском роде. Потом она там начала барыжить и ее поймали на барыжничестве чьим-то криптором.
Ну ту телку считали Алисой. Еще там в чате говорили, что Алиса раньше сидела на их форуме.
Какая-то ересь полная. Заказчик там сам мягко говоря с программированием мало знаком, исполнитель - тоже. Я что-то передумал даже книгу читать, если там о таких товарищах пишется. Или годная все таки?
>Я что-то передумал даже книгу читать, если там о таких товарищах пишется.
Это и есть настоящие хакеры. Люди, которые хуево знают программирование, но любят залезать в анусы операционных систем, чтобы поиметь с этого деньги. Такие товарищи носят в своих вирусах bat-файлы. А в книге еще рассказывается про барыгу оружием.
Да уж. Из всей этой тусовки только персонаж Indy вызывает доверие. Олдфаг со стажем, помогает бесплатно, ресерчит даже что-то успешно. На забугорных форумах видел упоминания о нем и похвалы. Жалко конечно что у него своего блога нет, приходится в интернетах сообщения выискивать.
Короче нафик этот хакинг, тот еще пердолинг, либо чернухой заниматься и вот такие кадры будут тебе написывать, либо в какую-нибудь Лахту-2 устраиваться, где тебя на полиграфах будут насиловать.
Тут по-моему единственный адекватный выбор - это идти малварь реверсить к какую-нибудь тир2-3 ав кантору.
Давай решим сначала, что такое хакинг. По ссылкам выше ребячество. Пару сотен строк кода с использованием документированного апи. Это хакинг разве? Такое даже в джава треде осилят.
Ты чего так загорелся-то? Я тебя задел что-ли? Ну если хочешь, давай проверим чье кунг-фу сильнее. Придумывай задание.
>Ясен пень, тян априори в лоу левел въехать не могут
Боюсь мне придется хуй тебе по рылу размазать.
ничего личного, Северодвинск рулит
>Придумывай задание.
Реализуй аналог WinApi функции LoadLibrary, получающей указатель на буфер в памяти с содержимым DLL-ки вместо имени файла.
Я хочу заюзать прерывания биос, но тогда, наверное, придется работать в реальном режиме. Прерывания ведь недоступны из ПМ?
Как еще можно решить задачу?
> Как еще можно решить задачу?
Никак. Защищенный режим на то и защищенный, чтобы не давать тебе доступ к железу в обход дров (мы же про ОС говорим, а не про код, который сам в защищенный режим переключается?). Алсо, вот как раз в реальном режиме ты можешь обойтись и без прерываний, выводя напрямую в видеопамять.
А блять хуйню спизданул. Забудьте
Издеваешься? Исходники на васме еще с 2000 года висят, куча современных аналогов на гитхабе. Реализаций отображения буфера в целевой процесс может быть несколько, также как и вызова мейн функции. Давай корректное задание с описанными деталями реализации и не то которое придется весь день писать.
https://github.com/Zer0Mem0ry/ManualMap/blob/master/ManualInjector/ManualInjector.cpp
Вот например. Самая обычная реализация с использованием высокоуровневого документированного апи. Выделяешь виртуальную память в целевом процессе, записываешь туда буфер, правишь его согласно правилам pe-формата, вызываешь мейн функцию по средствам создания нового потока. Никаких хаков.
Сойдет, хотя код жопошный, конечно.
Хоть бы RAII-врапперы понаписал для базовых вещей, и макрос для доступа в структуру с проверкой валидности смещения.
> с использованием высокоуровневого документированного апи
Давай заценим:
1) Формат не проверяется совсем, вообще, никак. Скормив этой фукции сломанную длл или неподдерживаемую длл (см., например, типы поправок, которые не проверяются тоже), можно уронить все нахуй. Да этой хуйней можно mp3 грузить!
2) Модуля нет в PEB_LDR_DATA, многие функции Windows API с этой "длл" работать не будут. Например, та же работа с ресурсами.
3) TLS не поддерживается.
4) Activation context-ы не поддерживаются, load configuration не поддерживается, 64 бита не поддерживаются, runtime function table, куча других сколько-нибудь современных вещей - нет. И это я еще молчу о тонкостях PE-формата.
Выводы сделаешь сам?
По хорошему надо PE-парсер туда имплантировать и разные врапперы/хелперы, а так да, нечитабельно.
>>33462
Правильно, это POC скорее всего, а не полноценная реализация. Но хацкеры обычно инжектят голые длл или шеллкод, где нет никаких TLS, эксепшенов и прочей лабуды.
Грамотный парсер PE-формата фиксит все вышеперечисленные тобою проблемы. Кроме того, я уверяю тебя, что все это вообще не нужно, ибо весь функционал можно реализовать в рантайме.
А что там за тонкости PE-формата?
> А что там за тонкости PE-формата?
Ну я имел в виду всякие банальности типа VirtualSize = 0 у секций. Код не читал, только скроллил.
> инжектят голые длл или шеллкод
Там выше просили "аналог WinApi функции LoadLibrary", а не шелкоды-инжекты-хаки-спамы-куки. Шелкоду PE-лоадер без надобности.
> я уверяю тебя, что все это вообще не нужно
Это у тебя просто никогда MessageBox() не фэйлился из-за того, что лоадер SxS не умеет.
Тогда и смысла реализовывать это все руками нет, если не для хакинга. Некорректная задача. Реализовать все и не получится, потому что есть куча мест, куда нужно что-то впихнуть, где-то счетчик ссылок поправить забыл и у тебя все упадет.
>Это у тебя просто никогда MessageBox() не фэйлился из-за того, что лоадер SxS не умеет.
Приведи пример.
> Приведи пример.
Деталей уже не помню, много лет прошло. Примерно так: XP, comctl32 в импортах, отсутствие InitCommonControls. MessageBox возвращал 0 с валидными параметрами. Допилили SxS и заработало.
> если не для хакинга
Для моддинга. Грузилась игра, правились/подменялись импорты и код на лету. На WriteProcessMemory возбуждался антивирус, пользователи пугались, поэтому был запилен лоадер. Потом по-другому сделали, правда.
А неплохая все таки книженция. Интересные истории получились, кому-то повезло, кому-то совсем нет. Ну а про наше внутреннее устройство и так все знали, разве что навальнята вон пусть просвещаются.
Да это Туровский, я гарантирую это.
А как мне виндовый софт реверсить-то, блджад?
Выложи, давай посмотрим.
Посоны не качайте, там вишмастер, пишу с тостера.
судя по размеру тут первая версия с пальцами
>>35292
держи няш
https://anonfile.com/f0wd6ez8n6/Turovskiy_Vtorjenie_pdf
есть произвольная линуксовая система, на которой запущен скрипт командой python3 scriptname.py от имени рута, но запускал не я, хоть и есть доступ к руту. ни в / ни в ~ рута скрипта scriptname.py нет, да и через find/locate по всей системе он тоже не находится. мне нужно узнать, что именно делает скрипт, в иделае вообще получить его сорсы. как это можно сделать?
я ленивый студент и иду по https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12 вот этому гайду.
почитал про /proc/pid/fd на so. в моём случае выдаёт пикрилейтед. что это может значить?
Это значит, что ты пидор не умеешь учиться, и ждешь, что кто-то решит за тебя задачу. С таким подходом в ИБ делать нечего.
В качестве общего подхода, могу посоветовать тебе смоделировать ситуацию, и смотреть там, что и как.
ух ты блять какой. ну и ладно, придется тратить время и гуглить, я пришёл сюда за помощью с нетривиальной проблемой, потому что вроде как для этого форумы и нужны, но если тут только нахуй посылают с вопросами, то чё делать, пойду искать решение сам.
Это значит, что питон не держит файл со скриптом открытым, а скрипт, скорее всего, себя уже удолил, раз find не находит. Хотя ты в /proc/<pid>/cwd смотрел? сдампи память процесса
>судя по размеру тут первая версия с пальцами
Там сжато. не хотел 60 мегабайт по сети загружать
>Обсудим теперь эту книгу?
Хунта из под коня.
Серьезно, кроме пары интервью вообще ничего нового/интересного.
О каких-нибудь технических деталях я уже вообще молчу.
Насколько нужно быть профессионалом, чтобы провернуть такое?
Вот допустим я чисто поприколу хочу влезть в лифт в падике и кнопки перемешать (теоретическая ситуация).
Сколько мне нужно будет обучаться, чтобы смочь такое?
дело было вечером, делать было нечего, забэкапил на гит/гитбук с wasm.in перевод "Введение в реверсинг с нуля, используя IDA PRO" от Яши. Из плюсов гитбука - полнтекстовый поиск.
Есть еще чем там заняться, но это уже по времени/возможности. Или если кто то сам поправит и пулреквест пришлет
https://yutewiyof.gitbook.io/intro-rev-ida-pro
это как вырезать гланды через жопу. Залезаешь в падк, снимаешь панель, тасуешь кнопки. профит.
а в статье описано то что делалось овердохуя жопачасов
>анус разработать
Да я же незаметно. Ночью залезу и сделаю всё.
А если серьезно, интересен просто сам вопрос, сколько времени нужно изучать материал, чтобы смочь сделать такую вещь.
Или, вот адекватный пример. Есть у меня например кофемашина. И я пару кнопок не использую (ну там где пенка и тд). Я хочу сам залезть и перепрограммировать так, чтобы на эти две кнопки делалось другое (кофе с выбранными параметрами). Чтобы не крутить вертушки и не настраивать, а просто кнопку нажать.
Так вот, насколько это сложно для человека, который никогда платами не занимался и реверс инжинирингом тоже? Сколько потребуется времени, чтобы научиться?
>>36638
Так не интересно. Да и это решения уровня, стереть вообще цифры у кнопок.
Тут же вопрос скорее общий и теоретический.
чтобы ты смог взять чип с кофеварки,написать свою прошивку на асме проца этой платы и все прошить?Или что ты имеешь ввиду?Найми спецов лучше
>Тут же вопрос скорее общий и теоретический.
к каждой цели надо идти разумными средствами/способами.
А обязательно свою прошивку писать? Нельзя ли просто немного изменить ту, что уже есть? Может и тупой вопрос, я просто никогда этим не занимался.
зависит от целей и размаха. начни для начала прогать, и смотри на результат. Заодно разбирай все что пишешь. У Юрича все хорошо написано.
В шапке :
beginners.re - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
ЗЫ. если прогать сложно будет, то в реверс лесть тем более. Там многое завязано на багаж опыта.
А вот за это большое благодарочка, анон. В шапку можно будет добавить. Алсо, куда Яшечка в итоге ушел? С васма то его выгнали, к сожалению.
Кто может сказать где сейчас 29A,z0mbie и прочие крутые вирмейкеры из начала нулевых?Когда они все это творили я только родился,так что не застал.Интересна их судьба
Наврено самое доступное и более менее актуальное:
Аблязов Руслан Зуфярович - Программирование на ассемблере на платформе x86-64
https://gamedev.ru/code/forum/?id=244813
Совершенно случайно наткнулся на такую тему, вопрос в том: КАК?
>Совершенно случайно наткнулся на такую тему, вопрос в том: КАК?
Кроссплатформенный Ассемблер это С, без шуток.
>год появления 1970
Потому что ему (ей) больше, чем большинству посетителей этой (и любой другой) борды.
Хотя уже яваскрипту с пыхой больше 18, теперь даже с ними не зазорно трахаться.
>Хотя уже яваскрипту с пыхой больше 18, теперь даже с ними не зазорно трахаться
Я бы не стал. Велики шансы подцепить рак глаз или даже мозга.
ну и что
алсо на картинке откуда она взята руби моложе джавы хотя должна быть старше
и самая милая там - лол визуал бейсик
Без шуток, ассемблер это классический бейсик, буквально. Портянка инструкций с адресами, джампы, джампы с возвратом.
>>06213 (OP)
https://backoftut.gitbook.io/intro-cracking-with-ollydbg/
Аналогичный бэкап курса Нарвахи по азам но уже на примере Ольки КМК, тут основы лучше рассказаны чем в курсе с идой, там их по верхам. И вообще базу все же лучше отдельно, а материал по инструментам отдельно. Но как есть
ТЫ, КТО СМЕЕТ ЭТО ВАШЕ ДЕРЬМО ПОГАНОЕ ЗДЕСЬ ХЕРАЧИТЬ, ЭТО ТЫ, ТАК НАЗЫВАЕМЫЙ БАЙТОСЛЕСАРЬ, ТЫ ГЕЙСКАЯ МРАЗЬ ПОГАНАЯ, ТЫ МУДАК СРАНЫЙ, ВОНЮЧИЙ ТЫ УРОД, ПОДОНОК, ЧТОБ ТЫ В НИИ ЗА 30К В МЕСЯЦ ГНИЛ, ТВАРЬ, ГНИДА ПОГАНАЯ! Я ТОЛЬКО НАТУРАЛ АБСОЛЮТНЫЙ, ЧИСТЕЙШИЙ ГЕТЕРО ПОЛНОСТЬЮ, НАВСЕГДА ТОЛЬКО НАТУРАЛ Я - ТОЛЬКО ДЕВУШЕК ОДНИХ ЛЮБЛЮ, ТОЛЬКО ДЕВУШЕК КРАСАВИЦ И ВСЁ!! ТОЛЬКО С ДЕВУШКАМИ ВСТРЕЧАЮСЬ, ТРАХАЮСЬ С ДЕВУШКАМИ СПЛЮ ТОЛЬКО! И ПРОГРАММИСТ Я ТОЛЬКО И ВСЁ!
Да уже же 20 лет прошло с тех событий.все сроки давно прошли
Код не пишешь, хуй не сосешь - зачем вообще ты на свете живешь?
Нет, макросы fasmg гораздо мощнее и позволяют делать вещи, невозможные или требующие костылей в fasm1 (хотя кое-что Томаш бэкпортировал уже).
В смысле, опять я ещё и анимешник?
>В НИИ ЗА 30К В МЕСЯЦ
А где там зарплаты? Последнее предложение, что я видел, было 12. А я и в частной программистом на битриксе 30 умудряюсь получать.
Аноны, вопрос не совсем по теме, но спрошу - какие книги есть по машинному обучению в RE? Машоб-тред - помойка, там спрашивать бессмысленно.
дано
одно прерывание приходит каждые 13.57см
необходима скорость в кмч
это инт
могу на индекаторе отображать только 4 знака
тое 1234
точку естествеенно буду ставить в ручную
тое 45.5кмч это 455
на пике код
пожалуйста проверьте эту константу
последний нуль смущает
нелюблю нули
оказываеца
тхл и тхх
карочи
это таймера и прерывания
к примеру
есть таймер
у него 2 регистра по байту
тх и тл
как только тл 256 тое =0 0хфф
он клацает камнем
тое нельзя сделать так
нижний регитр +2 кагда он 254
верхний не щелница нихуя
че забред? задаст вопрос зумер
ога этот бред начинаеца кагда ты начинаеш развадить второе прерывание по первому таймеру
притом это второе прерывание очень долгое
и можето и 1 раз за перва тайиер и один раз за 200 таймеров
а можите и меня обассат
не тупи маняме
....
после кросплатформы у твай няфы вместо ушей хуи вместо глаз залупа...
один хуй все перещитывать в ручную
я эту константу шитал 10 часов в течении полугода
и та мине не нравица
потомучто физики дахуя
тое внешних условий сверх быстрых просто ниебическое количество
Ну вот с fasmg ты можешь генерировать дебагинфу в любом формате, для которого только сможешь написать макросы (азаза. А в обычном фасме у тебя есть .fas и конвертеры какие-то вроде были для него, но сразу CodeView (PDB) он тебе не сделает.
не трахай мозг мальчик
поверь мне
достаточно всеголиш знать канкретные точки и количество времени
да оно будет плавать +- 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
не трахай мозг мальчик
поверь мне
достаточно всеголиш знать канкретные точки и количество времени
да оно будет плавать +- 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
ОП, ты ведь добавишь в шапку восстановленный бэкап старого ВАСМа?
> но сразу CodeView (PDB) он тебе не сделает
единственный минус с другими :(
>>38614
еще на рутрекере есть бэкап в CHM https://rutracker.org/forum/viewtopic.php?t=407571
>и тут я начал знатно обсераца - осозновая что оказываеца полуволна это синусоида
тое .....
>карочи я пришел сюда с этой проблемой и гдето неделю >формулировал анону задачу
>он мне дал решение
блэт. еще один сказочни пропустил школьную математику.
>а у меня в свое время при наличии оборудования и знаний ушло если недаст бог спиздеть чтото около полу года чтобы начать мигать...
еба, ты чо тут чешешь, птушник что ле?
>так одна андурина чего стоит - если раньше мне чтобы мигать ногой контроллера необходимо было иметь погромматор стоящий под 20-30кр, высшее образование чистого программера, понимание всей этой ебучей структуры, читание даташитов и прочих особеностей ядра
еще и ардуины восхваляет %) хоспади. более кривущего и монструозного SDK я пожалуй не видел. атмеги хорошо, ардуина детсадовское поделие из говна и палок.
>и я даже за12(ДВЕНАДЦАТЬ) лет все в сраном 8 битном камне все не знаю, не говоря уже о переходных 16 битных и современных 32битных стмах
это всего лишь твои 12 лет которые ты нахуй проебал вместо того чтоб что то изучать. методом тыка и изобретением велосипедов занимался
Дед, ты чего это в нотпаде код пишешь?
У исполняемого файла есть секции, у секций есть набор характеристик - по-моему, dword. Где можно прочитать подробно про значения, которые туда могут устанавливаться?
ты бухой или што?
Очень смешно, какой-то уебок нажрался и врубил вот эту в стиле "пойми, мальчик".
А ты ведь очень тупой и тебя не накрыли хуями только потому что через твою орфографию лень продираться.
что этот старый пердун сделал чтоб его слушать. пока по его роскозням он страдает хуетой)
> единственный минус с другими :(
Запили, все только рады будут.
>>38935
https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
перудн пездуй отсюдава, тема не про асм и кодинг, а про реверс. ты на старости лет ошибся малость
за столько лет, никаких подвижек, ничего не изменилось, значит никому не нужно это) и ты предлагаешь ему запилить?)))
опенсорс такой опенсорс.
>себя вспомни епта
себя и вспоминаю. сел почитал повторил. как конструктор же. у ардуины плюс что прям по USB Шьешь и всё, но такое сейчас и в нормальных stm-ках есть которые на развес, да и атмеги такие имеются.
Ардуина изначально неверное понятие у ребенка складывает о теме программирования железок в принципе.
Ему нужно, видимо. Я вот не пилю, потому что не понимаю, что может добавить отладочная инфа в изначально ассемблерный код, который тобой же и написан. А вообще, решения разной степени костыльности уже запилили, просто прямой генерации .pdb нет.
>моче похуй
Причём здесь моча, даун? Тред я перекатываю, я тут не живу. Вы тут срёте со скоростью 1024 поста в секунду, и ещё чему-то удивляетесь.
Трипл-перекат
>>1439555 (OP)
>>1439555 (OP)
>>1439555 (OP)
>>1439555 (OP)
>>1439555 (OP)
Трипл-перекат
>>1439555 (OP)
>>1439555 (OP)
>>1439555 (OP)
>>1439555 (OP)
>>1439555 (OP)
Если бы моча убрала сраную рекапчу, запостил бы быстрее. Иногда думаю, что перерубание нахуй всего зарубежного интернета пойдёт рунету на пользу - хоть рекапчи не будет!!!
Это копия, сохраненная 13 августа 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.