Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

17.07.2005, 02:32
|
|
Постоянный
Регистрация: 23.05.2005
Сообщений: 617
Провел на форуме: 1262031
Репутация:
71
|
|
Assembler (Помогите)
Всем привет.
Помогите разобраться с Ассамблером вот нашел кучи
документации то сё.. и все равно не пойму как оно работает )) т.е как исполняеться код и в какой Винде
Вот как например в С++ пишешь слова типа
cout << "Hello word\n";
ну вообщем сдесь понятно .
А в Ассамблере Черт знает шо и де его писать?
как исполнить программу ? и как посмотреть результат своей программы... ну вообще я полНЫЙ НОЛЬ. В Ассамблере.. такого еще не видел..)) Но интересно очень. Подскажите как пользоваться и маленький примерчик Hello World сделать )).
И если не трудно обьясните как это работает
Эти Цифры буквы...(
Всем спасибо за ранее.
|
|
|

17.07.2005, 02:58
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
Ну чтоже, давай с тобой разбираться что такое ассемблер. Ну раз ты про это заговорил - это уже большой шаг.
Многие его считают обычным "крутым языком" для "хакеров". Это не только ошибочное но и педаристически-тупое мнение, обычный стереотип, шаблон и т д.
Ассемблер я вообще не считаю полноценным языком, т.к. делаю на нем только вставки в C - код. Сам из себя синтаксис асма ничего страшного не представляет. Компидяторов много и сделать реальную Win32-прогу непросто.
Разумеется, ты ни разу не писал чтото на асме, поэтому задал вопрос, как сделать Hello world. Давай подумает сначала, откуда берется хело ворд. В винде в окошке? Или ты имел ввиду в консоли cmd.exe ? Или где? Понимаешь ли, Ассемблер - это почти представлений команд, в бинарном видео лежащих в EXE,COM и т д файлах.
А современные компиляторы переводят один вызов (причем с разными связями и т д) на много асм-команд для процессора. Например вызов MessageBox( 0, "Fuck this world", "MessageTitle", MB_ERROR ); примерно эквивалентен
push MB_ERROR (точнее вместо MB_ERROR нужно поставить значение)
push offset MessageTitle (можно push [MessageTitle])
push offset FuckThisWorld
oush 0
call [user32.MessageBoxA]
кстати, рекомендую прочитать мою статью http://antichat.ru/txt/stack.
Так что например вывести Helo world не так просто. Мы начинаем думать не тупыми
cout << "Hello word\n"; не задумываясь как все это работает на низком уровне, а САМИ программируем в низком уровне... Не сказал бы что делать прогу на asm-хорошая идея. Разве что размер кода... Всеравно, компилятор добавит в EXE некоторые свои вещи, некоторые из которых не поддаются управлению с исходника (во как сказал))
У каждой команды есть опкод. То, чем она записывается в бинарник.
Давай возьмем такие команды для начала
mov приемник источник например mov eax,ebx
переслать данные из источника в приемник
xor приемник источник например xor eax,ebx
мат. операция XOR (иск. ИЛИ) с источником. релультат в приемнике.
cmp пар1 пар2 например cmp eax,1
сравнение пар1 и пар2. (вычитанием) если равны, флаг нуля устан. в 1 (Z flag)
jz, jnz, je, jne, jmp, jbe и т д например jnz 0x00401020
переходы (скачки), jmp=безусл. переход, выполняется всегда. остальное - переход с учетом флагов. например, переход jnz будет выполнен если Z флаг НЕ В 0 (jump if not zero) этим можно заменять конструкции if, while, for...
call например call MessageBoxA
это не jmp, т.к. jmp просто переводит EIP на новое место, а call сохраняет адрес след. команды в стеке, чтобы потом вернуться (после вызова ф-ии)
retn например retn =))
возврат из процедуры, востанав. сохраненного значения EIP командой CALL
leave делает некоторые операции с ebp и eip, для удобвства
and, or, not - мат. операции. надеюсь сам поймешь
push, pop сохранение и извлечение из стека. например push 5; pop eax. (eax=5)
xlat... нафиг
int [номер] например int 13
емулирование прерывания номер [номер] - врядли надо будет
ну и все остальное
Добавлю, что EIP - это адрес след. команды для выполнения.
EBP - используется для указ. кадра стека внутри него и по другому тоже, ESP указывает на вершину стека, EAX, EBX, ECX, EDX - просто регистры.
Также, чтобы получить доступ к памяти по адресу address, можно
mov eax, [address] (иногда в отладчиках mov eax, [dword ds:address])
теперь eax=значению dword (eax имеет тип dword-4 байта) по адресу address
Если есть вопросы (есть. я знаю) задавай смело.
--------------------------
Мне кажется все это настолько просто...
|
|
|

17.07.2005, 07:16
|
|
Постоянный
Регистрация: 13.08.2004
Сообщений: 957
Провел на форуме: 1770063
Репутация:
429
|
|
Круто задвинул =)
Хехе на винт сохранюка я эту пагу =)
|
|
|

17.07.2005, 08:47
|
|
Познающий
Регистрация: 17.01.2005
Сообщений: 48
Провел на форуме: 24128
Репутация:
15
|
|
Kez, тебе надо мануалы по асму писать ))))
|
|
|

17.07.2005, 09:30
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Самый примитивный пример:
Код:
.586
.model flat, stdcall
option casemap :none
include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib
.data
text db "Фдибаг, жывотнайе",0
capt db "ПГ/ЗМ",0
.code
start:
invoke MessageBox,0, addr text, addr capt, MB_OK
invoke ExitProcess,0
end start
|
|
|

17.07.2005, 10:34
|
|
Постоянный
Регистрация: 23.05.2005
Сообщений: 617
Провел на форуме: 1262031
Репутация:
71
|
|
KEZ а как программы выполняеться ?
т.е
1)освободить память
2)залить туда АСМ код
3)Конец файла
4)Закрыть ?
Это я так написал как представляю... может это все и не правильно но я думаю ты понял что обьяснить нужно последовательность выполнение.. (Может его и нет))
Но думаю есть как в С ( с int main) ну я думаю понял))
Большое спасибо.
|
|
|

17.07.2005, 14:58
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
нет, WinMain как и main тут уже конечно же нет.
есть точка входа в программу, она определяется компилятором либо тобой.
почти всегда первая команда - push ebp
Причем точка входа может располагаться как в середине так и в конце. Причем чаще всего даже в конце.
|
|
|

17.07.2005, 15:12
|
|
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме: 3369632
Репутация:
749
|
|
|
|
|

17.07.2005, 15:36
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
# установку и настройку Web-сервера IIS (Internet Information Services);
# установку и настройку ActivePerl-5.6.1.631-MSWin32-x86 под Windows;
# установку и настройку MySQLadmin 1.3;
# тестирование скриптов локально с использованием приведенных выше программ.
Калашников изначально у меня вызывал недоверие и подозрение.
Врядли я выбрал бы IIS как свой сервер.
|
|
|

17.07.2005, 15:57
|
|
Постоянный
Регистрация: 28.02.2005
Сообщений: 853
Провел на форуме: 3369632
Репутация:
749
|
|
невтему однако
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|