• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Как правильно изучать malware-кодинг под Windows

Я в курсе, я о том, что при разработке нужно в первую очередь думать о корректной работе софта, а не о скорости исполнения или количестве аллокаций.
Совершено верно. Для этого надо понимать, что делает код и осилить 2000 страниц стандарта o_O Тогда там на автомате был бы array, а потом он смог бы показать примеры кода, когда его попросили. А так он ляпнул "здарова дитишки я учитиль рускава езыка" и пропал.
 
Решил запилить некий "roadmap" из статьи Кваки, приправив своими никому не нужными пунктами. На мой взгляд, получилось миленько.
Помимо документа здесь, я закинул еще на мегу, может кому-то пригодится без ватермарки.

Посмотреть вложение 30729
Охренел с рекомендации - изучать досовский асм. Это вообще как? Это все равно что совет изучать линуксовский ц++. Писец такое увидеть на ночь глядя. Почему то, вспомнился наш любимый Инде, который в каком то из инсепшенов лет наверное 5 назад пизданул что стоит сосредоточить усилия на изучении архитектуры х64 потому что за ней будущее.
 
Врывайся сразу в NT со всеми возможными расширениями команд, что уж там. Если есть более конструктивные предложения или критика, а не приплетание анклавозависмого - милости прошу, я не против.
До вас даже не дошло. Хорошо разжую - асм это язык программирования, сильно зависит от архитектуры процессора, бывает асм например для зилог80, НО НЕ БЫВАЕТ асм под дос, виндовс и тд, асм это асм, операционка это операционка. Мягкое и теплое не надо путать. Код на асме под винду на арм будет сильно не похож на код на асме под ту же винду на х64. Конструктивное предложение - думайте прежде чем давать советы. Про расширения команд для нт даже спросить боюсь, че это такое.
 
Не обязан читать ваши мысли через монитор, да и не умею я, вроде.


Изначально имелось ввиду изучение асма, тыкая его палкой в досовском эмуляторе. Конечно, я извиняюсь, если возникли недопонимание в этом плане, тут тоже моя оплошность. Однако, до этого можно (как я думаю) допереть самому через n кол-во времени.
Странная придирка, конечно.
То есть, мой поясняющий пример про линуксовский ц++ вам через монитор тоже не почитался. Допереть имхо было не сложно но вы не справились, наверное n времени не хватило. Давайте уже жгите про расширения осемблерных команд в NT, будем врываться и поднимать скилл.
 
