Рубрики
cmd \ vbs \ scripts

cmd + assambler

fsutil fsinfo drivers - посмотреть какие есть диски
D: - переход на диск d если он существует
echo text > name.txt - создать файл с именем name.txt и записать в него text
type name.txt - показать содержимое файла name.txt
type filename.txt | more - так можно показать содержимое большого файла, выводя его частями
ren file.txt file1.txt - переименовать  file.txt в file1.txt
move file.txt file1.txt - перемещение файлов
copy file1 c:\полный_путь\file2 - копирование файлов
rmdir /S /Q dir_name - удаление не пустого каталога
del filename.txt - удаление файла filename.txt
notepad.exe file_name.bat - открытие file_name.bat в блокноте
@ - команда сразу выполнится без вывода в консоль

@ IF EXIST C:\filename.exe ( C:\filename.exe ) else ( echo No_this_file ) 
@ Если существует c:\filename.exe (это выполнится) если нет (то это выполнится)

my_cmd.bat at c:\parametr.txt  c:\parametr2.txt - задание параметров для my_cmd.bat
@ notepad.exe %1 - откроет первый параметр c:\parametr.txt
@ notepad.exe %2 - откроет второй параметр c:\parametr2.txt

cmd.exe - запустится в окно запустившей его программы
@ start cmd.exe - запустится в отдельном окне cmd.exe

Рабочая среда
\masm32\BiN\workcatalog
-file-
ISHIDNIC
RESOURCE
SHABLON

trans.bat
@ echo -file-
@ c:masm32\bin\ml.exe /coff /c .\ISHODNIC\-file-.asm

compile.bat
@ echo -file-
@ if EXIST -file.obj c:\masm32\bin\link.exe /SUBSYSTEM:WINDOWS .\-file-.obj

td.bat
@ c:\masm32\bin\td32.exe -file-.exe

tb - turbo debager  отладчик.

invoke wsprintf - перевод числа в строковое представление
invoke GetSystemMetrics, SM_CXSCREEN - узнать размеры экрана
invoke ShowCursor, 0 - спрячет курсор
invoke SwapMouseButton, 1 - менять кнопки мыши
invoke GetCurrentDirectory, 256 , addr String_COUNTER - вернет путь до директории
invoke GetModuleFileName, 0 , addr String_COUNTER, 256 - вернет имя файла
invoke GetWindowsDirectory, addr String_COUNTER, 256 - путь до папки eindows
invoke GetUserName , addr String_COUNTER, addr MAX_SYMB
invoke GetCursorPos , addr CURSOR_POINT - узнать координаты курсора
invoke MessageBox , Null , addr String_COUNTER , addr String_String , Null - вывести сообщение
invoke SetCursorPos , 500 , 300 - установить курсор на координаты 500 , 300 (x,y)
invoke ClioCursor , addr CURSOR_RECT - ловушка для курсора
invoke LoadCursor , Null , IDC_SIZEALL - загрузка нового изображения курсора
invoke SetSystemCursor , EAX , OCR_NORMAL  - установить изображение курсора из регистра EAX
invoke GetLogicalDrivers - получить информацию о дисках
invoke GetLogicalDriveStrings , 256 , addr String_COUNTER - задать размер буфера
invoke GetDriveType , addr String_Disk - получить информацию о типе диска 
invoke lstrlen ,naddr String_1 - измерить длину строки
invoke lstrcpyn , addr String_COUNTER_1 , addr String_1 , EAX - копирование строки (нужно знать ее длину)
invoke lstrcpy , addr String_COUNTER_2 , addr String_2 - копирование строки ( знать длину не нужно)
invoke lstrcat , addr String_COUNTER1 , String_COUNTER2 - соединим буфер длины строк
invoke lstrcmp , addr String_1 , addr String_1 - сравнение строк (EAX = 0 - равны, EAX > 0 - string_1 > string_2 , EAX > string_1 > string_2)
invoke lstrcmpi , addr string_1 , addr string_2 - позволяет сравнивать строки не обращая внимания на регистр символов
invoke GetForegroundWindow - найти активное окно Windows (например где мы печатаем,водим курсором)
invoke GetWindowsText - найти текст заголовка окна
invoke GetClassName - найти класс окна
invoke GetCommandLine - Получит параметры запуска. Каждой программе при запуске можно передать параметр. prog.exe paramtr 
invoke GetLastError - показать номер последней ошибки
invoke EinExec , addr Name_Program,SW_SHOWNORMAL - запуск сторонней программы
invoke ShellExecute - запуск сторонней программы
invoke CreateProcess, addr CMD , .... - запуск программы/процесса
invoke CreateSolidBrush , 00FF0000 - возврат идентификатора кисти
invoke CreateWindowsEx - управление окном и его вид (скролы, кнопки упр (закрыть..) и тд) 
    
     Blue Green Red
