Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не потом ты его уже никак не изменишь... Рисуй каждое слово отдельным проходом, с выбором цвета и ручным позиционированием. Рисовал когда то я так для печати конвертов - маразм тот еще

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 22:32 24-10-2011
kentuki13

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127, спасибо за ответ, жаль конечно, что нет способа логичней...

Всего записей: 9 | Зарегистр. 23-10-2011 | Отправлено: 23:31 24-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
asm-16
а как отличить папку и файл? по атрибутам?
а как получить\задать длинные имена? должен быть какой то стандарт
 
Добавлено:
у калашникова есть про длинные имена. а отдельно описание прерываний не могу найти

Цитата:
 
Как получить и вывести длинное имя файла? Для этого следует воспользоваться НЕ функциями 4Eh и 4Fh, а 714Eh и 714Fh прерывания 21h. Вот так:
 
mov ax,714Eh ;Функция поиска первого файла
xor di,di ;DI должен указывать на буфер, куда будут записываться данные о найденном файле (типа DTA).
xor si,si ;SI пока остается тайной!
mov cx,0FFh ;Ищем все возможные файлы. Это что-то вроде атрибутов файла
mov dx,offset All_files ;Маска поиска (*.*)
int 21h ;Теперь в ES:DI находится информация о найденном файле!
mov Handle,ax ;Номер процесса поиска файлов
 
http://kalashnikoff.ru/Assembler/issues/025.htm#shell
 
Добавлено:
никто не знает в 16 ричном тасме можно структуру задать и если да то как?
разобрался - так же как в масме32

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 23:45 27-10-2011 | Исправлено: bomzzz, 00:22 28-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://demon-riabev.by.ru/Programming/Tasks%20and%20examples%20Assembler/Glava%207/Index3.htm
 
нашел про длинные имена

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 02:46 28-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а почему так? положим почему
AREG    dq 0
 
mov dword ptr [AREG], eax  младшее слово
mov dword ptr [AREG+4], eax старшее слово
 
порядок задом наперед еще понятно - чтоб совместимость была с 32 битными значениями. а вот почему когда вытаскиваешь 10-ичное сжатое цифры задом наперед
 
BREG    dt 0
 
lea si, BREG+9
mov dl, byte ptr[si]
 
две сжатые цифры старших разрядов, но при этом левые четыре бита старще чем правые четыре.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:19 28-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
две сжатые цифры старших разрядов, но при этом левые четыре бита старще чем правые четыре

потому что внутри байта порядок всегда биг-эндиан

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 17:28 28-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну так и в внутри двойного слова тоже младшее и старшее значение запихивается по нормальному. вот я чета всегда с этим порядком туплю. всегда в итоге методом тыка делаю
 
Добавлено:
[нормальный порядок младшее двойное слово][нормальный порядок старшее двойное слово]

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:31 28-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
нормальный порядок

для интела литл-эндиан
dq 01234567
dd 0123.4567
dw 01.23.45.67
db 0.1.2.3.4.5.6.7
для моторолы: биг-эндиан
dq 76543210
dd 7654.3210
dw 76.54.32.10
db 7.6.5.4.3.2.1.0
в чем проблема? номера байтов обозначают старшинство битов

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 17:42 28-10-2011 | Исправлено: MERCURY127, 17:45 28-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хм. все равно не понял.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 17:52 28-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
хотя байты числа могут идти в разном порядке, биты ВНУТРИ одного байта всегда считаются слева направо в порядке убывания старшинства. те:
число 4398110 = 10101011110011012 = 0xABCDh
слово моторолы: 10101011 110011012 = AB.CD первый.второй байт в памяти.
слово интела: 11001101 101010112 = CD.AB первый.второй байт в памяти, но НЕ DC.BA

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 18:32 28-10-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[...]

Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 18:33 28-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
но когда я делаю shr eax все праивльно же работает 4 байта

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:35 28-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
естественно работает в регистрах данные хранятся в прямом порядке

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 18:41 28-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
щас попробую порисовать - я левша переученный не различаю лево и право мне надо правило мнемоническое. списпки за попытку.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:42 28-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...
сделал но так и не понял в чем ошибка была

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 11:59 29-10-2011 | Исправлено: bomzzz, 14:16 29-10-2011
yse

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
плиз подскажите пару примеров на асме написанию shellcode hello world
пример этого
 
        format  pe gui 4.0
 
 include 'D:/include/win32ax.inc'
       section '.data' data readable writeable
      message db 'hello world',0
 start:
 
 
 
 
 
        invoke MessageBox,NULL,message,message,MB_OK
      invoke  ExitProcess,1
 
         .end  start  
 
дизассемблерованый опкод выглядет  так
0040100E > 6A 30            push    30
00401010   68 00104000      push    401000                           ; ASCII "Hello, World!"
00401015   68 00104000      push    401000                           ; ASCII "Hello, World!"
0040101A   6A 00            push    0
0040101C   FF15 7C204000    call    near dword ptr ds:[40207C]       ; USER32.MessageBoxA
00401022   6A 00            push    0
00401024   FF15 5E204000    call    near dword ptr ds:[40205E]       ; kernel32.ExitProcess
 
бинарный вид >  6A3068 001040006A 00FF15 7C2040006A 00FF15 5E204000
 
сам шелкод
\xA6\x03\x86\x00\x01\x04\x00\xA6\x00\xFF\x51\xC7\x02\x04\x00\xA6\x00\xFF\x51\xE5\x02\x04\x00
 
после компелирую на с++
так  
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
  #include <iostream>
#include <windows.h>
int main(){
    unsigned char shellcode[]=
 "\xA6\x03\x86\x00\x01\x04\x00\xA6\x00\xFF\x51\xC7\x02\x04\x00\xA6\x00\xFF\x51\xE5 \x02\x04\x00";
     
   
 
    system("PAUSE");
 
    ((void (*)())shellcode)();
 
    return 0;
}
 
запускается но открывается автоматом дебагер и указывает что ошибка по такому адресу faulted with  message :access violation at 0x0022ff20 :read of address 0x00000000 Processs stopped
 
я так понял присутствует нулевые байты как от них избавится или покажите более пример по теме: СП.

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 12:37 31-10-2011 | Исправлено: yse, 12:38 31-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наверное тут даже телепаты бессильны... Лично я ничего не понял. Ху из шеллкод? Какая для всего этого ось? На чем компилировать первый кусок кода? Как это все линкуется?

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 12:55 31-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
invoke MessageBox,NULL,message,message,MB_OK  

 
invoke MessageBox,NULL,addr message,addr message,MB_OK
ну или offset но на масм32 похоже
 

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 12:58 31-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А кажется дошло нужно передать управление символьному буферу? Ппц... Ты вообще в курсе, что исполнение данных в защищенном режиме запрещено?

Всего записей: 11553 | Зарегистр. 03-08-2008 | Отправлено: 12:59 31-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
.386
 
.model flat, stdcall  
option casemap :none  
 
include \MASM32\INCLUDE\windows.inc
include \MASM32\INCLUDE\user32.inc
include \MASM32\INCLUDE\kernel32.inc
includelib \MASM32\LIB\user32.lib
includelib \MASM32\LIB\kernel32.lib
 
.data
mestitle    db "YSE",0
buffer        db "Hello World",0
 
.code
start:
invoke MessageBox,0,ADDR buffer,ADDR mestitle,MB_ICONASTERISK
invoke ExitProcess,0
end start
 

я вот таким батником компилирую перетягивая на него файл с текстом программы мышью

Цитата:
 
ECHO OFF
COLOR 9F
CLS
cd /d %~dp1
C:\masm32\bin\ml.exe /c /coff "%~1"
C:\masm32\bin\link.exe /subsystem:windows "%~n1.obj"
del "%~n1.obj"
pause
 

 
Добавлено:
MERCURY127
подскажи как горячую клавишу в досе сделать. сделал через инт 9 - но эта клавиша теперь работает и под волковым и в любом редакторе. а как сделать чтоб когда волков запускается она не работала? через int 16h? не охота ansi.sys использовать только из за горячих клавиш.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:02 31-10-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru