Публикации по теме 'assembly'


Статья о разнице между пространствами имен и сборкой
Что такое пространства имен Пространство имен — это группа семантически связанных типов, содержащихся в сборке или, возможно, распределенных по нескольким связанным сборкам. Например, пространство имен System.IO содержит типы, связанные с файловым вводом-выводом, пространство имен System.Data определяет базовые типы баз данных и так далее. Важно отметить, что одна сборка может содержать любое количество пространств имен, каждое из которых может содержать любое количество типов. Что..

Сборка Haiku x86: привязка шеллкода оболочки
После написания программы «Hello, World» на ассемблере, а затем некоторого простого шелл-кода, который выполняет /bin/bash , мой следующий проект — создать шелл-код для связывания. Мой план атаки следующий: Создайте оболочку привязки в C Создайте оболочку привязки в сборке Преобразование оболочки привязки сборки в шеллкод Протестируйте шелл-код Создайте оболочку привязки C Первым шагом в создании нашего шелл-кода является создание оболочки привязки на C. Сделав это, мы можем..

Полезные регистры в сборке
Как человеку, который время от времени выполняет обратное проектирование двоичных файлов, будь то в целях анализа или для CTF, может быть трудно вспомнить назначение многих регистров, особенно учитывая, что большинство инструментов дизассемблирования не дают понять, какие регистры что делают. Вот краткое изложение того, что делают некоторые из наиболее распространенных регистров и для чего используются определенные блоки кода: 32-битные регистры EIP Вы, вероятно, не увидите EIP..

Сборка здесь, сборка там
global start section .text start: mov rsi, msg mov rdx, msg.len mov rax, 0x2000004 ; write mov rdi, 1 ; stdout syscall mov rax, 0x2000001 ; exit mov rdi, 0 syscall section .data msg: db “Hello, World!”, 10 .len: equ $ — msg Или просто: print(‘Hello, world!’) Бьюсь об заклад, последний выглядит намного проще. Но несмотря на то, что первый код (предупреждение о спойлере - код ассемблера) уже не часто используется и в нем пишет лишь горстка людей, он по-прежнему актуален..

Что происходит, когда вы вводите gcc main.c
GNU? представляет собой операционную систему ​​и обширный набор компьютерного программного обеспечения. GNU полностью состоит из свободного программного обеспечения , большая часть которого распространяется под собственной Стандартной общественной лицензией Проекта GNU ( GPL ). Язык программирования C? является универсальным , процедурным компьютерным языком программирования , поддерживающим структурированное программирование , область действия лексической переменной и..

Отладка случайного поведения программы
Я смотрел на странный coredump на днях. Из ядра программа пыталась записать в виртуальный адрес 0x6 и вылетала на memcpy . Там кусок кода выглядит так if (a == 1) { do_foo(); } else { do_bar(); } И из дампа ядра a действительно 1 . Однако выполнение взяло ветвь else и разбилось на memcpy в do_bar . Дизассемблировал код в gdb с помощью disassemble /s . Это намного лучше, чем просто disassemble или даже disassemble /m . С оптимизацией времени компоновки..

Вопросы по теме 'assembly'

`testl` eax против eax?
Я пытаюсь понять некоторую сборку. Сборка следующая, меня интересует строка testl : 000319df 8b4508 movl 0x08(%ebp), %eax 000319e2 8b4004 movl 0x04(%eax), %eax 000319e5 85c0 testl %eax, %eax 000319e7 7407...
83568 просмотров
schedule 25.02.2024

Расположение памяти MASM32
Я пытаюсь читать из основной памяти, используя сборку masm32, и для этого я создал (как ранее рекомендовалось в ответе на другой мой вопрос здесь) массив, который будет содержать сильно разделенные области памяти (чтобы избежать чтения из кеш). Мне...
2513 просмотров
schedule 23.09.2022

Как перевести байт push NASM в синтаксис GAS?
Я «портирую» исходный код NASM на GAS и обнаружил следующие строки кода: push byte 0 push byte 37 GAS не допускает "push byte" или "pushb". Как мне перевести приведенный выше код в синтаксис GAS? Спасибо
4547 просмотров
schedule 14.08.2022

x86 перейти к адресу
В качестве назначения для класса безопасности я пытаюсь использовать __asm__("jmp 0xbffff994"); в своем коде, но когда я разбираю вещи в gdb, инструкция меняется на jmp 0xc8047e2a . Любая идея, почему и как я могу перейти к определенному адресу?
19518 просмотров
schedule 14.01.2024

Программа MIPS для определения прохождения / непрохождения тестов
Я пишу программу MiPS, которая проверяет список из 15 результатов тестов. И это будет ввод с терминала. Критерий прохождения - 50 баллов. Выводы на терминал будут включать баллы в каждой категории и количество сдавших и не сдавших экзамен студентов....
2257 просмотров
schedule 02.08.2022

Ограничения синтаксиса сборки Intel по сравнению с AT&T
Для меня синтаксис Intel намного легче читать. Если я буду бродить по лесу сборок, сосредоточившись только на синтаксисе Intel, я что-нибудь упущу? Есть ли какая-то причина, по которой я хотел бы перейти на AT&T (кроме возможности читать сборки...
39516 просмотров
schedule 02.12.2023

Добавление ведущих символов подчеркивания к символам сборки с помощью GCC на Win32?
У меня есть фрагмент кода C, который вызывает функцию, определенную в ассемблере. В качестве примера предположим, что foo.c содержит: int bar(int x); /* returns 2x */ int main(int argc, char *argv[]) { return bar(7); } И bar.s содержит...
22284 просмотров
schedule 26.07.2022

как работают вызовы процедур на ассемблере?
Я только начал возиться с ASM, и я не уверен, правильно ли я понимаю вызовы процедур. скажем, в какой-то момент в коде есть вызов процедуры call dword ptr[123] и процедура состоит всего из одной команды, ret: ret 0004 каков будет...
16688 просмотров
schedule 05.04.2024

Как я могу загрузить значения из памяти, не загрязняя кеш?
Я хочу прочитать ячейку памяти, не загрязняя кеш. Я работаю на машине X86 Linux. Я попытался использовать инструкцию ассемблера MOVNTDQA: asm("movntdqa %[source], %[dest] \n\t" : [dest] "=x" (my_var) : [source] "m" (my_mem[0]) :...
1798 просмотров
schedule 11.11.2022

Какая 32-битная/64-битная архитектура ЦП имеет самый простой набор инструкций?
Я чувствую себя очень комфортно, работая с 32-битным ассемблером PowerPC, но совершенно теряюсь, когда пытаюсь разобраться в коде x86. Имеются ли какие-либо другие распространенные архитектуры, такие как ARM, MIPS, Sparc и т. д., более простой, чем...
3981 просмотров
schedule 31.01.2024

Вопрос по сборке сопроцессора Intel x86
У меня возникли проблемы с пониманием того, как получить результат вычисления, выполненного с использованием сопроцессора Intel x86. Пожалуйста, обратите внимание на следующий сегмент данных. .data res real4 ? x real4 5.0 k real4 3.4 и...
757 просмотров
schedule 26.10.2022

Как писать в консоль в fasm?
Я исключительно новичок в сборке. Я только вчера взял его в руки и просмотрел много примеров и до сих пор не могу понять для себя, как писать в консоль. Я всегда получаю сообщение об ошибке, когда мне кажется, что я копирую его по-своему.
9521 просмотров
schedule 04.07.2022

Как сдвинуть двоичное число, заполнив MSB 1?
Есть ли в MIPS способ сдвинуть двоичное число (0000), заполнив его старший бит 1 (1000 и в следующий раз 1100 и в следующий раз 1110 и т. д.) каждый раз?
633 просмотров
schedule 23.10.2022

Компилятор: перевод в сборку
Я написал интерпретатор для своего экспериментального языка и знаю, что хочу продолжить и написать для него небольшой компилятор. Вероятно, он возьмет исходный код, выполнит те же действия, что и интерпретатор (токенизатор, парсер), а затем переведет...
454 просмотров
schedule 18.10.2022

Как язык ассемблера взаимодействует с чем-то вроде Интернета?
Итак, на днях я думал о языках, и меня поразило, что любая программа, написанная на скомпилированном языке, который взаимодействует с Интернетом, затем транслируется в сборку, которая должна взаимодействовать с Интернетом. Я только начал немного...
5667 просмотров
schedule 03.03.2024

Оптимизация количества команд сравнения (PDP-11)
Для PDP-11, как я могу изменить следующий фрагмент сборки так, чтобы это были только две инструкции, но они работали так же, как эти четыре? tst r0 blt label cmp r0, #75 bgt label
510 просмотров
schedule 22.04.2024

Что находится в стеке 68000, когда классическая MacOS входит в программу?
Я пытаюсь понять точку входа в старое классическое приложение Mac. Я дизассемблировал первый ресурс CODE (не CODE#0, который является таблицей переходов). Код ссылается на некоторые переменные вне стека: слово по адресу 0004(A7), массив длинных...
597 просмотров
schedule 15.11.2022

программа asm не работает (nasm)
org 0x100 SEGMENT .CODE mov ah,0x9 mov dx, Msg1 int 0x21 ;string input mov ah,0xA mov dx,buff int 0x21 mov ax,0 mov al,[buff+1]; length ;string UPPERCASE mov cl, al mov si, buff cld loop1:...
716 просмотров
schedule 06.11.2023

Сборка ARM - Инструкция по ответвлению
Присматриваю какую-то сборку для запуска какой-нибудь прошивки, работающей на ARM-процессоре. Определена следующая таблица векторов исключений: LDR pc, =resetHandler LDR pc, Undefined_Addr LDR pc, SWI_Addr LDR pc,...
3013 просмотров
schedule 27.06.2022

неверное значение счетчика программы: 0
Я сейчас работаю с ассемблером под процессором MIPS. В настоящее время я использую симулятор MARS, и по неизвестным причинам после каждого запуска я получаю следующее сообщение об ошибке: Перейти: бегаем try.s Ошибка в: недопустимое...
26087 просмотров
schedule 23.04.2024