00   FF   00    00   - синий цвет 00FF0000 , зеленый 0000FF00 , красный 000000FF. RGB- красный\зеленый\синий
alf

mov переменная , значение - перемещение в буфер \ перемещение в регистр
add переменная , значения - суммирование
sub переменная , значение - вычитания
inc переменная  -  увеличивает на единицу +1
dec переменная  -  уменьшает на единицу -1
div переменная  -  деление
mul переменная  - умножение
push регистр\переменная - команда для добавления в регистре (стек уменьшится на 4)
pop регистр\переменная - команда для добавления в регистра ( стек увеличивается на 4)
jmp $_METKA_  - безусловный прыжок к _METKA_   
@@: - специальная метка masm32 
JMP @F - специальный прыжок в перед к метке @@
JMP @B - специальный прыжок назад к метке @@
cmp значение, значение - сравнить значение
Je @B - прыжок с условием (если все верно)
Jne @B - прыжок с условием (если не верно)
CMP значение1 , значение2 - сравнение
JA $_METKA_1 - прыжок если значение1 > значения2
JAE $_METKA_2 - прыжок если значение1 >= значение2
JB $_METKA_3 - прыжок если значение1 < значения2 
JBE $_METKA_4 - прыжок если значение1 <= значение2
ret - возврат
not par1 - отрицание/ логическое (Если не 1, то вернуть 0)
and par1, par2 - логическое И (логическое умножение)  (ровно 1 если оба числа равно 1)
or par1, par2 - включающие ИЛИ (логическое сложение) (равно 1 если оба 1. равно 0 если оба 0)
xor par1, par2 - Исключающее ИЛИ (исключающие сложение) (если два бита равны 1(или 0) то результат равен 0)
enter 0,0 - push ebo; mov ebp , esp
leave - mov esp,ebp ; pop ebp - возвращаем все обратно
loop - бесконечный цикл mov ECX, 50
my_p_command PROTO :DWORD , :DWORD - PROTO команда позволяющая задать параметры для команд

локальные переменные
INVOKE FUNCTION_CLIENT , EAX,EBX
FUNCTION_CLIENT PROC
local _Var1,_Var2,_Var3 :DWORD
local _String[256] :BYTE
local _pMaps[30] :DWORD
local _Var4 :WORD
local _Var5 :POINT

RET
FUNCTION_CLIENT ENDP


%d - вывод в десятичной системе
%08x - вывод в шестнадцатеричной
Если 32 бит числа  равен 1 то это число отрицательное

Регистры
Eax Ebx Edi Esi Edx
У каждого регистра есть свой пул памяти.
Перенос данных из памяти в память запрещен. (можно перенести из памяти в регистр, а потом в память)
esp - адрес и вершина стека 
ebp
ecx - счетчик 
ebx - адрес нашей строки
4096 байт - размер одной страницы текста

каждый процесс это запущенная программа
каждая клавиша имеет три кода - scan-code, virtual-code, char-code
virtual-key codes
vk-return 0D  1 Байт - клавиша интер

прерывания
int3 
int1