Вы видите копию треда, сохраненную 4 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Книги по RE:
beginners.re - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
Чтобы не палить свой адрес почты, вот прямая ссылка https://beginners.re/f572d396fae9206628714fb2ce00f72e94f2258f/
Рикардо Нарваха: Введение в реверсинг с нуля, используя IDA PRO https://yutewiyof.gitbook.io/intro-rev-ida-pro/
Введение в крэкинг с помощью OllyDbg https://backoftut.gitbook.io/intro-cracking-with-ollydbg/
https://mega.nz/#!Bc9VVAYC!Vk6CFlW6VIoskLNgDKXbsL6FacDQeOKe6LX92wNicKY Нарваха практический курс по дебагингу
https://www.goodreads.com/shelf/show/reverse-engineering - список книг
Сайты по RE:
http://wiki.yobi.be/wiki/Reverse-Engineering
https://www.reddit.com/r/ReverseEngineering/comments/hg0fx/a_modest_proposal_absolutely_no_babies_involved/
http://www.program-transformation.org/Transform/ReengineeringWiki
http://blog.livedoor.jp/blackwingcat/
https://yurichev.com/blog/
http://wiki.xentax.com/index.php/DGTEFF
https://exelab.ru/
Инструменты для RE:
Дизассемблеры:
1) IDA Pro 7.2.torrent
2) IDA Pro 7.0.torrent (x64 only, для XP нужно патчить PE + вылеты)
3) IDA Pro 6.8.torrent
4) IDA Pro 5.0 - бесплатная версия для некоммерческого использования
5) Radare 2 - наконец прикрутили гуй, но по прежнему нужна только клиническим, не умеющим в скачивания торрентов, или пользователям альтернативных ОС
6) Ghidra для любителей анальных зондов от АНБ не такие уж они и анальные
7) Остальное
Все книги и статьи Криса Касперски (R.I.P.)
https://yadi.sk/d/CxzdM1wyea4WP или https://rutracker.org/forum/viewtopic.php?t=5375505
+ https://rutracker.org/forum/viewtopic.php?t=272818
Книги по ассемблеру:
"Архитектура компьютера" Э. Таненбаум
Юров В.И: Assembler http://booksdescr.org/item/index.php?md5=73957AEFEADCB7F0C112DCAED165FEB6
С.В. Зубков: Assembler. Язык неограниченных возможностей.
Randall Hyde: The Art of Assembly Language http://booksdescr.org/item/index.php?md5=9C0F88DC623FCE96A4F5B901ADCE95D3
Сайты по ассемблеру:
Замена почившему wasm.ru- https://wasm.in/ , архив старого сайта https://rutracker.org/forum/viewtopic.php?t=407571 или восстановленный https://vxlab.info/wasm/index.php.htm
https://www.unknowncheats.me/wiki/Assembly
http://asmworld.ru/
https://software.intel.com/en-us/articles/intel-sdm
http://www.nasm.us/doc/
https://sourceware.org/binutils/docs/as/index.html#Top
https://msdn.microsoft.com/en-us/library/afzk3475.aspx
https://conspectuses.blogspot.com/2019/03/fasmg.html
disassembler.io Дизассемблер онлайн
Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
http://msdn.mirt.net/
http://terminus.rewolf.pl/terminus/
http://geoffchappell.com/
«Внутреннее устройство Windows» интересующего издания.
Документация Intel
https://software.intel.com/en-us/articles/intel-sdm
Разное
Michael Abrash's Graphics Programming Black Book Special Edition http://www.phatcode.net/res/224/files/html/index.html
http://www.phatcode.net/res/224/files/html/index.html
https://www.agner.org/optimize/
http://booksdescr.org/item/index.php?md5=5D0F6DBC1410E10BC489167AFE8192DF
https://www.cs.cmu.edu/~ralf/files.html
https://www.sandpile.org/
http://ref.x86asm.net/index.html
https://pnx.tf/files/x86_opcode_structure_and_instruction_overview.png
http://www.jegerlehner.ch/intel/
Предыдущие
№7 https://arhivach.ng/thread/437556/
№8 https://arhivach.ng/thread/455487/ или тонущий >>1406213 (OP)
Граждане, а киньте пожалуйста какой-нибудь ссылкой, или гневным абзацем чтобы мне стало ясно что спрашиваю очевидное:
ASM-вставки и отдельные программы могут позволить обойти ряд ограничений безопасности со стороны компиляторов и даже целой ОС?
Или оно без бубна всё равно в пользовательских режимах запускается?
Преимущества Асма над Си начинаются и заканчиваются тем, что у Асма есть прямой доступ к регистрам. ВСЕ.
Емко.
Да, все еще говно, но лучше хекса.
Я пробовал сие с самого релиза - тормознутое явовское уг. Простенькую либу анализировала чуть ли не час, так и не дождался и забил. Может, сейчас ситуация получше. Но, черт возьми, кто ж такие вещи на жабе делает (jeb decompiler туда же, последние версии - лютое, не оптимизированное не пойми что).
этож АНБ, как и любые гос органы, им не так критичная скорость. Им ванжнее простотА поддержки, чтоб в написании как можно меньше быть завязаными на конкретных людей, и результат. А мощностя для скорости - выбить дело времени.
Даже на том же шарпе анализ работал бы быстрее. Но судя по всему разработка начиналась задолго до .net core
где то лучше, где то не оч красиво, всплыло несколько багов (там прям видно мусор в декомпиле) но их достаточно быстро поправили.
у гидры движок изначально точился под то, чтоб строить декомпилятор.
Но тонких настроек как у HexRays пока конечно же нет. Но всё впереди :)
думаю там люди с опытом выскажутся пообъективнее https://exelab.ru/f/index.php?action=vthread&forum=3&topic=25640
тот же https://habr.com/ru/users/DrMefistO/ пересел на гидру полностью.
Отвечаю сам себе, если у кого-то появится схожий вопрос: похоже, виновато Ida SDK 7.2. На версии IP 7.2 в функции плагин напрямую заходит. То есть, Bindiff не полностью совместим с 7.0.
Reverse Engineering это для тех, кто уже знает ассемблер.
Наврено самое доступное и более менее актуальное:
Аблязов Руслан Зуфярович - Программирование на ассемблере на платформе x86-64
Нет нормальных книг по ассемблеру. Читай статьи/смотри курсы. Там учить-то нечего. Вникнуть в суть можно за недельку. А дальше вон в шапке курсы по OllyDbg и IDA, почти 200 уроков.
>OllyDbg и IDA
они по сути дублируют друг друга, только рассказыват в контексте разных инструментов.
Сам asm учить как и любой другой язык программирования - не долго, а вот овладеить им, употреблять его - это уже другая. И да, соглашусь курсы норм подходят, дают наглядно посомтреть что можно и как можно, даже тот же Калашников
https://www.amazon.com/Learning-Malware-Analysis-techniques-investigate/dp/1788392507/
В каком смысле?
https://exelab.ru/videokurs.php
Вот можно почитать содержание курса и что идет с ним в комплекте. Стоит вроде недорого, книгу недавно с амазона заказывал, дороже вышло.
Я бы этого кекера набутылил, за незаконную продажу книг
Отсоси, потом проси.
свое там было, но не нужно, остальнео сборная солянка. валяется на том же ннмклаб
Programming from the Ground Up
https://docs.microsoft.com/en-us/windows/win32/api/enclaveapi/
Ну вот у него видимо совместимость какая-то была выставлена в свойствах у file.exe, поэтому для конкретного имени файла ASLR отключалась, и все работало.
>адреса разные
IMAGE_FILE_RELOCS_STRIPPED = 0b (.reloc секция имеется) /FIXED:NO
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 1b /DYNAMICBASE
>Так еще и IAT кто-то восстановить забыл
Что ты имеешь в виду? IAT загрузчиком биндится. Вернее биндинги почему-то зависят от имени .exe файла. Вплоть до того, что работоспособность .exe файла зависит от имени, указанному в /out. Мне кажется, это происходит при линковке в файл только с именем file_0.exe. ЧЯДНТ?
>>48710
>совместимость какая-то была выставлена в свойствах у file.exe
Нет. Там всё чисто.
Как при помощи CreateFileMapping сделать инжект ДЛЛ-ки в процесс? Надо использовать MapViewOfFileEx и передать в нее lpBaseAddress памяти, выделенной в целевом процессе?
Посмотрел более трезвым взгялдом и похоже что это проделки антивируса или проактивки.
Опасные апишки типа CreateFile, CreateThread, VirtualAlloc и т.д. перехватываются кем-то, кто сидит ниже кернела в памяти.
А проактивки они такие, даже на изменение имени работают.
Ничего выделять не надо. Отображаешь секцию по хэндлу и тебе возвращают адрес, по которому система разместила ее в целевом процессе, далее вычисляешь или запрашиваешь точку входа и делаешь вызов.
>Отображаешь секцию по хэндлу и тебе возвращают адрес, по которому система разместила ее в целевом процессе
А какая функция отображает секцию в другой процесс?
а бля перенесли на пол года. отбой
Пока ждал, уже сам заресерчил все что нужно было. Что там во второй части будет то?
http://ratprog.msevm.com/assembler/pr/09.htm
скорее всего очепятка. ручками набери да проверь.
> разработчики не знают, зачем они это добавили
Разработчики знают. Тогда целочисленные типы были маленькие, а деньги компьютерам тех времен считать приходилось постоянно. Поэтому многие языки умели в какой-нибудь встроенный decimal. И x86 асм не исключение.
бла, я тебя изначально не так понял. ты про книгу. думал там сорцы какие слили. %)
ну ты и ссыкло, на анонимной борде дать ссылку. ппц.
> анонимная борда
> мылач
Тут пару лет назад анон на бутылку сел, когда засрал раздел с просьбами о помощи в написании криптора. На архиваче валяется тред вроде как.
>
ну это совсем разное же. вон тот же fl завален ссылками на книги как на рутрекер так и на другие файлопомойки
Асм это ассемблер, а асмр это ассемблер и реверс инжиниринг
ну тебе кинули на специфичную вещь. а так вот по теме
https://habr.com/ru/company/audiomania/blog/462845/
https://habr.com/ru/post/463005/
Всё так.
"оказывается" лол. просто под вендой больлше людей и проще. Вот поэтому мак и линь как неулавимый джо.
Линь на серваках, а едро вообще в анддройде, так что дырявой из распрос транённых осталась только большая макось.
то что оно на серверах (венды все равно больше в корпоративе). А дыры есть. Просто пока на дестопе это считанные проценты - овчинка выделки не стоит.
А андроиды - да там и дырявостей ненадо (ъотя и их предостаточно). Там пользователи сами себе злые буратины. дают разрешения на всё подряд, качают откуда попало.
Вот свежий win, просто грамотнее надо. https://habr.com/ru/news/t/463319/
Слили уже? Поделитесь пожалуйста. Или киньте ссылок, где можно электронную версию подешевле купить. С меня тонны нефти.
смотри первые 3 ссылки в шапке. начинай с этого.
Если там не многогиговый энтырпрайз или обернутый в vmprotect говнокод, я бы поковырял, скинешь?
В ДС/ДС2 куча вакансий по реверсу/ресерчу и прочему пердолингу, который не связан с анализом малвари. Чем тебя они не устраивают? Платят норм, разброс 100-300к где-то. За обнаруженные уязвимости капает процент + премии + качаешь себе портфолио. На студию за годик наскребешь. В дубаи и прочие заграницы тебя без послужного списка не возьмут.
Что лучше прочесть - Калашникова или Юрова? Калашников в djvu и мне там навигация больше нравится. Юров в pdf.
Z?
Я?)
Как мне показалось, у Калашникова уровень "вкатываемся в асм за 21 день" (но это не точно). У Юрова уровень университетского учебника (там и книжка по практикуму прилагается), хоть и несколько устарел. Можешь, вообще, без учебника обойтись. Возьми сразу описание/спецификацию твоей системы маш.команд, руководство для твоего ассемблера, ABI программного окружения и, если есть, API рантайма/библиотек.
ax, bx, cx, dx (ah, al, bh, bl, ch, cl, dh, dl)
si, di, bp, sp
cs, ds, es, ss
В процессоре 8086. Но у меня нет процессора 8086. У меня есть процессор x86-64 (Intel Core i3-6100). Какие у него аналоги всех вышеперечисленных регистров?
Я к тому, что там же новых регистров добавили в новых процессорах? Как в них научиться шарить, если их у Калашникова нет?
такие же но они больше. калашников норм только чтоб привыкнуть аперировать на асме, ставишь досбокс и пишешь под него. курс его проходится за недельку другую. тупо привыкаешь видеть асм и думать на нем. дальше выкидываешь это нахер и разбираешься с другим
Аблязов Руслан Зуфярович - Программирование на ассемблере на платформе x86-64
Если я правильно понял, в ax можно записать 16 бит и потом к ним обратиться через ah (первые 8 бит) и al (последние 8 бит).
К битам в eax можно обратиться через ax?
Можно. И к младшим битам rax можно обращаться через eax/ax/ah/al. Но в 64-битном режиме в этой схеме уже есть подвох: при записи в eax старшие 32 бита rax затираются нулями.
Подожди.
К ax я могу обратиться через ah и al к старшим и младшим битам.
К eax я могу обратиться через ax. К каким битам? К младшим? А как обратиться к старшим? Или через ax к старшим, а через bx к младшим?
А к rax через что обращаться? Через eax и ebx?
а потом что, тебе тут за каждую команду будут пояснять? или ты неспособен ничего кроме как тупые вопросы задавать на которые ты ждешь ответы дольше чем взять прочитать и понять.
ОП, что то http://booksdescr.org колбасит уже сколько времени, работает только по айпишнику нормально.
думаю ссылки вида
http://booksdescr.org/item/index.php?md5=MD5
можно заменить на
https://b-ok.cc/md5/MD5 - это зеркало по крайней мере уже несколько лет живет и не в бане.
Пиздец ты уебок, братишка.
Вон у Калашникова из таблицы можно сделать вывод, что к младшим битам EAX можно обратиться через bx. За RAX у Калашникова ничего не написано, но опять же, по аналогии, можно сделать вывод, что к младшим битам RAX можно обратиться через EBX.
Мне это тупо схавать и дальше читать? А потом говно напрограммировать?
Погнал Юрова читать.
>что к младшим битам EAX можно обратиться через bx.
А, ты все же что то читаешь. тогда ладно.
Ты просто спешишь :) Там о том как данные в регистрах располагаются, про обращение ничего не говорится. То какие данные из регистра достать/положить/выполнить операции - это уже дело команд, и от процессора к процессору это может очень разниться
>можно сделать вывод, что к младшим битам RAX можно обратиться через EBX.
не пытайся делать в эсемблере в принципе никаких проекций с тем что можно было и что можно. Когда анализируете новый без док - да, конечно пожалуйста, но все это сразу надо проверять практикой. А так, только после того как прочитал конкретно, или фактически проверил в коде
>Мне это тупо схавать и дальше читать?
нет конечно. взять и проверить.
>16+8=20
а в следующей строке видно что опечатка, и не 8 а 4 должно быть.
имхо, самое доступное и более менее актуальное:
Аблязов Руслан Зуфярович - Программирование на ассемблере на платформе x86-64
уф, на возьми хоть в хорошем качестве (изначально вектор), 2е издание. https://b-ok.cc/md5/829ae04cc30db94e7df63986064f1a37
Бессистемно изложенный материал. Нормальных, доступных объяснений практически нет. Там, где прямо таки просятся хоть какие-то объяснения, начинается новый подзаголовок.
Книга начинается подробным объяснением того, что компьютер состоит из системного блока, монитора и пр. А через полдесятка страниц уже начинается озвучивание содержания мануала процессора Pentium и "что нового появилось в архитектуре NetBurst".
Прочитавши половину книги убедился в том, что это абсолютно бездарно написанная книга. Систематичных знаний и понимания Ассемблера она не даст.
>У моего Юрова в начале книги за историю рассказывает. У твоего Юрова такого не нашел.
второе издание. первое в векторе не смотрел.
аблязов же тут https://rutracker.org/forum/viewtopic.php?t=4681622
если не умеешь в торенты то аблязов еще тут https://b-ok.cc/md5/4c4f504d7cc0d753906c04bfce52e9d3
ОП опять с шапкой пролетел. Новисы не могут сориентироваться.
В качестве учебника можешь посмотреть ещё Хайда или Kusswurm'а.
Надеюсь Абеля никто советовать не будет. Пощёлкай шапку - может что-нибудь найдёшь подходящее тебе.
>ОП опять с шапкой пролетел. Новисы не могут сориентироваться.
надо как другие темы - на гитхаб и там причесывать совместно.
проблема с советом англоязычной литературы в том, что требуется знание английского выше посредственного уровня, а лучше уже быть в теме. Как бы не ругали наших переводчиков, но для большинства это куда понятнее чем то, что он сам напереводит.
> Что ж читать тогда?
Intel SDM половину первого тома, потом второй по желанию. Это лишь наполовину шутка, я подобным образом в ARM вкатывался, хорошо пошло.
что Ви этим хотите сказать?)
некоторым нужна практика, желательно чтоб не самому себе ее выдумывать)
опять же учить асм под x32/x64 ради асма - глупо. ты либо реверсишь, либо ничего. изучать асм ради мк - вот тут резон есть.
яб вообще предложил курс по OllyDbg от Нарвахи, чтоб сразу на практике и какие то полезные знания (отлаживат программы и под сями и плюсами надо), знания о проце и асме там попутно даются. А потом если надо - уже с имеющимися знаниями углубляться в конкретные части :)
Да, вот с этим вариантом тоже согласен.
>учить асм под x32/x64 ради асма
Именно это - возможно, единственное, что имеет смысл. Это самое интересное. В отличие реверсеров, колупающих результаты работы чужого ума, в стремлении потешить своё "какирское" ЧСВ.
реверс это интересно, как задачки. А писать на асме под 32/64 - глупо сейчас, максимум отлаживать. В 95% случаев твой говнокод на асме никому не нужен, в виду наличия крутых алгоритмов оптимизации в компиляторах. понимания асма нужно чтоб знать где ты нахуепорил.
ассемблер это всего лишь мнемокоды к инструкциям процессора, а также транслятор из этих текстовых мнемокодов в бинарное представление. Это не язык программирования в привычном смысле. Знание ассемблера это знание конкретной процессорной архитектуры. Поэтому существование для ассемблеров нетленок вроде Кернигана и Ритчи для С невозможно просто по определению. Обязательным является наличие полного справочника/документации по архитектуре, для которой собираешься писать. Но писать программы справочник не научит. А еще есть области применения. Для того чтобы написать небольшую утилиту, числодробительный блок в программе на высокоуровневом языке, драйвер оборудования для конкретной ОС, транслятор с некого ЯП и наконец ядро ОС нужны очень отличающиеся сопутствующие знания.
Нет смысла учить ассемблер "просто так". Его нужно учить для применения в конкретных задачах. Возможна основная проблема многих, кто хочет выучить ассемблер, в том, что они не могут придумать, где его применить. А пока не начнешь его применять для себя, а не для учебных заданий, программировать на нем не научишься.
>А писать на асме под 32/64 - глупо сейчас, максимум отлаживать
> в виду наличия крутых алгоритмов оптимизации в компиляторах. понимания асма нужно чтоб знать где ты нахуепорил.
Твоё мышление максимально поверхностное. Настоящий реверсер.
>невозможно просто по определению
По какому определению?
>нетленок вроде Кернигана и Ритчи для С
В твоём представлении это что-то заоблачно хорошее. Ну точно, реверсер
>Но писать программы справочник не научит
А должен?
>Нет смысла учить ассемблер "просто так"
Как раз смысл есть, только когда "просто так". Ты там смысл со значимостью/ценностью не путаешь?
>Возможна основная проблема многих
Какая основная проблема? О чём ты?
как раз таки я не реверсер) а твои аргументы к личности - это полный слив. демагог хренов))
вот на еще тогда пасту в догонку.
знание ассемблера не помогает большей части программистов ровным счетом никак. Ведь если от него нет пользы, то оно никак не может быть необходимым требованием к программисту, иначе с тем же успехом можно сказать "кто не знает древнеегипетский, программистом не является". Для того, чтобы некое знание было полезным для программиста, оно должно хотя бы иногда им применятся.
В далекие времена 8086 и DOS программист на C или Pascal, а это было большинство, имея знания ассемблера, вполне мог предположить во что примерно превращается его код на уровне машинных инструкций. И это действительно помогало при разработке критических по скорости участков, а еще он мог часть кода вообще переписать на ассемблере и это почти всегда давало выигрыш в скорости. Ну а скриптовые языки всерьез тогда никто не воспринимал из-за никакой производительности. Однако эти времена давным давно прошли.
Скриптовые языки вышли на первый план. Их производительность достаточна для широкого круга задач, в отдельных случаях даже превосходя код на С без экспертных оптимизаций, а скорость разработки на них несоизмеримо выше. Да и сами языки шагнули далеко вперед: именно в них чаще всего есть функциональщина, замыкания, лямбды, фабрики, метапрограммирование, интроспекция, DSL и прочие изыски, умение работать с которыми и отличает опытного программиста от новичка, этакий матан программирования. А вот C и ассемблеры остались практически теми же. Кстати, опытные программисты на С или асме пишут на скриптовых языках чуть ли не хуже новичков, ибо таких сложных концепций в их языках нет и думать на должном уровне абстракции они не обучены. Ну и само собой представить во что превратится код на скриптовом языке после перевода в конечные инструкции чаще всего невозможно, а при попытке оптимизировать скриптовый код на основе знаний C/Asm "спецы" садятся в лужу, ибо вместо ускорения зачастую получают замедление, иногда даже катастрофическое.
Но и в области старого доброго С тоже не все гладко. Для того чтобы хотя бы примерно узнать во что превратится код нужно учитывать:
1) архитектуру процессора(x86, arm, mips.)
2) конкретную версию ядра процессора (между i386 и core2 пропасть)
3) компилятор и его версию(gcc, clang, msvc, icc генерируют очень разный код, с серьезной разницей в производительности, аналогично с их версиями)
4) опции компилятора(в зависимости от них вышеприведенный простейший фрагмент может быть выброшен вообще, реализован как есть или реализован с разворачиванием цикла, догадайтесь что будет на действительно сложном коде)
Как следствие узнать во что превратится код без запуска отладчика/дизассемблера не получится. Но даже с ними мы видим только одну из версий, а ведь программу могут позже скомпилировать совсем другим способом и все тонкие оптимизации вылетят в трубу.
Ускорять куски кода переводом на ассемблер тоже стало сложно и чаще всего вредно. Во-первых, для того, чтобы тягаться с компилятором в качестве оптимизаций, нужно иметь очень высокий уровень знаний об особенностях процессоров. Обычно такой уровень только у разработчиков компиляторов или драйверов, то есть у узких специалистов. Во-вторых, ассемблерные вставки резко снижают портабельность кода.
Так что же особенного дает знание ассемблера современному программисту? Может понимание таких вещей как работа с байтами и битами, разница между int и float, выделение и освобождение памяти, указатели? Да все это, мои дорогие Ъ программисты, есть даже в скриптовых языках, не говоря уже о С. В современном мире большинству программистов ассемблер не несет ничего полезного. Он нужен только узким специалистам, например разработчикам компиляторов, драйверов и кодеков. То есть ничтожному проценту от общего числа. Да и те стараются использовать его по минимуму. В ядре линукса процент ассемблерных строк неуклонно падает и составляет на данный момент чуть больше 2%. И это в строках, надеюсь Ъ программисты хотя бы представляют разницу в полезной нагрузке на строчку кода на С и asm.
как раз таки я не реверсер) а твои аргументы к личности - это полный слив. демагог хренов))
вот на еще тогда пасту в догонку.
знание ассемблера не помогает большей части программистов ровным счетом никак. Ведь если от него нет пользы, то оно никак не может быть необходимым требованием к программисту, иначе с тем же успехом можно сказать "кто не знает древнеегипетский, программистом не является". Для того, чтобы некое знание было полезным для программиста, оно должно хотя бы иногда им применятся.
В далекие времена 8086 и DOS программист на C или Pascal, а это было большинство, имея знания ассемблера, вполне мог предположить во что примерно превращается его код на уровне машинных инструкций. И это действительно помогало при разработке критических по скорости участков, а еще он мог часть кода вообще переписать на ассемблере и это почти всегда давало выигрыш в скорости. Ну а скриптовые языки всерьез тогда никто не воспринимал из-за никакой производительности. Однако эти времена давным давно прошли.
Скриптовые языки вышли на первый план. Их производительность достаточна для широкого круга задач, в отдельных случаях даже превосходя код на С без экспертных оптимизаций, а скорость разработки на них несоизмеримо выше. Да и сами языки шагнули далеко вперед: именно в них чаще всего есть функциональщина, замыкания, лямбды, фабрики, метапрограммирование, интроспекция, DSL и прочие изыски, умение работать с которыми и отличает опытного программиста от новичка, этакий матан программирования. А вот C и ассемблеры остались практически теми же. Кстати, опытные программисты на С или асме пишут на скриптовых языках чуть ли не хуже новичков, ибо таких сложных концепций в их языках нет и думать на должном уровне абстракции они не обучены. Ну и само собой представить во что превратится код на скриптовом языке после перевода в конечные инструкции чаще всего невозможно, а при попытке оптимизировать скриптовый код на основе знаний C/Asm "спецы" садятся в лужу, ибо вместо ускорения зачастую получают замедление, иногда даже катастрофическое.
Но и в области старого доброго С тоже не все гладко. Для того чтобы хотя бы примерно узнать во что превратится код нужно учитывать:
1) архитектуру процессора(x86, arm, mips.)
2) конкретную версию ядра процессора (между i386 и core2 пропасть)
3) компилятор и его версию(gcc, clang, msvc, icc генерируют очень разный код, с серьезной разницей в производительности, аналогично с их версиями)
4) опции компилятора(в зависимости от них вышеприведенный простейший фрагмент может быть выброшен вообще, реализован как есть или реализован с разворачиванием цикла, догадайтесь что будет на действительно сложном коде)
Как следствие узнать во что превратится код без запуска отладчика/дизассемблера не получится. Но даже с ними мы видим только одну из версий, а ведь программу могут позже скомпилировать совсем другим способом и все тонкие оптимизации вылетят в трубу.
Ускорять куски кода переводом на ассемблер тоже стало сложно и чаще всего вредно. Во-первых, для того, чтобы тягаться с компилятором в качестве оптимизаций, нужно иметь очень высокий уровень знаний об особенностях процессоров. Обычно такой уровень только у разработчиков компиляторов или драйверов, то есть у узких специалистов. Во-вторых, ассемблерные вставки резко снижают портабельность кода.
Так что же особенного дает знание ассемблера современному программисту? Может понимание таких вещей как работа с байтами и битами, разница между int и float, выделение и освобождение памяти, указатели? Да все это, мои дорогие Ъ программисты, есть даже в скриптовых языках, не говоря уже о С. В современном мире большинству программистов ассемблер не несет ничего полезного. Он нужен только узким специалистам, например разработчикам компиляторов, драйверов и кодеков. То есть ничтожному проценту от общего числа. Да и те стараются использовать его по минимуму. В ядре линукса процент ассемблерных строк неуклонно падает и составляет на данный момент чуть больше 2%. И это в строках, надеюсь Ъ программисты хотя бы представляют разницу в полезной нагрузке на строчку кода на С и asm.
> основные команды учатся за 1-2 дня
А потом еще год тонкости вроде
mov sp,0xffff
pop ax
или
mov ecx,35
shl eax,cl
А потом еще ты открываешь System Programming Guide у того же интела и зависаешь еще на год. А потом Optimization Manual. И да, для реверсинга это тоже нужно, если ты конечно не собираешься всю жизнь
> ковырять хеллоуворлды
>>60087
Проиграл. Даже разбирать лень.
тк в этом и суть, что нужно оно полутораземлекопам, а ударяться в те тонкости про которые ты говоришь, 95% никогда не понадобится.
А если вспомнить энтерпрайз, там весь этот асм надо выжигать, так как осложняет поддержку.
>Проиграл. Даже разбирать лень.
Ну хз, по мне так все по делу и объективно. Очень большому числу программистов, асм в принципе сейчас не упал. Стабильнее, быстрее и дешевле писать на другом уровне абстракции. МощностЯ и накрученые компиляторы давно позволяют
>А что не так?
"Клонами" они были во времена еще 386, когда все микрокод у интела тырили. Сейчас это разные процессоры с совместимым набором инструкций. При этом он пишет про x86-64, который вообще-то AMD разработала, а интел "склонировал".
Тонкости не нужны. Самое важное это владение инструментами и знание концепций.
>Optimization Manual
На кой хер? Разве что первую можно прочитать, хотя и без нее можно спокойно работать.
дело в том, что вклад пиратов - неоценим; так что пусть ребята реверсят, лишь бы во благо!
мне тоже больше настольный ПК нравится, ибо там что-то существенное сделать можно, а не просто утюг с диодами...
>>60087
>программисты на С или асме пишут
нифига не мог сделать, годами, пока не влез в каждый бит и в каждый байт; как люди, не вникая, кодят - ума не приложу
>мне тоже больше настольный ПК нравится, ибо там что-то существенное сделать можно, а не просто утюг с диодами.
это пока ты не начал реверсить донглы, прошки для декапа / расширения функционала / вскрытия алгоритмов и т.п. во всем этом есть свои интересы.
Время бы найти на все интересы только..
>нифига не мог сделать, годами, пока не влез в каждый бит и в каждый байт; как люди, не вникая, кодят - ума не приложу
всё от фантазии зависит, от того до чего ты абстрагировался , да и потребности. Одно дело дравера писать и что то системное, а другой энтерпрайз.
Просто что то вспомнилось: есть хороший способ по прокачке скила, и изучении бОльших тонкостей языка - это написать эмулятор какой либо платформы на целевом языке.
Написать просто чтоб завелось и работало - часто не так и сложно (чаще достаточно практически скопипастить мануал по процу), а вот добиться хорошей скорости - вот там начинаешь где то углубляться, где то другие подходы + чтоб можно было со всем этим делом упарываться не переписывая всё полностью - начинаешь задумываться об архитектуре.
Ну нет же. Даже если одну и ту же зарплату платят и здесь и там, то там можно тупо сэкономить на налогах и пенсионных взносах при работе по контракту. И учитывая цену жизни в каком-нибудь нью-йорке, то накопить экономя там проще, чем тут. И я ненавижу вальнюрабилити ресёрч из-за фазинга. И вообще мне доставляет анализ малвари, есть опыт и хочу продолжать в последствии обмазавшись сертификатами. А учитывая, что там требования для сеньёра 3-5 лет опыта и платят по 500 долларов в день, то это гораздо выгоднее, чем тут. Только надо как-то пройти конкурс из десятков кандидатов на место
> шо делают инструкции без операндов, одноимённые сегментным регистрам
Ассемблируются. И потом декодируются процессором просто как префикс для следующего за ним опкода. Если инструкция обращается к памяти, и сегмент для доступа можно переназначать - он переназначается на указанный (если сегментных префиксов несколько - используется последний), если не обращается - префкис либо не делает ничего, либо может быть какое-то другое поведение (по крайней мере, Intel нас этим пугает). Например, в P3 были хинты для переходов с использованием cs/ds перед jmp, например, а сейчас они опять noop.
Например, вот эти три куска кода ассемблируются абсолютно идентично (fasm):
mov eax,[cs:edx]
и
cs mov eax,[edx]
и
cs
mov eax,[edx]
Например, вот это работает (в 32-битном коде), сегментные префиксы игнорируются.
cs ds es ss fs gs nop
Саво, кардаш.
Если ты думаешь, что тебе будут платить 500 баксов в день за обычное ковыряние малвари, то ты очень ошибаешься. Это уровень стажера. Тебе в любом случае придется автоматизировать рабочий процесс, заниматься разработкой девтулов и ресерчить. Фазинг тот же, без него вообще никак, 21 век все таки.
Чтобы понимать, как работает процессор. Если не занимаешься реверсингом, то все равно в сложных случаях (многопоток или SIMD) сможешь ускорить работу отдельных участков своего кода вдвое, а то и впятеро.
Куда асм встроить можно? Ну, то есть, в php он же явно не встраивается? На чем можно писать, чтобы можно было делать асмо-вставки?
В оставшихся 5% случаях вопросы не возникают.
Ну вот и поставь, если конкретную книгу читаешь, чтобы потом не бегать и не говорить, что поставил jwasm, а теперь у тебя синтаксис не совпадает и ничего не работает.
если умеешь читать, в том числе доки гуглить, то нет большой разницы какой ставить, я когда разбирадся в FASM'e писал с оглядкой на MASM TASM и прочие примеры
Во вкладках Export/Import в IDA. Открываешь MSDN и смотришь что эти апи делают. Любой компилятор может превратить код в лапшу, если его настроить на такое поведение.
А чем IDA Pro лучше radare2/cutter? Просто последний с легкостью нашел main() в программе, которую ковыряю.
Мы тут не зарабатываем, а развлекаемся. В этот тред идут НАСТОЯЩИЕ программисты с целью поковырять софт или покодить под голую аппаратуру, чтобы вернуться к хуевой работе JS-никами и пыхерами.
https://www.youtube.com/watch?v=5alcfN4aYHo
тут на видосе 14:57. Радар ассемблирует одну инструкцию. Как GNU as вызывать, чтобы он показал во что сассемблирует одну команду?
Или такое исключительно с радаром лишь может прокатить?
Вопросы возникли на 26-й странице книги (да, медленно читаю - туго идет).
Можно ли к памяти обращаться не через шестнадцатеричные, а через двоичные? То есть, вместо:
mov eax, dword [0000027Ah]
написать:
mov eax, dword [00000000000000000000001001111010b]
И второй вопрос, если я здесь напишу вместо dword обычный word:
mov eax, word [0000027Ah]
Что прилетит в регистр eax? 00007A25h? 00000000000000000111101000100101b?
> Можно ли к памяти обращаться не через шестнадцатеричные, а через двоичные?
Компьютеру похуй. Если твой ассемблер позволяет писать mov eax,dword[шестьсот тридцать четыре], то можешь и так писать. Все равно это байтами (битами) станет.
> Что прилетит в регистр eax? 00007A25h?
Ошибка компиляции тебе прилетит. А чтобы не прилетела, тебе нужны movzx/movsx, про которые ты узнаешь позже.
> beginners.re - "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
Это сразу читать или сначала что-нибудь по асму?
По асму и архитектуре компьютера. Но быстро. Коротенькое чё-нить. По фасту. Ищё можно про ОС (виртуальная память, процессы, процедура запуска исполняемого файла и подгрузки библиотек) что-нибудь супер короткое читнуть, но не обязательно.
На другой полке есть более современный учебник. Но там тоже ассемблер какой-то странный.
Спасибо. Ну а с кнутом все давно понятно уже.
>Но опечатки где угодно могут быть. Не переживай. Люди не идеальны.
Так а как мне тогда доверять написанному?
Ну ты же заметил ошибку. Если сомневаешься - всегда можно набросать три-четыре инструкции и затестить на реальной машине.
>ПС. описание команд я бы читал не в учебники а в справочнике по процу. ;)
Ну да, ты бы читал в справочнике. А я читаю в учебнике. Полезность справочников я никоим образом не отрицаю. Но я, человек с ассемблером не знакомый, вижу в нем одни иероглифы. Посылать новичка читать справочники - как-то немношк неэтично.
Смотри, я тебе аналогию приведу. Учишь ты язык, скажем, китайский. Скажем, по книге "Выучить китайский за три недели". Начинаешь читать. Пытаешься въехать в синтаксис, семантику, там какие-то временные конструкции, пёрфект индефиниты - вот это все. Видишь неточность. Иероглиф какой-то не там де надо написан. Идешь на двощ, мол, а тут неточность или так и надо? А тебе говорят, мол, зачем ты ту книжку читаешь, иди словарь зубри. Даже вызубрив словарь от корки до корки, потратив на это бестолковое занятие много времени, ты не выучишь язык. Банально тебе словарь даже не скажет, какие слова часто используются, а какие - экзотика.
>>63452
>Ну ты же заметил ошибку.
Томущо я сижу и вдумчиво вчитываюсь в каждое слово. Чтобы ничего важного не упустить. Названия регистров, флагов и операторов выписываю на листочек, чтобы зубрить их сидя в туалете. Очевидные ошибки/опечатки очевидны. Не очевидные - мигрируют на листочек и далее в память, откуда вычистить их будет проблематично.
>Если сомневаешься - всегда можно набросать три-четыре инструкции и затестить на реальной машине.
Так у меня там не написано, как тестить. Как вывести то, что в регистрах или во флагах. Мне обратно к Калашникову вернуться?
> Ну да, ты бы читал в справочнике. А я читаю в учебнике. Полезность справочни
Более того скажу, я не читал команды до самих примеров, ну по диагонали может пролистывал. А вот прмиер разбирал, и если описание не понятно, то смотрел в команды.
> Так у меня там не написано, как тестить. Как вывести то, что в регистрах или во флагах. Мне обратно к Калашникову вернуться?
Как проверять - ждать пока в книжке до этого дойдут? не проще загуглить? и уже каждый пункт проверять ручками? Хоть в той же ollyDebag открыть любой ехе, и после точки входа, править код и смотреть как что проходит, что в регистры попадает. Я без "пощупать" долго и упорно читать - бросил бы давно.
https://backoftut.gitbook.io/intro-cracking-with-ollydbg/ch-01
> Названия регистров, флагов и операторов выписываю на листочек, чтобы зубрить их сидя в туалете.
зубрить большого смысла нет, команд ОООчень много. При исопльзовании запоминается лучше чем в тупо зубрежку. Можно знать теорию по тому как писать код, но не уметь его писать.
не воспринимай как претензию. Твое упорство достойно похвалы, но не стоит ограничивать только одной книжкой. Обычная практика когда несколько, и что то там что то тут.
> Как вывести то, что в регистрах или во флагах
Для этого придумали отладчики. Запускаешь, синглстепом проходишь свои инструкции и смотришь.
> зубрить их сидя в туалете
Нахуй не нужно. Оно либо логично, либо как с OF в rcl - никем нигде не применяется, а если встретится, можно посмотреть у интела.
Есть ли ревер инженеры тут ?
Предположим у меня есть dll , которая перекрыта vmp . Внутри dll есть функция все что она делает это распаковывает фаил , я хочу написать свой авто распаковщик , и половина уже готова.
Я просто анализирую асм код , и переписываю его логику на java.
Существует ли более легкий способ ?
Например как нить понять что часть кода не используется или он мертвый ?
Вообще любой совет в сторону упращения этого занятия потому что 5к строк кода я уже заебался переписывать.
Декомпиляторы это не жрут если что .
Меня больше интересует сама техническая сторона. Правильно ли начинать с re или нужно сначала что-то другое подучить?
самый простой способ когда влоб заменяют одно на другое. потом учатся разбирать структуры чтоб править не заморачиваясь на длину оригинала. Иногда надо шрифты допиливать. Везде свои ньюансы. МОжешь покопаться на форуме "шедефр" пиратов что русифицировали консольные игры во времена пс1/2/дримкаст. Или на Zog посправшивать
> Вмпротект не распаковывается автоматикой.
Я знаю, проблема не распаковать.
У меня по факту уже есть целый метод на асм , мне его надо просто воспроизвести на java , вообще щас прочитал там как то можно прокси функции написать, с стандартно из через native его вызвать.
>>63922
> даже в иде сишный код не читаем?
Неа, там полный бред. Легче самому по командам читать .
написано что ты хуйня под дос запускаешь не под дос. запусти в досбоксе и будет тебе счастье.
https://ru.wikipedia.org/wiki/DOSBox
а лучше не страдай херней, а займись сразу x32, и практичнее, и с запуском никаких проблем.
тэк. я ошибся. Займись для начала компьютерной грамотностью. А потом уже просто для начала поучись программировать.
потому что последние 2 вопроса были настолько показательные, что мне проще тебя нахуй послать чем пытаться что то объяснять
WinHex?
stack 100h
dataseg
PRIVET db 0Dh,0Ah
db "Privet!"
db 0Dh,0Ah,"$"
codeseg
startupcode
lea DX,PRIVET ; Адрес строки – в DX
mov AH,09h ; Номер функции – в AH
int 21h ; Вызов функции
QUIT: exitcode 0
end
Как сделать так, чтобы вывод не исчезал через милиписечную долю секугды после появления при прохождении строки int 21h? По крайней мере, я замечаю, что в досбоксе что-то на мгновение промаргивает.
Как-то с помощью команды mul это делается, но я не понимаю как.
Короче, уже никак, теперь вопрос другой. Как сделать так, чтобы введённое с клавиатуры число как-то стало BCD числом? Как прилепить первые четыре байта одного регистра на место четырёх байт последнего? Например, у меня есть 03 в DH и 02 в AL, а я хочу, чтобы в AL стало 32 в BCD коде, то есть чтобы правые четыре байта в AL стали 3, а левые четыре байта остались 2.
> Как прилепить правые четыре байта одного регистра на место четырёх байт слева в другом регистре?
Ты несёшь какую-то хуйню. Очевидно же, что числа могут быть любыми, а не только лишь 3 и 2. Я уже сам придумал способ, но тебе про него за твой пидорастический троллинг не скажу.
Я тут понял, что мне просто жизненно необходимо сделать стек однобайтовым, а как я хз.
Стек для однобайтовых значений. Как тебе такое?
ышо раз, ставь Notepade++, и сохраняй в кодировке которую будет понимать Dos, возможно компилятор и штырит от не той кодировки.
Это TASM.
У каждого индивидуальный подход к обучению. Лично я дропнул RE4B в самом начале и приступил к реверсу самой обычной виндовой софтины. В качестве бэкграунда есть понимание основных концепций ОС, архитектуры ЭВМ и компьютерных сетей, небольшой опыт чтения чужого кода на С из гитхаба (не любительской поделки, а используемого обширным сообществом раскрученного проекта), и, собственно, С, С++ и ассемблера.
А у меня по-другому получается.
Я вводу строку и пытаюсь выловить оттуда или /, но в зависимости от того, какая цифра следует за или / я получаю разные значения в одной позиции. Например, 12341234 и для получаю 312Ah, а при вводе 1234/9234 для / получаю 392F. Почему так происходит? Как вообще такое возможно?
Просто я между знаком для чисел стек использую и не понимаю, как из-за этого перед кодом символа оказывается цифра, которая в вводе стоит ЗА этим символом.
>Windows Internals, Part 2, 7th Edition
>Published 4/23/2020
Сдвинули? Мне казалось, что этой осенью.
Да. Уже выше в треде обсуждали
Сдвинули. Алсо, содержание книги известно?
А как тогда сложить 2 BCD числа? И ещё, при отрабатывании daa из AL если по идее должно что-то перенестись в AH, то на деле вообще нихуя не переносится, единица тупо улетает в пизду. Как мне быть? Как же мне сложить два BCD числа из трёх цифр?
Хотя нет, что-то переносится.
НО!
mov AX, 0000000010010000b
add AL, AL
daa
AX = 120, то есть 0000 0001 0010 0000
Почему daa не отрабатывает? Был же перенос единицы в из AL AH
> А как тогда сложить 2 BCD числа?
Не использует никто давно уже эти твои BCD. По крайней мере упакованные.
> Почему daa не отрабатывает?
Потому что ты не умеешь его готовить.
> Был же перенос единицы в из AL AH
Где?
Тебе add/daa CF выставили, дальше ебись как хочешь. Например, ты можешь ебаться так:
xchg al,ah
adc al,0
daa
xchg al,ah
; AX = 4 packed BCD nibbles, CF = carry (если у тебя, например, не из 4 цифр числа, а из 20, ты положишь ax в память, загрузишь следующий кусок и продолжишь).
Сап аноны, знаю С++, хочу вкатиться в RE. Мне надо учить C или нет?
Надо
Так C же от крестов не сильно отличается. Там только выделение памяти подучить и про классы забыть.
Эмулятор в таком случае?
Ты где это вычитал?
>какие сейчас есть живые езины
phrack
Он конечно относительно живой, но к контенту обычно 0 вопросов, можно и подождать.
Эмулятор QUEMI, в ней шиндовфс максимальной версии, что заработает. А уж там что душе угодно.
PoC||GTFO
Правильно понимаю, что x86 почти ушла в прошлое, x64 уходит туда же, скоро будут новые процессоры и обмазываться x86_64 сейчас нет смысла?
> x86 почти ушла в прошлое
Слышал это в конце 90х.
> обмазываться x86_64
Чтобы ознакомиться с любой архитектурой достаточно одной недели максимум. Чтобы написать хелловорлд - одного вечера. Так может стоит ознакомиться хотя бы для общего развития?
Чтобы знать x86_64, нужно знать и x86. Смекаешь? 64 бит никуда не уходят, лет через 20 такой вопрос задавай.
У кого они были? У парочки НИИ? У меня лично не было и не видел чтобы где-то продавались.
Нужно было самому паять по схемам из журналов.
Сложно ли вкатиться к вам полному нубу, который целый месяц по 14 часов будет учить ассемблер и все, что с ним связано?
Для стажёра же.
>Сложно ли вкатиться к вам полному нубу, который целый месяц по 14 часов будет учить ассемблер и все, что с ним связано?
Если ты хотел сказать что в день будешь 14 часов учить асм,то ты пиздабол который в жизни ничего учить не пробовал.если в месяц всего 14 часов,то точно нет
Я и по двадцать часов в сутки в асм марафонил в сосничестве до недели. Лет до четырнадцати вообще организм одаривает бесплатной мотивацией, но да, это явно не его случай. И вопросов на форумах я не задавал таких. И интернета не было почти. Просто краем глаза что-то урвал из сети — и месяцами до дыр перечитываешь.
мимопроходил
просто глянь сам; зачем какие-то прогнозы? понравится - занимайся, никого не слушая
там туториал по асме на арме(на примере 32 битной распбери)
ну и потом разные шелкоды на асме, стак оверфлоу, немножк по хипу
https://azeria-labs.com/writing-arm-assembly-part-1/
всем рекомендую)
вообще не обязательно
начинают с х86 потому как является классическим циск ассемблером, запускается и на 32 и на 64 и система интераптов малька полегче, чем в 64
Не нужна. Зачем воспроизводить алгоритмы, если можно их рипнуть? Почему "без декомпилера" - это что-то хорошее? Ты еще без компа реверсить начни, таблички опкодов, бумажку с ручкой, и вперед, разбирать 50 метров 100 килограмм распечаток бинарника.
> Как рипнуть, если не знаешь устройства
Берешь и копируешь байтики, оформляешь в функцию, функцию вызываешь, ссылки на данные правишь. Есть плагины для иды/оли/x64dbg.
Бамп. Никто не пользуется этим божественным инструментом? Не верю.
hexdump -C "Text File"
00000000 d0 b8 0a |...|
почему?
(никакой защиты нет, давно уже разобрали и написали оболчки - но те кто этим занимается, те еще твари и не хотят ничего объяснять (типа чтобы ботов и хакеров не разводить)
сам-то я такой сякой с++, вот думаю как в это вкатится чтобы прям не с нуля все изучать
выясняешь кодировку utf 8 16 32
смотришь как в этой кодировке выглядит твой символ
ищешь в файле
Это для тебя он мертвый. А для исследователей сетевых протоколов ММО живой.
Берешь и смотришь. http://ref.x86asm.net/
Если программно надо, то берешь любой дизасемблер и внимательно читаешь его документацию.
d0 b8 0a -> 11010000 10111000 00001010:
10000111000 -> 0x0438 ('и')
0001010 -> 0x0a ('\n')
Биты, выделенные жирным - префиксы leading и continuation-байтов в UTF-8, leading-байт говорит, сколько всего байтов в последовательности, а continuation говорит, что он не leading байт. Из остальных битов тупо собирается значение. Подробнее в вики.
> Почему так?
Издержки кодирования инструкций. У тебя может быть только один ModR/M байт, но при этом существует два варианта использования эффективных адресов op [some_ea],reg и op reg,[some_ea]. Чтобы указать, к какому из операндов относится поле r/m в ModR/M, у многих опкодов есть operation direction bit (бит 1). Он определяет, писать ли первый операнд во второй или наоборот второй в первый.
Только с ассемблерной мнемоникой не путай, в мнемонике ассамблер всегда ожидает увидеть целевой операнд слева, а источник справа (во всяком случае, пока у тебя не gas c AT&T синтаксисом). А вот закодироваться это может одним из двух равнозначных вариантов.
О, чувак с отуса. Можешь почитать ститьи Аквилы о заклинании кода и интелловских гномах.
http://www.allasm.ru/proc_15.php
Вопрос по реверсу. Есть одна древняя (2010 года) гуй-программа, в числе прочего принимающая текст в текстовое поле и как-то (кажется через мьютекс, но хз) отсылающая его некоему сервису. Мне требуется отследить процесс формирования сообщения с этим текстом.
Зачем? Потому что в процессе к нему дописывается какая-то двухбайтовая хрень - то ли какой-то самопальный хэш, то ли ещё что, и она уникальна для разных сообщений, причём очень сильно отличается даже для соседних, например "1110" и "1111" дают 0xF227 и 0x33E7 соответственно.
Глобально - мне требуется сделать заглушку, способную посылать эти чёртовы сообщения, а этот типа-хэш не даёт. А надо, как обычно, на прошлой неделе. В асме и реверсе почти ничего не понимаю, если что, потому и принёс вопрос сюда.
Телепаты в отпуске, но вот тебе занимательный факт
>"1110" и "1111" дают 0xF227 и 0x33E7 соответственно
0x1110 xor 0xF227 = 0xE337
Факт занимательный, но средств призвания телепатов из отпуска я не знаю. Выкладывать прогу в открытую на двач/файлопомойку не могу, набутылят.
Почему набутылят? За что?
Тебя не набутылят, потому что законодательство рф прямо разрешает такое использование реверса.
А так давай чему равно сообщение от 0, 00, и так далее. Скорее всего там что-то примитивное.
Разве? про францию помню что реверсить можно. в сша делать копию и модить для себя можно. а про рф не помню. можно ссылку?
Iczelion Это кто?
И где первоисточники его работ можно найти? Где первый сайт, блог, архив итд, что там было 20 лет назад?
спс
только жопа-часы проведенные за этим делом
Шапку читать не умеем? Читаешь бегинерс ре, далее прогаешь пару хеллоуворлдов на асме, решаешь пару крекми, теперь можно подтянуть архитектуру ОС, куришь мануалы, читаешь windows internals, а потом уже само все пойдет. За год справишься.
https://web.archive.org/web/20150822173159/http://www.wasm.ru:80/wault/
Я не знаю, может это для кого-то даже на все золота, просто там все статьи на некоторую дату, а на твоих зеркалах не все точно.
Я думаю, надо сделать зеркало сайта полное с Архивача, причём из снимков разных дат.
Может, уже и готовое ПО есть.
были какие то скрипты, для рипа с вебархива, но они наверно уже не оч актуальны. Но все не так радужно как хотелось бы. Да еще и от мусора почистить как то надо.
Пипец, а какой мусор то? Там даже рекламы, нет наверно.
Прост пишешь в скрипт, чтобы инфа дополнялась, будет добавляться то, чего ещё нет в базе.
там надо будет править все ссылки (но это фигня), вырезать лишнее то что вставил вебархив, ну и отслеживать когда будут попадаться заглушки вместо страниц. Так же там есть ограничение на количество таких вот скачиваний. Помню натыкался как то раз. Если не лень - попробуй. В идеале все хтмлки конвертнуть бы в markdown и на тот же гитхаб залить. По примеру с нарвахой в шапке. (чтоб одним кликом можно было получить себе гитбук с нужными шрифтиками)
Какие действие с двоичными данными у железа самое низкоуровневое? Сложение?
>Сложение?
Я тебе так скажу, все что умеет делать процессор ( ну основное) это складывать.
Если ты вычитаешь\умножаешь (или что-то другое) - он складывает.
>Какие действие с двоичными данными у железа самое низкоуровневое?
Самое время капать глубже, в ALU или же к полевому транзистору, или к катушке. Выбирай сам.
А вообще, я бы советовал свалить с плюсов. Это неблагородное занятие. Жс тоже говно. Подумай об этом.
ушел.
Ах, это не плюсы, а показалось что плюсы. Ну все равно, с асм тоже свалить. Это еще хуже плюсов.
Corporate Investigator, ты?
Печатную машинку видел? Ты печатаешь, и каретка (такая хуйня с бумажным рулоном) сдвигается влево. Так вот 0x0d (\r, carriage return) двигает ее обратно так, чтобы машинка печатала с начала строки. Но этого мало, надо еще прокрутить бумагу на одну строку вниз, иначе ты будешь печатать поверх старой строки, это делает 0x0a (\n, line feed). Изначально это были именно команды для телетайпов, но прогресс шел, и в unix-подобных ОС \n (0x0a) делает оба этих действия одновременно. Но в DOS они работают так, как работали на печатных машинках, т.е., \r возвращает курсор в столбец 1 текущей строки, а \n переносит его на следующую строку.
> Почему они с обоих сторон строки?
Спереди, чтобы сделать пустую строку. На остальные вопросы сам ответишь, если подумаешь.
какой копирайт? чей?тех кто переводил? ну так вроде им самим плевать раз статьи никуда не перезалиты.
Так то перевод без согласия автора тоже нарушение авторских прав)) так что нарушение прав тех кто нарушил права).
и да. ладно бы оно было выложено где то у них на странице и с рекламой (ну предположим), а тут ничего, по сути кануло в летах. Если выложиь на гит, и не тереть копирайты - то нарушения по минимуму. В любом случае нарушаем делая рип :)
Да и делалось оно чтоб люди обучались и "бла бла бла". Завести отдельный акк под статьи и материалы с васма не проблема же.
Я за гитхаб и маркдавн потому что разметка крайне простая, без заморочек, через пандок одним движением перегоняется в любой удобный формат, в гитбук тоже оч удобно - подцепляешь репу с такими страницами и удобная онлайн версия с красивыми шрифтиками и цветами, причем логин можно через тот же гитхаб и не обязательно публичной делать, а только для своего пользования.
На самом деле главное рипнуть. а что с этим делать, всегда можно решить потом. или каждый сделает как ему нравится хД
Погуглил готовые решения, есть целый сервис, до 200 файлов бесплатно, на примере wasm если брать точку отсчет 20150822173159 то что то около 7баксов. Причем можно для рипа задать как точку отсчета, так и конечную дату и собрать самое актуальное за данный период.
тот кто ему отвечал
прчием тут асм тред? это к любому относится)
ну на самом деле он правильные вопросы задает. За публичную репу с даными нарушающими авторские права - сразу бан всего аккаунта. Без возможности забрать что то из своих реп и т.п.
Совсем правильно было бы конечно просто попытаться спросить у тех кто лепил переводы, тем более контакнтые данные вполне себе имеются.
Авторские права на протухшую информацию из нулевых, вы серьезно? Да, прямо сейчас из пепла восстанет сам icezelion или чьи вы там статьи комуниздить собрались и начнет кидаться репортами.
это уже совсем другой разговор, я как бы того же мнения. На мой взгляд учитывая цели для которых делался перевод (предположим донести обучающие статьи для тех кто не дружит с другим языком), то "размножение" при сохранении всех копирайтов (того кто переводил, откуда взят) - только приветсвуется :)
А так, у меня были приколы что люительский перевод / материал вдруг оказывался кем то присвоен и стал авторским.
не у меня, вот тоже видел пример:
https://youtu.be/L17nGGldGvA?t=482
Понятно дело всегда можно сказать "сам виноват", но факт что права утекли.
Говно случается(с)
там же всего 1 патрон
10 за самую полную версию
я б может оплатил,но там либо пейпал,либо карта,а у меня все в битках,а менять такие суммы ну не очень идея
ну вот и ищу чтобы не покупать.отписал в все низкоуровневые треды потому что почему бы и нет.
лол,кому там нахуй нужен пак по низкоуровневому говну типа инжекта дллок?я пока ждать буду пока там кто-то найдется на такое уже умру
я спрашиваю мало ли тут у кого-то есть
Понял. А вот здесь это просто автору так захотелось наставить переходов на строку вниз или здесь есть какой-то сакральный смысл? Просто прямо сейчас у меня нет технической возможности проверить это.
Катись из треда.
Какой же пиздец. Темы блять для вижака, зафоловиться в твиттере, охуеть.
Был тут один ютубер с ником на букву W, позиционировал себя как программист с 7 годами опыта, "индивидуальные" планы для вкатывальщиков делал через патреон. Так вот планы оказались копипастом с паблик инфой, а "уникальную" библотеку с книгами может собрать даже тот у кого интеллекта чуть больше чем у табурета. Вангую, здесь та же ситуация, ничего уникального нет.
Тем более получишь больше опыта, собирая все сам.
А платить за это будет только альтернативно одаренный.
А почему все с W бомбят? Вы думали он вас за 100 баксов на работу устроит в spacex или теслу? Не ахуели ли? Посмотрел слив его планов, вполне себе нормальный контент для ста баксов.
https://cloud.mail.ru/public/4aGL/3EFRUMvq6/
это просто как суппорт скорее
с w другая история,можешь контент сравнить
и ZM он обучающий и код есть
Спс
Да, автору просто захотелось, чисто для оформления, никакого особого смысла.
там на какое только дерьмо не скидываются иногда заради релиза..
но не суть. Недавно помнится хотел поданатить чуваку через патрона, зарегался, привязал карту, подписался на него. А мне патреон "да да, спасибо за всё" и нихуя не списал, везде написано что только в следующем месяце, доступ к контенту был. Попробуй на какую нибудь виртуальную карту проверь. вдруг осталось так.
Извини конечно, но ты какой-то тупой. Иди еще в б тред создай, а что? А вдруг?
Не знаю чего ты там ищешь, но я посмотрел канал этого скрипткидди, весь код гуглится за 1 минуту.
дед,не ругайся,пожалей нуфага
Расскажи почему. Интересно будет послушать.
Как бы достаточно старое и расрпостранненое слово, для мамкиных хацкеров, который только как обезъянки повтораяют по туториалам и не умеют в мат.часть.
Потому что он пиздабол, который обещал индивидуальные планы, а по факту все планы скопипащенные. И кроме планов по ЦС и гейдеву все планы говно, потому что во всем остальном он не шарит (точнее, если в гейдеве и ЦС у него нулевой уровень, то во всем остальном отрицательный).
Ответ на ооочень давний и тупой вопрос для очищения кармы. Это был немножко странный CRC-16, который не удалось с ходу нагуглить. В итоге он был извлечён с сайта https://crccalc.com/ моим, ёбаный стыд, непосредственным начальником. Мораль сей басни такова - не ленитесь гуглить и спите побольше.
Может. Какая ОС? Но вообще ты можешь где угодно просто зааллочить сколько нужно памяти и выставить соответственно RSP, R13 или что у тебя там.
Не процесс, а поток. Да можно. На винде юм стек 1мб по дефолту, км стек 24кб.
Ааа. А почему? Я же не собираюсь никого трогать
https://github.com/zyantific/zydis/releases/tag/v3.0.0
Как можно записать в 32 битный регистр 1 байт из памяти?
Пытаюсь вот так:
mov edi, byte ptr edx
Но fasm меня посылает куда подальше
в AL клади
movzx/movsx, в зависимости от того, есть ли знак у байта.
Если дзен, то почти весь первый том, примерно половину третьего и пару глав из второго. Второй том по большей части - справочник, читать его как книжку не нужно. Главы про эмуляцию FPU/SIMD и весь тот огромный пласт легаси, которые оно с собой тащит, читать не нужно. Алсо, пикрелейтеду не хватает Optimization Manual. Алсо, советую до кучи скачать аналогичные талмуды от AMD и использовать как дополнительный справочник - иногда в них более вразумительное описание, чем у Intel. Алсо, чтобы писать на x86-ассемблере в юзермоде или реверсить код, лучше прочитать один из многочисленных учебников по ассемблеру, а не это.
нахуй тебе это реверс сдался?Сложная работа которая требует огромного багажа знаний,опыта,времени ради 100-150к работы вир аналитиком.
Работа кроме вир аналитка есть,судя по хх,но там надо родиться гением с 5 значным айкью
Ну вот я так же думаю, просто это и интересо, а времени дохуя надо, наверн надо в прогеры вкатится, ток еще язык подискать
В юзермоде я уже умею, хотелось бы пониже спуститься, а там... гипервизоры, поэтому 3 том должен от зубов отскакивать судя по всему. Я вот думаю, стоит ли мне студенту тратить на это время или забить пока что. Optimization Manual тоже скачал уже, спасибо.
Чушь пишешь. Освоить инструменты статического + динамического анализа, выучить x86 асм и можно уже идти джуном малварь ковырять. За полгода вкатиться можно, там уже на практике наберешься опыта. Программировать гораздо сложнее, нужно постоянно что-то оптимизировать, решать нетривиальные задачи и прочее, а здесь все что тебе нужно это расковырять бинарник с использованием набора всем известных тулз.
Вот что требуют в касперском на младшего малваре аналитика
https://hh.ru/vacancy/33222261?query=kaspersky
как писали в чате r0c,зп около 60к и однообразная работа в виде ковыряния говна на потоке и хуячить сигнатуры по форме.
+С нуля за пол года ты вряд ли освоишь все это.год минимум,а в это время надо на что-то кушать
А если ты такой умный что можешь освоить архитектуру винды,винапи,PEшек,Иду,дебагеры,си,асм и проч что они там просят за пол года и устроится в ЛК,то уж лучше идти в прогеры.Там и потолок повыше будет
Этого двачую. Прям мои мысли пишешь. У меня даже идея для стартапа такая. Набрать студентов ситиэфщиков, научить их ковырять малварь и аутсорсить эту услугу как недавно начал делать гиб.
>>89501
В каком году 60к? И где? Во владивостоке вчерашним студентам может и платят по 60к, но точно не в москве.
>гиб
не забудь купить майбах
>В каком году 60к? И где?
Писали что в москве,в,кажется,17-18
Речь про бегениров шла в разговоре,понятно что люди с опытом получают больше
> Набрать студентов ситиэфщиков
Они же нихуя не умеют,не?Ну вот попадется им сэмпл с какими-то неординарными техниками или просто мощной защитой типа вмпрота и что они с ним делать будут?
>не забудь купить майбах
Кстати проиграл с его аргументации. Он бы ещё гелик купил.
>Писали что в москве,в,кажется,17-18
>Речь про бегениров шла в разговоре,понятно что люди с опытом получают больше
А ну тогда норм. Вчерашнему студенту этого хватит чтобы снять хату рядом с водным стадионом и питаться месяц (но только не в местной кафешке каспера) Они ведь обещают релокационый пакет даже новичкам в как раз подходящая зарплата чтобы переманить всех вчерашних студентов в москву (а потом ныть, что на дальнем востоке не хватает людей)
>>89537
>Они же нихуя не умеют,не?
Большинство умеют только сайтики ковырять и реверсом не занимаются. (по моим скромным наблюдениям) Но я думаю, что лет через пять у меня хватит сил найти хороших студентов сколотить команду реверсеров. Со сложным кейсом придут ко мне и я скажу пихать это в песочницы. Прогнать через кукушку посмотреть какие файлы создаёт, загуглить артефакты и найти необфусцированый образец или уже готовый отчёт по этой хуйне, прогнать через публичные сигнатуры в том числе и суриката/снорт чтобы понять что внутри. В этом и прелесть малварного аналитика, что реверс не 100% работы.
Лаб. К это тир1 контора мирового уровня, без каких либо преувеличений, могут себе позволить гнуть пластинку. Вон в ДС/ДС-2 вакансии в dr. web висели все лето, берут всех подряд без опыта, знание x86 архитектуры требуют.
Уже обсуждали в прошлых тредах, из ковыряльщика малвари можно вырасти куда угодно. Хочешь прогать? Можно в команду разработки антивирусного движка перекочевать. Надоела рутина, ковыряние? Можно в ресерч и ораторство перекатиться, итд. Вариантов масса. Из обычного формошлепа на QT ты никогда не сможешь стать востребованным системным программистом, а здесь пожалуйста.
А сколько кстати dr web предлагает по сравнению с каспером? У них же в питере вся команда?
> просто мощной защитой типа вмпрота
Там нет ничего мощного кроме громоздкой вм, которая никак не препятствует анализу поведения сэмпла.
Там не только вм. Слышал, что там антидебаг и самомодификация кода есть. С вмпротектом реально сложно работать.
это ты чушь пишешь. специфичные вещи еще и заоптимизированные компилятором, хрен распознаешь если не знаешь что копать. Если ты не начинал писать на сях плюсах и попутно нонстоп ковырять это дебагером и изучением - то нафиг надо. Как хобби реверс норм. а вкатываться тяжко, прогать проще.
С - говно без ООП, короче, учить только плюсы и остаётся, а остальные языки заметно тормозней и для написания прог не годятся в общем случае.
Антидебаг это защита от школоты, удаленному отладчику нельзя помешать. Вмпрот не может скрыть/изменить поведение вредоносного кода.
Не буду спорить т.к. никогда его не реверсил, но всё равно думаю, что это сложно
Как раз наоборот, в общем случае для написания прог годится что угодно, но не C/C++ из-за низкой скорости и высокой сложности разработки. А C/C++ используют только там, где критически мало ресурсов, т.е. ембеддед, системное программирование, там где надо много считать, гейдев и т.д.
Тем не менее, практически весь качественный софт, которым ты пользуешься, написан на C/C++. Причем обычно на обоих, если считать либы.
ВУЯ - это говно годится только для сраных скриптиков, где не важна скорость работы особо, да вебдевелопинг, но это уже вынужденно.
Ах, да ещё есть Опесоска, но там весь код почти и тем более ВУ - говно чистое.
На плюсах херачат все адекватные проекты.
лол какие маняфантазии) уже давно на Си/Плюсы выносят критически важные по скорости места. А все остаьлное ипшется на чем то адекватном. на чем сложнее выстрелить себе в ногу, приятнее и удобнее писать.
Взять тот же дотнет - можно сразу же скомпилироваться из CLR в нативный код, причем под конкретный процессор (см ngen).
На шарпе можно впринципе писать очень эффективный код, настолько что выносить что то в либы написаные на плюсах надо в крайне редком случае.
https://habr.com/ru/post/165729/
>практически весь качественный софт, которым ты пользуешься, написан на C/C++.
Сайты, которыми я пользуюсь, написаны на js + какой-то бэкенд, и очень редко это плюсы.
Приложения на айфоне, которым я пользуюсь, написаны на Objective C или Swift.
Приложения на андройде написаны на жабе или чем-то еще, редко на плюсах.
Что написано на плюсах? Рантаймы и компиляторы остальных языков, Оси, игрушки и легаси десктоп. Даже десктоп все меньше пишут на плюсах, дискорд и VS Code написаны на js и ничем не уступают аналогичным приложениям, написанным на плюсах.
Практически весь? Очень сомнительно. Значительная часть? Да. Стоит ли писать что-либо на плюсах, если ты не системщик и твое приложение не должно запускать ракеты в космос? Нет. Единственный плюс крестов -- это скорость, в остальном одни минусы -- слабая типизация, утечки памяти, et cetera.
>>90009
>ВУЯ
Чего блять?
>На плюсах херачат все адекватные проекты.
Адекватные чему именно?
>дискорд и VS Code написаны на js и ничем не уступают аналогичным приложениям, написанным на плюсах.
https://www.youtube.com/watch?v=Q5glfpSXUeE
>Приложения на айфоне, которым я пользуюсь
Это было достаточно.
Всю остальную пидарастическую хуету можно было не писать
С++ как раз самый пидорский язык.
Он весь пронизан гомосексуальной эстетикой, примерно как передача вечер с Владимиром Соловьевым, где бумеры срутся, обсуждая в стопицотый раз Украину, а за кулисами дрочат хуй и суют пальцы в жопу друг другу. Так и плюсовики, это обычно бумеры за 30, которые сначала дрочат байты, а потом долбятся в зад на перекуре. И те, и другие занимаются максимально уебищным неинтересным хобби, чтобы не дай бог в их тусовочку попал натурал или что еще хуже женщина. Так геи находят друг друга и создают барьер, отделяющий их от мира грязных гетеросексуалов.
> Единственный плюс крестов -- это скорость, в остальном одни минусы -- слабая типизация, утечки памяти, et cetera.
Система типов С++ уступает разве что хаскелю и расту, и то, как посмотреть.
Гетераст порвался.
Мань, это ты просто неосилятор. На С++ сейчас пишут абсолютно ВСЕ.
https://youtu.be/LZflL44SVVY
Плюсовики собрались вместе и доказывают друг другу, что они кому то нужны. Само существование такого доклада на конференции по C++ скорее доказывает то, что незаменимость C++ -- это миф, чем обратное.
Изучаю ассемблер nasm.
Делаю
mov al, [source]; source объявлен в data как: source dw 30
Через gdb в SASM проверяю al - там лежит 30, в ah - 0.
Как так получилось, ведь word - 2 байта, а al - 1 байт?
При этом если
mov al, word 30 ;выдаёт mismatch in operand sizes
Книг пока не читал, решил проверить инфу с какого-то сайта, где есть раздел по асм.
Ну короче насм - это недоассемблер, поэтому позволяет тебе это скомпилировать. А процессору, который этот код исполняет, глубоко похую, как ты там свою source задекларировал (до него такая информация вообще не доходит), он видит инструкцию чтения в 8-битный регистр (1 байт) из памяти по какому-то адресу. Вот он и читает первый байт source. А так как числа хранятся в little endian (младший байт первый), то первым байтом оказывается этот самый 0x1e (30).
Получается, я просто заслал малое число в al, поэтому оно заняло 1 байт, а второй остался пустым и это не повлияло на результат? Сейчас заслал число больше 255, в al кусок числа - младший байт, а старший проебался? В ah видимо не ложится, там 0.
Так ah и al - регистры по байту. Хз, может второй байт в ah ушел, похерив там что-нибудь. Но я уже проверил, что ah это вообще не касается. Данные проебались. Спасибо за ответы на тупой вопрос.
Возьми отладчик и посмотри, что там куда записалось. Ахуеваю с таких реквестов в стиле: ВОТ ВАМ МОЙ ГОВНОКОД, ЧТО ТУТ ПОЛУЧИЛОСЬ, ПОЧЕМУ ОШИБКА, памагите.
>Сайты, которыми я пользуюсь, написаны на js + какой-то бэкенд
И работают как говно, сжирая гигабайты ОП вникуда.
>VS Code написаны на js и ничем не уступают аналогичным приложениям, написанным на плюсах
По скорости и потреблению ресурсов вскод сосёт у саблайма.
>И работают как говно
Работают намного лучше, чем байтоебские поделия крестовиков, которые работают только тогда, когда их пишут сеньоры с десятилетним опытом по несколько лет, вылавливая все утечки памяти и сегфолты.
>сжирая гигабайты ОП вникуда.
Мне ОП хватает, сколько гигов серверсайд жрет -- мне похуй, не мое дело.
>вылавливая все утечки памяти и сегфолты.
Такая толстота, пиздец... Ещё и в асм треде... Ахуеть
А почему АСМ-кодеры? Да потому что АСМ-программистов давно в природе не существует...
Кодер - хуёвый программист. Программист - хуйвый разработчик. Разработчик - хуёвый проект менеджер. Проект менеджер - хуёвый директор.
Как-то так...
а директор?
https://geosn0w.github.io/j/bookreader/thebook.pdf
Знаю людей которые уже собрали деньги и будут покупать у него 3 части.
Могу скинуть, если хочешь - можешь оставить телегу.
>Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС
Это делается на Си в большинстве случаев.
Если делать это на ассемблере, то потом прошивку/ОС, драйвер невозможно будет перенести даже между процессорами одного семейства(не говоря уже о разных), так как набор инструкций разных процессоров отличается.
Си в своё время и придумали, как "межплатформенный ассемблер".
Спасибо, кэп! Поздравляем вас с присоединением к треду!
> прошивку
Всегда разрабатываю железку на одном микроконтроллере, а потом переношу на микроконтроллер их конкурентов. Люблю, понимаешь, онанизм мазохизм. И похуй, что 80% кода в МК - это ебля регистров или либы поверх них.
> между процессорами одного семейства
> так как набор инструкций разных процессоров отличается
Посоны, оказывается код для Pentium на Intel Core не зоработает. Что делать, как жить?
писать под современные процы на асме - это лютый бред. асм нужен уже когда отлаживаешь и т.п. компилятор в 99% оптимизирует лучше
Никто не пишет малварь на асме, выходной бинарь легче анализировать, чем высер компилятора.
а какие скиллы тарщ майор?
Вставки пишут. Например код для инъекций бывает на асме.
Какие трапы в RE
С подключением интернета блять
>компилятор в 99% оптимизирует лучше
Кстати, откуда пошло это поверье? Что тут конкретно имеется в виду? Как доказывается?
да не поверье, комипляторы разрослись до таких монстров не просто так, а именно чтоб лучше работать с кодом.
компилятор чаще сделает лучше чем если бы ты пытался на асме юзать на полную все регистры и полностью возможности х32/64
ну а лютое говно ничто не победит конечно же :)
остаются всякие тяжелые числодробилки тут компилятор может и не справиться, там если грамотно развернуть математические вырожения, и как следует знать проц - можно всё чётенько разложиьт по регистрам и добиться оч нехуевого выйгрыша. Яркий пример дискретное косинусное преобразование, его реализуют с применением быстрого преобразования Фурье еще и разносят так чтоб хорошо ложились на суперскалярность.
настоящая оптимизация = хитрые (математические) алгоритмы, обычно лишь такое дает здоровский прирост, так чтоб в пару раз или больше.
Дополню тебя тем, что математику можно завернуть в функцию и вызывать из того же сишного кода, целиком проекты на асме почти никто не пишет.
Я уже кидал эту няшу.
https://www.hex-rays.com/products/ida/7.4/index.shtml
HexRays:
https://www.hex-rays.com/products/decompiler/v74_vs_v73.shtml
Годнота, ящитаю. Осталось дождаться слива.
гидра
Первый ковырять бинари в статике не запуская, пытаться сгенерить подобие С кода если говорить про ХексРеевский декомпилер. Второй, если нужно отладить софт в процессе его работы, так сказать на живую.
inb4 покормил
Может в треде присутствуют счастливые обладатели новой версии декомпилера. Проверьте, С++ классы теперь автоматически собираются?
https://www.youtube.com/watch?v=o-FFGIloxvE
Отладчик. Снимаешь трассу и анализируешь. Ставишь бряки на нужные апи и анализируешь. Читать любую книгу по анализу малвари.
Зачем сразу малварь? Вон пусть протекторы старые поковыряет.
Начнет с аспра, потом до марадиллы дойдет, а там уж и фемида с вмпротом, как малварщики любят.
Практиковаться можно и нужно на протекторах, ты прав, но я не видел литературы по распаковке. В книгах про малварь обычно есть такой пункт. Также есть бесчисленное кол-во гайдов и статей на эту тему в гугле.
апач не достаточно свободный?
ИНВЕРСИЯ
Или в любом случае для начала на vbox придется что-то ставить?
обстарфорсился.
Мне просто интересно: существуют ли русскоязычные мануалы по современным процессорам, в которых описаны регистры, команды и как программировать многоядерность?
На английском мануал интел и документация конкретного ассемблера.
В мануалах интела все есть. 10 томов на овер 10к+ страниц мелким шрифтом. А амуды тоже что-то свое есть.
>10 томов на овер 10к+ страниц мелким шрифтом
пиздец,кто это говно пишет.Это же надо угробить целую жизнь,при том не одного человека,а 10-20 чтобы такую срань написать
документаций вижуал си++ компилятора почти 30к страниц
Так можно и про стройку сказать. Это же надо угробить целую жизнь, при том не одного человека, а ДОХУЯ людей чтобы такую срань построить.
>>97649
https://software.intel.com/en-us/articles/intel-sdm
А как искать и в чем?
Документацию написать не сложнее, чем разработать архитектуру, потому что ее пишут параллельно разработке архитектуры. Да и без документации она нахуй не нужна, иначе не понятно, как писать компиляторы и оси.
Как же я проиграл. Запускать ком под виндой х64.
Я еще слишком молод и шутлив для этого всего.
Есть ли сайты по изучению ассемблера с какими-то заданиями и проверяющей системой. Очень доставил подход сайта overthewire, чтобы получить доступ к следующему уровню нужно выполнить предыдущий. Собственно ради него я и хочу поднять ассемблер т.к. многие уровни там требуют базовые и продвинутые навыки ревеса и понимания низкоуровневщины.
Сам имею нулевой-начальный уровень, х
Почему нет новых книг на эту тему?
Но для меня это макось и айось. Собственно так же и ради изучения их внутреннего устройства я полез в низкоуровщину.
Не могу найти норм материалов по сабжу. Знаю Си, немного плюсов, асм х86 и основы сетей + программирование сокетов
В чем проблема?
https://pastebin.com/e7ZzDKGk
В машинном коде к регистру ESP прибавляют 0xffffff80, это на 127
меньше чем 0xffffffff, но вопрос не только почему 127, почему по сути стек растет с конечных адресов. Это норма? Я думал он со середины куда-то растет(к уменьшению или к увеличению)
https://pastebin.com/69BBJeLa
Вы видите копию треда, сохраненную 4 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.