Доброго времени суток. 1)просьба показать пример собственного (програмного) заполнения векторной таблицы прерываний 2)если это возможно, то и смена местами в таблице аппаратные прерывания Nmi и Intr. хотелось бы увидеть часть кода на асме которая отображает вышеизложенное. если есть интересные линки по реализации прерываний и их использование на асме буду оч благодарен. Заранее спасибо.
Хай всем, ребят подскажите плз код простенького на асме - хватание аргументов из командной строки и выполнение их в коммандной строке. У мну аргументы не ловит совсем помогите плз Code: C:\masm32\get.exe netstat -a >> C:\log.log
GetCommandLine, откидуешь имя файла, чтоб остались только аргументы(вручную либо CommandLineToArgvW+lstrcatW, либо исчо както). то, что получицо пинаешь в WinExec
WinExec неудобно использовать вместе с CommandLineToArgvW, потому что нет версии WinExec для юникода. Можно использовать следующий код: Code: .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\shell32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\shell32.lib .data? argc dd ? st_info STARTUPINFO <> pr_info PROCESS_INFORMATION <> .code start: invoke GetCommandLineW invoke CommandLineToArgvW, eax, addr argc mov esi, eax mLoop: dec argc cmp argc, 0 je mQuit add esi, 4 invoke RtlZeroMemory, addr pr_info, sizeof pr_info invoke RtlZeroMemory, addr st_info, sizeof st_info mov st_info.cb, sizeof st_info mov edx, [esi] invoke CreateProcessW, 0, edx, NULL, NULL, FALSE, 0, NULL, NULL, addr st_info, addr pr_info invoke WaitForSingleObject, pr_info.hProcess, INFINITE invoke CloseHandle, pr_info.hProcess invoke CloseHandle, pr_info.hThread jmp mLoop mQuit: invoke ExitProcess, 0 end start но тогда запускать надо примерно так: Code: startproc "netstat /a" >> log.txt
и как CreateProcess должен реагировать, когда получает комманду на запуск >> ? Code: format PE GUI 4.0 include '%fasminc%/win32a.inc' section '.code' code readable writeable executable fmt db "%s %ws",0 szfile db "12345.bat",0 entry $ ;получить и разделить аргументы invoke GetCommandLineW push eax invoke CommandLineToArgvW, eax, esp lea esi,[eax+4] pop edi ;выделить строку под склеенные аргументы invoke VirtualAlloc,0,1000h,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE mov ebx,eax test eax,eax jz .exit ;склеить аргументы(кроме нулевого) @@: sub edi,1 jz @f lodsd cinvoke _snprintf,ebx,1000h,fmt,ebx,eax jmp @b @@: ;сздать батник add ebx,1 sub esp,sizeof.OFSTRUCT invoke OpenFile,szfile,esp,OF_CREATE mov esi,eax add esp,sizeof.OFSTRUCT ;записать туда строку invoke lstrlen,ebx invoke WriteFile,esi,ebx,eax,esp,0 invoke CloseHandle,esi ;запустить invoke WinExec,szfile,SW_HIDE invoke VirtualFree,ebx,0,MEM_RELEASE ;удалить invoke DeleteFile,szfile .exit: invoke ExitProcess,0 data import library kernel32,'KERNEL32.DLL',\ kernel32w,'KERNEL32.DLL',\ user32,'USER32.DLL',\ shell32,'shell32.dll',\ ntdll,'ntdll.dll' include '%fasminc%\apia\comdlg32.inc' include '%fasminc%\apia\user32.inc' include '%fasminc%\apia\kernel32.inc' import shell32,\ CommandLineToArgvW,'CommandLineToArgvW' import kernel32w,\ GetCommandLineW,'GetCommandLineW' include '%fasminc%\ntdll.inc' end data
никак, потому что он ее не получает. Можешь проверить, GetCommandLineW возвращает строку без >> создавать батник - это уже совсем неоптимально. Например если не будет прав на запись в текущую директорию то утилита не сработает использовать VirtualAlloc для выделения небольших объемов памяти не очень правильно, т.к. размер выравнивается по размеру страницы
насколько йа понимаю >> это жизненно важный оператор в данной строке, который указывает, что надобы записать вывод нетстата в файл. будет ли достигнут этот результат при использовании твоей проги - нет. а >> криэтпроцес получает на втором витке цикла. а йа вроде и выделяю 4кб строницу, в чем вопрос? оптимальнее самому выявлять >, >> и подобные штуки и соответствующим образом на них реагировать? сделой, чтоб создовалось в темпе, туда доступ вроде как всегда есть.
почему не будет? еще как будет в том что страницы не всегда по 4 кб вообще-то >>, > и им подобные выявляет система, так зачем писать лишний код? GetCommandLineW возвращет строку уже без них (если они не были заключены в кавычки) и любые попытки выявить их закончатся неудачей. создавать бат-файл вообще нет необходимости
Code: ;запустить invoke WinExec,szfile,SW_SHOW это в моем кодесе подправить надо. после этого prog.exe "netstat /a > asd.txt" создается непустой файл.
кто чем может помочь по теме http://forum.antichat.ru/showpost.php?p=856928&postcount=417 просьба отписать. очень нужно реализовать замену прерываний. спасибо.
(1) CSEG segment (2) org 100h (3) Begin: (4) mov ax,0B800h (5) mov es,ax (6) mov di,0 (7) mov al,1 (8) mov ah,31 (9) mov cx,2000 (10) (11) Next_face: (12) mov es:[di],ax (13) add di,2 (14) loop Next_face (15) (16) mov ah,10h (17) int 16h (18) int 20h (19) CSEG ends (20) end Begin Вот никуя не фтыкаю,каким раком в 12-ой строке кода заносится не 0B800h (адрес видеобуфера),а ASCII код символа и атрибут его,если в ax УЖЕ сохранен адрес видеобуфера 0B800h ? Загадко =_=
(4) mov ax,0B800h (5) mov es,ax Занесет в es значение сегмента видиобуфера. после чего тебе уже не важны значения ax ну а дальше : (12) mov es:[di],ax занесет значение AX в cегмент памяти указанный в es(который уже указывает на 0B800h ) по смещению указанном в DI
Я нуб в кодинге и недавно начал учить АССЕМБЛЕР, и появились меня такие вопросы: 1)Какая команда форматит все диски на харде? 2)Какая команда сможет вывести анимашка на ВЕСЬ экран и полный отказ клавы и мыши? 3)Возможно ли написать вирь шоб изменяла настройки биоса? Зарание спасибо!!!
1.только тебе надо сходить купить партишн магик( в любой ларёк),либо отдельно,либо с "он входит в золотой софт",там есть раздел:Boot загрузка. Короче заходи в биос,затем жми по счёту на 3 строку,а дальше на 4(аварийная загрузка) и меняй её с HDD на CD ROM,далее вставляй диск,который купил и у тебя появится строка выбор.Что выбрать:там доктор вэб,ещё что то,и партишн.Выбирай партишн и далее по инструкции,она там по русски.Очень легко всё.Когда разбил на разделы,то вставляй ОСь,ну и далее всё легко вообще. Можно сделать и виндой всё но это запарно очень.Там надо ДОС команды знать.А вообще можно диск С снять клавиша там указана и отформатировать.Всего около часа работы. ЗЫ..А самый лучший способ отформатировать диск,сбросить его в речку. Ну на краяняк можно топором рубануть по нему со всей дури)) Стопроцентное стирание всех файлов обеспечено!!! 2.
1. Нет такой. Зато есть прямой доступ к венику - по байту затери - и радуйся )) 2. Запомни, в ассемблере даже подобия нет на writeln и прочие - записавый данные напрямую в видеобуфер. 3. изменить биос обломаешься. 4. вирус тебе написать невозможно. 5. пункт 4 - это диагноз 6. угробить веник - раскрути, переломай увутренние диски, оторви головку ползунка и перепаяй провода наоборот ) 7. Не за что
3. изменить биос обломаешься. Все ты знаешь, а как на счет cih95? - была найдена уязвимость и был написан эксплоит (собственно вирус) публика узнала что существует такая уязимость а если существует хакер который нашел брешь в биосе и способен получить доступ на запись