Ну и душнила же ты, друг :(
Да ладно не парься, я же так по дружески. А вообще за совет кодить на асме под дос надо бить.
 
Да ладно не парься, я же так по дружески. А вообще за совет кодить на асме под дос надо бить.
На самом деле - довольно таки хорошее предложение, если человек банально не сможет осилить хотя бы минимальные знания о том как устроены программы на Dos написанные на ASM (хотя бы на уровне работы с регистрами 8/16/32 (64 - можно для начала оставить в покое)) то ему совсем не следует лезть в написание Malware и засорять рынок низкокачественным ПО

И на самом деле довольно таки грубое выражение благодаря которому можно начать холивар и с которым одновременно можно быть согласным и не согласным если вспомнить о masm32 благодаря которому можно написать (простое) приложение не затрагивающее (WinApi/etc.) которое будет одновременно хорошо работать на всех win системах начиная с dos и заканчивая win 11 (офк если архитектура x86)
НО НЕ БЫВАЕТ асм под дос, виндовс и тд, асм это асм, операционка это операционка.
 
Последнее редактирование:
Асм под ДОС - набор команд x86. Плюсы: удобно и просто вызывать функции ОС через прерывания, есть старые толковые книжки (Финогенов и др.). Минусы: придётся забивать голову сегментными регистрами и прочей малополезной инфой, а потом переключаться на изучение актуального режима.
Асм под ВинДОС - наборы команд IA32 или AMD64. Плюсы: плоская модель памяти, в 64-х разрядном режиме достаточно регистров общего назначения, SSE вместо FPU, адресация относительно instruction pointer. Минусы: придётся немного вкурить формат Portable Executable, как происходит импорт и вызов функций.
Асм под Уних - набор команд AMD64. Плюсы: см. выше, плюс вызов сервисов ОС аналогично ДОС (и понимание ELF на первых порах необязательно). Минусы: Неуловимый Джо.
 
Не буду устраивать холиваров тем более что не с кем. Ну какие могут быть холивары с теми кто советует откопать говно мамонта что то под него делать, откопать мёртвые компиляторы, откопать мёртвые отладчики, дайте ка вспомню что я там юзал под досом - turbo debugger, avputil.com, deglucker, последний кстати мог в прот моде даже как то работать но корявенько, ах да вроде и софт айсом можно было что то делать, и вроде бы как даже в dos dpmi(int31h) он себя норм чувствовал.

Короче всех кто советует откопать все это говно и тратить время на изучение как оно там работает - шлите на хрен. Изучайте всегда самое актуальное, не тратьте время на изучение и освоение ненужного, время ценно. Если вам кто то будет рассказывать что, асм легче учить программируя под дос то это либо совсем дурак, либо транслирует где то прочитанную бредятину, либо вредитель.
И да не используйте масм, это во первых говно, во вторых дохлое.
 
Не буду устраивать холиваров тем более что не с кем. Ну какие могут быть холивары с теми кто советует откопать говно мамонта что то под него делать, откопать мёртвые компиляторы, откопать мёртвые отладчики, дайте ка вспомню что я там юзал под досом - turbo debugger, avputil.com, deglucker, последний кстати мог в прот моде даже как то работать но корявенько, ах да вроде и софт айсом можно было что то делать, и вроде бы как даже в dos dpmi(int31h) он себя норм чувствовал.
Чьорт, я это не только помню, но и юзал активно... :D
Ещё "удалось" недавно пощупать Open Watcom Debugger. После Olly и x64dbg - это было больно.
 
Чьорт, я это не только помню, но и юзал активно... :D
Ещё "удалось" недавно пощупать Open Watcom Debugger. После Olly и x64dbg - это было больно.
Ну так не проходите мимо, пните умных советчиков. Ведь реально надо пиздить за такие советы.
 
И да не используйте масм, это во первых говно, во вторых дохлое.
Какой ассемблер посоветуете учить, после С? В интернетах вроде хорошие отзывы о FASM. По масму кстати недавно книга вышла "The Art of 64-Bit Assembly", через нее можно выучить современный масм, а не под дос
 
Какой ассемблер посоветуете учить, после С? В интернетах вроде хорошие отзывы о FASM. По масму кстати недавно книга вышла "The Art of 64-Bit Assembly", через нее можно выучить современный масм, а не под дос
Фасм. Но фасм\масм это не ассемблеры а компиляторы. Ц изучать не советую, учите плюсы не тратьте время на то что давно устарело.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
И да не используйте масм, это во первых говно, во вторых дохлое.
в каком месте масм дохлый? Я лично за масм. В фасме плюс в более мощном макроязыке, и только.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
К FASM'у за угарными макросами, FASM или NASM или YASM имеет смысл учить, если нужна какая-то кроссплатформенность, GAS - если ты дохера линуксоид, MASM - если вообще похер на все кроме венды.
 
в каком месте масм дохлый? Я лично за масм. В фасме плюс в более мощном макроязыке, и только.
А еще фасм идет с сорцами и умеет вот так =)

scodetest.asm:
org 7c00h
use16
mov ax, 1
use32
mov eax, 1
use64
mov rax, 1

FASM.EXE scodetest.asm

scodetest.bin
0xB8, 0x01, 0x00, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x48, 0xC7, 0xC0, 0x01, 0x00, 0x00, 0x00

Еще у него есть сообщество активное, регулярные обновления, есть ветка для арм.

А еще вы забыли рассказать чем масм лучше фасма помимо того что у фасма лучше макроязык.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
и умеет вот так =)
уметь то умеет, вопрос в том, где оно нужно, кроме HG ?

преимущества масм ...
1. интеграция с visual studio, берешь и пишешь там асм код, а студия компилирует. Да, понятно что можно слинковать и фасмовский объектник, но все же масм тут удобней.
2. поддержка от Майкрософт, ml.exe вполне себе развивается , там есть поддержкa AVX и подобного. Если же под "мертвым" вы имели ввиду masm32 (пакет от Хатча), так тоже мимо - он сделал 64 битную версию.
3. для масм гораздо больше инклудов и примеров. Понятно, что все можно переконвертировать и переписать, но на начальном этапе это важно - по крайней мере я 11 лет сделал выбор в сторону масм именно из-за этого.
p.s. кстати, еще есть UASM - масм синтаксис, но возможности почти как в фасм.
 
Масм синтаксис тошнотен, но это конечно вкусовщина. Фасм гибче, более открыт, есть для арм. Для студии в настройках выбираем Custom Build Tool. Икнлюды это так себе аргумент за масм. Кстати org 7c00h намекал на мбр =)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Масм синтаксис тошнотен, но это конечно вкусовщина
AT&T синтаксис в GAS'е - вот это тошнотная херня, а разница в синтаксисах других ассемблеров не настолько критичны. На да, я за FASM, тк зачем выбирать меньшее, если можно выбрать большее.
 
И да не используйте масм, это во первых говно, во вторых дохлое.
Ну камон, ещё раз повторюсь, изучать асм под Дос - исключительно для того что бы понять как всё работает, офк дальше нужно смотреть на актуальную версию win и смотреть как там всё прямо сейчас дергается в WinApi/Nt/etc...
А по поводу цитаты - вновь ничем не подкрепленное изложение мысли, программы написанные на масм лет 20 назад отлично и производительно работают и сейчас.
Хотелось бы конечно что-то ещё добавить, но к сожалению Quake3 всё отлично изложил.
Но искренне не понимаю ваше негодование по поводу того что вы затрагиваете Arm в этой теме, когда изначально имелось ввиду разработка Malware на Win x86 если взять в учет что Win на Arm скорее мертв чем жив
 
1. интеграция с visual studio, берешь и пишешь там асм код, а студия компилирует. Да, понятно что можно слинковать и фасмовский объектник, но все же масм тут удобней.
То есть речь о проектах, где существенная часть реализована на Си или Плюсах. Разве интринсики https://docs.microsoft.com/en-us/cp...-listing-of-intrinsic-functions?view=msvc-160 не покрывают 99% в подобных сценариях? На асме получается несколько файликов, так там не важно, какой синтакисис, надо будет, так и GNU as сойдет. К примеру, в ontl из более 100 тысяч строк всего 95 в файлах *.asm. Это не малвара, но достаточно низкоуровневая библиотека, реализует в т.ч. рантайм плюсов (правда, несколько устаревшего стандарта).
Вот весь "ассемблер", что потребовался там для IA32:
Код:
.386
.model flat

?catchguardhandler@cxxrecord@cxxruntime@ntl@@SA?AW4disposition@exception@nt@3@PAUrecord@563@PAUregistration@563@PAUcontext@63@PAUdispatcher_context@563@@Z PROTO SYSCALL
.safeseh ?catchguardhandler@cxxrecord@cxxruntime@ntl@@SA?AW4disposition@exception@nt@3@PAUrecord@563@PAUregistration@563@PAUcontext@63@PAUdispatcher_context@563@@Z

Если говорить о малвари, предположим гипотетический jpg, который при движении поверх него мышкой в Проводнике внезапно вызывает MessageBox(). Как это сделать на masm? Никак, потребуется написать ещё какие-то утилиты. fasm позволяет собрать файл картинки и поксорить код одноразовым блокнотом.
Или вот HelloWorld, сразу даёт некоторое представление о таблице импорта:
Код:
; Example of making 32-bit PE program as raw code and data

format PE GUI
entry start

section '.text' code readable executable

  start:

    push    0
    push    _caption
    push    _message
    push    0
    call    [MessageBoxA]

    push    0
    call    [ExitProcess]

section '.data' data readable writeable

  _caption db 'Win32 assembly program',0
  _message db 'Hello World!',0

section '.idata' import data readable writeable

  dd 0,0,0,RVA kernel_name,RVA kernel_table
  dd 0,0,0,RVA user_name,RVA user_table
  dd 0,0,0,0,0

  kernel_table:
    ExitProcess dd RVA _ExitProcess
    dd 0
  user_table:
    MessageBoxA dd RVA _MessageBoxA
    dd 0

  kernel_name db 'KERNEL32.DLL',0
  user_name db 'USER32.DLL',0

  _ExitProcess dw 0
    db 'ExitProcess',0
  _MessageBoxA dw 0
    db 'MessageBoxA',0

section '.reloc' fixups data readable discardable    ; needed for Win32s

Ну камон, ещё раз повторюсь, изучать асм под Дос - исключительно для того что бы понять как всё работает
Вон те две строчки выше входят в множество "всё"... и? Как же оно работает? :)

Изучение асма под ДОС начинается следующим примером, поскольку это простейший код
Код:
; fasm example of writing 16-bit COM program

    org    100h            ; code starts at offset 100h
    use16                ; use 16-bit code

display_text = 9

    mov    ah,display_text
    mov    dx,hello
    int    21h

    int    20h

hello db 'Hello world!',24h
и заканчивается словами "а в следующий раз 16-ти разрядный режим нам понадобится лет через 5 при знакомстве со страшным словом SMI".
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх