Вопрос № 32103: Здравствуйте уважаемые эксперты. Всех с наступающим:)
Есть некая строка символов, скажем '012345'. Вывести ее на экран можно исполюзуя стандартные функции прерываний, скажем функция 09h прерывания 21h. Но я слышал, что вывод можно осуществит...Вопрос № 32120: Подскажите пожалуйста, как на ассемблре завершить процесс в WinXP. Заранее спасибо!...Вопрос № 32127: Подскажите, пожалуйста, где можно скачать последнюю версию Soft-Ice для XP?
Как его правильно установить и как им пользоваться?
Вопрос "как им пользоваться звучит бредово"... поэтому подкиньте ссылки на документацию.
..Вопрос № 32129: Задача - Перебрать все файлы на диске и подсчитать их количество.
Я пытаюсь организовать рекурсивные перебор.
Устанавливаю текущий каталог
Устанавливаю DTA область
ИСпользую функцию поиска
Все работает но есть одно но, для к...Вопрос № 32138: Уважаемые Эксперты - пожалуйста помогите найти ошибку.
Написал я dll просто для примера (там eax=1+2), скомпилировал:
ml /c /coff mylibrary.asm
link /DLL mylibrary.obj - (Ругался, что 'entrypoint "__dll_start" is not __stdcall w...
Вопрос № 32.103
Здравствуйте уважаемые эксперты. Всех с наступающим:)
Есть некая строка символов, скажем '012345'. Вывести ее на экран можно исполюзуя стандартные функции прерываний, скажем функция 09h прерывания 21h. Но я слышал, что вывод можно осуществить и не используя прерывания, а с помощью прямой работы с видеопамятью. Не могли бы вы обьяснить как это зделать?
Заранее всем благодарен.
P.S. Я знаю, что подобный вопрос уже кто-то задавал, но к сожалению в рассылке я ответа на него не нашел, так что пишу вам.
Отправлен: 24.12.2005, 11:26
Вопрос задал: Юра (статус: 2-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Евгений Иванов
Здравствуйте, V. Yegor S.!
he TerminateProcess function terminates the specified process and all of its threads.
BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 24.12.2005, 19:06
Отвечает: Sager
Здравствуйте, V. Yegor S.!
Чтобы завершить процесс, нужно сначало узнать его ID.
Сначало объяви структуру: pe32 PROCESSENTRY32
Заполнить нужно только один параметр pe32.dwSize(размер всей структуры)
Затем вызываешь функцию
push 0
push TH32CS_SNAPPROCESS
call CreateToolhelp32Snapshot
mov hSnap,eax
push offset pe32
push eax
call Process32First
и дальше в цикле смотришь на параметр pe32.szExeFile - здесь находится имя процесса, если нужный тебе процесс, то параметр pe32.th32ProcessID содержит ID процесса - выходишь из цикла, если нет - то в конце цикла вызываешь функцию:
push offset pe32
push hSnap
call Process32Next
Затем, чтобы завершить процесс, делаешь следующее:
hProcess =
push process_ID
push 0
push PROCESS_ALL_ACCESS
call OpenProcess
push eax
push -9
push eax
call TerminateProcess
call CloseHandle
Кстати, чтобы делать тоже самое с системными процессами нужны привилегии отладчика.
Ответ отправил: Sager (статус: Студент)
Отправлен: 25.12.2005, 12:41
Вопрос № 32.127
Подскажите, пожалуйста, где можно скачать последнюю версию Soft-Ice для XP?
Как его правильно установить и как им пользоваться?
Вопрос "как им пользоваться звучит бредово"... поэтому подкиньте ссылки на документацию.
Отправлен: 24.12.2005, 20:27
Вопрос задал: REFERI (статус: Студент)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sager
Здравствуйте, REFERI!
скачать можно здесь:
http://reversing.kulichki.net/files/debug/debug.htm
Дока по установке здесь:
http://web.archive.org/web/20050206195305/www.cracklab.ru/art/
Документация:
http://dante.net.ru/forum/printthread.php?t=195
http://clifftown.narod.ru/development.html
http://nextpc.narod.ru/Rasnoe_Victerat.html
Плюс зайди на крэкерские сайты, где есть описание взлома программ и в них же и описание пользование softice'ом(cracklab.ru, reversing.kulichki.net)
Ответ отправил: Sager (статус: Студент)
Отправлен: 24.12.2005, 22:15 Оценка за ответ: 5 Комментарий оценки: Большое спасибо!
Вопрос № 32.129
Задача - Перебрать все файлы на диске и подсчитать их количество.
Я пытаюсь организовать рекурсивные перебор.
Устанавливаю текущий каталог
Устанавливаю DTA область
ИСпользую функцию поиска
Все работает но есть одно но, для каждого файла мне нужно проверить не является ли он каталогом. Насколько я понимаю в DTA области есть метка указывающая на то, что текущий файл - есть каталог.
Но к сожалению я так и не понял суть и струтуру DTA. Может кто подскажет как мне определить "каталог или не каталог"?
Спасибо.
Отправлен: 24.12.2005, 21:02
Вопрос задал: GhostKU (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Евгений Иванов
Здравствуйте, GhostKU!
Зачем тебе DTA? есть удобные функции 4Eh и 4Fh - поиск. там можно и атрибут указывать каталога.
удачи!
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 24.12.2005, 21:16
Вопрос № 32.138
Уважаемые Эксперты - пожалуйста помогите найти ошибку.
Написал я dll просто для примера (там eax=1+2), скомпилировал:
ml /c /coff mylibrary.asm
link /DLL mylibrary.obj - (Ругался, что 'entrypoint "__dll_start" is not __stdcall with 12 bytes of arguments; image may not run', но mylibrary.dll создал)
Потом создал mylibrary.lib:
implib mylibrary.lib mylibrary.dll - тожеругался: 'no export', хотя я вроде поставил public myfunc, но .lib файл я всё-таки получил.
Создаю теперь tst.asm, куда буду вставлять функцию из этой библиотеки. Компилирую:
ml /c /coff tst.asm - всё норм.
link /subsystem:console tst.obj - и тут fatal error: no argument cpecified with option /defaultlib:
EXE-шник так и не получился. Зачем нужен этот параметр (/defaultlib:), и откуда выскакивает? Почему implib говорит, что "нет экспорта"?
Приложение:
Отправлен: 25.12.2005, 02:33
Вопрос задал: Zloy_pes (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Sager
Здравствуйте, Zloy_pes!
stdcall вначале убери, entrypoint "__dll_start" is.... ругается на это, потому что нужно не передавать не менее 12 байтов параметров, метку _dll_start: нужно поставить после процедуры и в ней eax присвоить отличное от нуля значение(длл должна возвращать в еах ненулевое значение)
строку implib mylibrary.lib mylibrary.dll писать не надо(у тебя итак длл создается, когда ее компилишь)
Приложение:
Ответ отправил: Sager (статус: Студент)
Отправлен: 25.12.2005, 08:07