Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 645
от 09.11.2006, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 400, Экспертов: 62
В номере:Вопросов: 3, Ответов: 7


Вопрос № 61169: Здраствуйте, подскажите пожалуйста как сделать поиск в строке: то есть: 1 поддержка ? и * 2 независимость от регистра у меня есть функция позволяющее (1) я ее взял с DelphiWorld. Но как в нее добавить(2)? Заранее спасибо. зы я са...
Вопрос № 61211: Обьясните, плз, как происходит применение функций типа OR, NOT, XOR и т.д. к числовым переменным? Для чего они могут применятся на практике?...
Вопрос № 61216: Добрый день. Вопрос деликатный. Как мне написать программу чтобы она вставляла какойто код в другой ексешник. Вроде внедрения вируса, но С МИРНЫМЫ ЦЕЛЯМИ! Пожалуйста, помогите!...

Вопрос № 61.169
Здраствуйте, подскажите пожалуйста как сделать поиск в строке:
то есть:
1 поддержка ? и *
2 независимость от регистра
у меня есть функция позволяющее (1) я ее взял с DelphiWorld. Но как в нее добавить(2)? Заранее спасибо.
зы я сам не очень хорошо владею работой с указателями

Приложение:

Отправлен: 03.11.2006, 18:01
Вопрос задал: Yujin (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Yujin!
Что-то я не вижу, где у вас тут идет сравнение символов - вы весь код положили в приложение? Замените функцию сравнения своей, которая будет игнорировать регистр (см. приложение)
Или приспособьте стандартную функцию AnsiLowerCase (AnsiUpperCase)
А самым правильным было бы взять готовый компонент/библиотеку для поддержки регулярных выражений в Delphi.

Приложение:

---------
Не узнаешь - не попробуешь.

Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 03.11.2006, 18:47
Оценка за ответ: 3
Комментарий оценки:
просто я взял эту функцию, попробовал она работает. но я не понял КАК она работает
+ ваша функция не поддрживает "*" и "?"


Вопрос № 61.211
Обьясните, плз, как происходит применение функций типа OR, NOT, XOR и т.д. к числовым переменным? Для чего они могут применятся на практике?
Отправлен: 03.11.2006, 23:02
Вопрос задал: Keraberas (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Melamed
Здравствуйте, Keraberas!

Вы спрашиваете про битные операции OR, NOT, XOR, AND

Операция or применяется для установки отделных битов в числе, например, $07 OR $10 = $17

Операция AND применяется для выделения определенных битов из числа, например, &03 AND $1A = $02. Данная опирация применяется для проверки установлен ли данный бит или нет

Операция NOT инвертирует биты числа, то есть бит который в исходном числе был установлен в 1 сбрасывается в 0 и наоборот. Например NOT $17 = $E8

Операция XOR устанавливает в единицу бит если соответсвующие биты не совподают у аргументов. Например, $1A OR $03 = &19.
Ответ отправил: Melamed (статус: 7-ой класс)
Ответ отправлен: 03.11.2006, 23:43

Отвечает: sir henry
Здравствуйте, Keraberas!
То, что Вы перечислили, это не функции, а побитовые операции над числами. Т.е. каждый бит заданного Вами числа проходит обработку в соответствии с заданной Вами операцией (OR, NOT, XOR, AND).
Небольшой пример практического применения.
XOR
Эта операция может применяться для простейшего алгоритма шифрования. Допустим у Вас есть текстовый файл, содержимое которого Вам надо скрыть от чьих-то любопытных глаз. Это можно сделать, применив к коду каждого символа файла операцию XOR с каким-либо ключом. Дешифрация происходит точно так-же, т.е. к каждому зашифрованому символу применяется операция XOR с тем же самым ключом.
См. пример 1 в приложении.
NOT
Эта операция применяется, когда нужно проверять, не произошло ли то или иное событие. Например считывание символов из файла идет до тех пор, пока не наступил конец файла. См. пример 1 в приложении.
AND
Эту оперцию можно применить, например когда Вы ищете файлы по заданной маске и среди найденного Вам надо отобрать только каталоги. См. пример 2 в приложении.

Приложение:

Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 04.11.2006, 06:33

Отвечает: Monah
Здравствуйте, Keraberas!
Эти операции могут применятся в основном для работы с отдельными битами. по таким правилам - смотрите приложение.
Также эти операции применяются при работе с логическими операциями IF/Case/FOR/WHILE/Repeat по тойже логике если принять true = 1 а false = 0
например if a<>b можно представить как if not(a=b) только необходимо учитывать что приоритет этих операций самый низкий поэтому запись if not a=b эквивалентна if (not a)=b

Приложение:

---------
festina lente

Ответ отправил: Monah (статус: 7-ой класс)
Ответ отправлен: 04.11.2006, 18:45

Отвечает: Mo-skin
Здравствуйте, Keraberas!
Функции побитового сравнения:
//или
$01 or $01 = $01
$01 or $00 = $01
$00 or $10 = $10

//и
$01 and $01 = $01
$01 and $00 = $00
$10 and $01 = 00
$10 and $10 = $10

//взаимоисключаюott или
$01 xor $01 = $00

$01xor $00 = $01
$10 xor $01 = 11
$10 xor $10 = $00

---------
Чем больше женщину мы меньше, тем больше меньше мы ее!
Ответ отправил: Mo-skin (статус: 2-ой класс)
Ответ отправлен: 04.11.2006, 21:36


Вопрос № 61.216
Добрый день. Вопрос деликатный. Как мне написать программу чтобы она вставляла какойто код в другой ексешник. Вроде внедрения вируса, но С МИРНЫМЫ ЦЕЛЯМИ! Пожалуйста, помогите!
Отправлен: 04.11.2006, 00:03
Вопрос задал: Dector@ (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Олекса aka SoW
Здравствуйте, Dector@!

Самый распространенный способ заражения ЕХЕ-файлов такой: в конец файла дописывается тело вируса, а заголовок корректируется (с сохране- нием оригинального) так, чтобы при запуске инфицированного файла управление получал вирус. После окончания работы вирус берет из сохраненного заголовка оригинальный адрес запуска программы, прибав- ляет к его сегментной компоненте значение регистра DS или ES (полученное при старте вируса) и передает управление на полученный адрес.

Следующий способ - внедрение вируса в начало файла со сдвигом кода программы. Механизм заражения такой: тело инфицируемой программы считывается в память, на ее место записывается вирусный код, а после него - код инфицируемой программы. Таким образом, код программы как бы "сдвигается" в файле на длину кода вируса. При запуске инфицированного файла вирус заражает еще один или несколько файлов. После этого он считывает в память код программы, записывает его в специально созданный на диске временный файл с расширением исполняемого файла (СОМ или ЕХЕ), и затем исполняет этот файл. Когда программа закончила работу, временный файл удаляется.

Также очень хорошая статья на ету тему здесь: http://hi-tech.nsys.by/23/#2
В ней все вопросы рассмотрены более подробно
---------
Вiк живи - вiк учись.
Ответ отправил: Олекса aka SoW (статус: 2-ой класс)
Ответ отправлен: 04.11.2006, 07:02
Оценка за ответ: 4
Комментарий оценки:
да, система тоже интересная и статья обширная, но я хотел бы конкретный пример на Делфи, мне нужно только, чтобы мой вирус внедрялся в мой же файл напр 1234.exe и в процессе работы менял заголовок. Вот и все.

Отвечает: PaVeL_Ekt
Здравствуйте, Dector@!

Просто делай так

Var f: text; Mem: TMemoryStream;
Buf: Array [1..1024] of byte;

const FName:='Test.exe';
...
Mem:=Tmemorystream.Create;
Mem.LoadFromFile(FName);
assignFile(f, Fname);
rewrite(f, 1);
repeat
rd:=mem.read(buf, sizeOf(buf));
blockwrite(f, buf, rd);
until rd<1

// с помощью blockwrite можно записать данные хоть в начало (перед repeat) или после экзешного файла, если после, то экзешник будет работать как ни в чем не бывало
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 4-ый класс)
Ответ отправлен: 07.11.2006, 07:25
Оценка за ответ: 5
Комментарий оценки:
Отлично - я обезательно испытаю! Спасибо!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное