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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наверное тут даже телепаты бессильны... Лично я ничего не понял. Ху из шеллкод? Какая для всего этого ось? На чем компилировать первый кусок кода? Как это все линкуется?

Всего записей: 11652 | Зарегистр. 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А кажется дошло нужно передать управление символьному буферу? Ппц... Ты вообще в курсе, что исполнение данных в защищенном режиме запрещено?

Всего записей: 11652 | Зарегистр. 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
yse

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
format  pe gui 4.0<-  это и есть фасм компилятор совсем не масм

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 14:08 31-10-2011
bomzzz



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

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо .bomzzz
 
вот  тоже самое пробовал скомпелить в бенарном виде всеровно какой компилятор но я делал на фасм просто быстрее ,
но наверное и за команды моv и прибавляются лишнии нули или может и за команды int прерывание
 
 
msg     db    "Hello, world!"    ; the string
 
 
 
_start:
 
; write() call
 
 mov eax, 4        
 mov ebx, 1        
 mov ecx, msg      
 mov edx, 13      ; поместить 13 в edx, так как наша последовательность составляет 13 байтов
int 0x80         ; Позвонить ядру, чтобы заставить системный вызов произойти
 
; exit() call
 
 mov eax,1      
 mov ebx,0      
int 0x80

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 14:42 31-10-2011
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и скорее всего попадает в защищенную область другого процесса
 
Добавлено:
даже точнее в hell попадает.
 
так это у тебя теперь 16 битный асм
 
Добавлено:
http://www.emu8086.com/ емулятор скачай тут есть пример для хело ворд и даже не один для фасма подойдет как раз

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

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

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 15:28 31-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz, чтоб не работало под волком:
INT 21 - Volkov Commander - INSTALLATION CHECK
    AH = 2Bh
    CX = 5643h ('VC')
    DX = 4F4Dh ('OM')
    AL = function number
        00h get left window data address
        01h get right window data address
        02h get address of general variables
Return: AL = 00h if Volkov Commander installed
        AH = version code (27h for v4.00.039)
        ES:BX -> requested data
 
 
Добавлено:
в своем обработчике это вызываешь и проверяешь...

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



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

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот Hello, world MessageBox Shellcode на всех осях работает компелим запускаем  
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
  #include <iostream>
#include <windows.h>
 
int main(){
    unsigned char shellcode[]=
    "\xFC\x33\xD2\xB2\x30\x64\xFF\x32\x5A\x8B"
    "\x52\x0C\x8B\x52\x14\x8B\x72\x28\x33\xC9"
    "\xB1\x18\x33\xFF\x33\xC0\xAC\x3C\x61\x7C"
    "\x02\x2C\x20\xC1\xCF\x0D\x03\xF8\xE2\xF0"
    "\x81\xFF\x5B\xBC\x4A\x6A\x8B\x5A\x10\x8B"
    "\x12\x75\xDA\x8B\x53\x3C\x03\xD3\xFF\x72"
    "\x34\x8B\x52\x78\x03\xD3\x8B\x72\x20\x03"
    "\xF3\x33\xC9\x41\xAD\x03\xC3\x81\x38\x47"
    "\x65\x74\x50\x75\xF4\x81\x78\x04\x72\x6F"
    "\x63\x41\x75\xEB\x81\x78\x08\x64\x64\x72"
    "\x65\x75\xE2\x49\x8B\x72\x24\x03\xF3\x66"
    "\x8B\x0C\x4E\x8B\x72\x1C\x03\xF3\x8B\x14"
    "\x8E\x03\xD3\x52\x33\xFF\x57\x68\x61\x72"
    "\x79\x41\x68\x4C\x69\x62\x72\x68\x4C\x6F"
    "\x61\x64\x54\x53\xFF\xD2\x68\x33\x32\x01"
    "\x01\x66\x89\x7C\x24\x02\x68\x75\x73\x65"
    "\x72\x54\xFF\xD0\x68\x6F\x78\x41\x01\x8B"
    "\xDF\x88\x5C\x24\x03\x68\x61\x67\x65\x42"
    "\x68\x4D\x65\x73\x73\x54\x50\xFF\x54\x24"
    "\x2C\x57\x68\x4F\x5F\x6F\x21\x8B\xDC\x57"
    "\x53\x53\x57\xFF\xD0\x68\x65\x73\x73\x01"
    "\x8B\xDF\x88\x5C\x24\x03\x68\x50\x72\x6F"
    "\x63\x68\x45\x78\x69\x74\x54\xFF\x74\x24"
    "\x40\xFF\x54\x24\x40\x57\xFF\xD0";
 
   
 
    system("PAUSE");
 
    ((void (*)())shellcode)();
 
    return 0;
}

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 16:05 31-10-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz, sys похож на com, только org 0, и заголовок специальный...
гугль 'DOS ".SYS" header structure -PE -FAT -NTFS' вторая ссылка в кеше...

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



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

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



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

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



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

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



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

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
еще бы найти где это написано
 
Добавлено:
http://elancev.h1.ru/texno/raznoe/driver.htm
нашел хоть что то

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:59 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