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

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


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

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

Выпуск № 897
от 16.08.2007, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 471, Экспертов: 79
В номере:Вопросов: 4, Ответов: 8


Вопрос № 98004: Здравствуйте. Имеется программа, представляющая из себя единственный exe-файл. Нужно сделать контроль целостности этого файла (или хотя бы той его части, которая содержит исполняемый код и некоторые данные) по какой-нибудь хеш-функции. Сама функция п...
Вопрос № 98016: Здравствуйте уважаемые эксперты. Подскажите пожалуйста, какой функцией можно реализовать преобразование из типа string в 8-миричную систему счисления. Пример: "строка" -> "F1 F2 F0 EE EA E0". Заранее спасибо....
Вопрос № 98018: Здравствуйте. Имеется простенькое приложение, написанное на Delphi, в основном окне которого находятся несколько скрытых Label и Edit. Задача заключается в том, чтобы из стороннего приложения (написанного на том-же Delphi) сделать эти объекты...
Вопрос № 98055: Здравствуйте! Необходимо чтобы в листбокс заносились все сетевые интерфейсы и для каждого из них можно было бы изменить ip-адрес и маску подсети. Менять - с помощью SetAdapterIPAddress. А вот как получить информацию об интерфесах. Спасиб...

Вопрос № 98.004
Здравствуйте. Имеется программа, представляющая из себя единственный exe-файл. Нужно сделать контроль целостности этого файла (или хотя бы той его части, которая содержит исполняемый код и некоторые данные) по какой-нибудь хеш-функции. Сама функция проверки должна располагаться в этом же exe. Результат прямо открытым текстом выводится в окне программы, как это делается в NOD32. Там обычно пишется CRC exe - OK или что-то в этом духе. Но NOD32 проверяет exe скорее всего из dll, а мне желательно из самого exe.
Как это лучше сделать? Желательно с примером кода, особенно по доступу к exe и хранению результата хеш-функции (как его хранить и где конкретно). Если сложно, то просто дайте ссылки на статьи или компоненты Delphi, реализующие эту проверку. А вообще я видел на wasm теорию по написанию самоудаляющегося exe-файла, так что это возможно.

P. S. Думаю, что если бы все программы делались таким образом, то некоторые виды вирусов не смогли бы распространиться.
Отправлен: 11.08.2007, 01:00
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Coupler
Здравствуйте, Blackie!
Посмотрите вот эти статьи:
Почти всё, что вы хотели узнать, но боялись спросить о Crc32
Почти всё, что вы хотели узнать, но боялись спросить о Crc32. Продолжение
Как написать программу, которая проверяет свою целостность и содержит свою контрольную сумму
В приложении пример из 3 статьи. Скомпилируйте Self_CRC_Checker, затем сделайте ему нужную CRC32 с помощью FileCrcCorrector.

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.

Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 11.08.2007, 05:37
Оценка за ответ: 5

Отвечает: Архангельский Андрей Германович
Здравствуйте, Blackie!
Вообще то функция может храниться в самом .exe файле и вызываться из него же. В таких случаях в самом файле имеется константа, которая содержит дополнение до хэш-функции. В результате чего хэш-функция всего файла (включая саму хэш-функцию и ее вызов) дает 0, что легко детектируется
---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 11.08.2007, 10:37
Оценка за ответ: 3


Вопрос № 98.016
Здравствуйте уважаемые эксперты. Подскажите пожалуйста, какой функцией можно реализовать преобразование из типа string в 8-миричную систему счисления. Пример: "строка" -> "F1 F2 F0 EE EA E0".
Заранее спасибо.
Отправлен: 11.08.2007, 06:32
Вопрос задал: T1000 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Coupler
Здравствуйте, T1000!
Вообще-то, то, что Вы написали - это преобразование каждого символа в шестнадцатеричную систему счисления: ord(с)=241=F1h. В приложении функция, осуществляющая это преобразование и пример ее использования.

Приложение:

Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 11.08.2007, 06:58

Отвечает: Виктор Пырлик
Здравствуйте, T1000!

То что вы показали - "F1 F2 F0 EE EA E0" шестнадцатиричная запись, для этого достаточно использовать функцию Format:
HexString := Format('%0x',[DecValue]);
или
HexString := IntToHex( [DecValue] , [MinDigits] );

Ну а для восьмиричной записи (т.е. там, где числа от 0 до 7) дан код в приложении.

Приложение:

---------
Если ничего не помогло - надо читать инструкцию

Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 11.08.2007, 14:37


Вопрос № 98.018
Здравствуйте.
Имеется простенькое приложение, написанное на Delphi, в основном окне которого находятся несколько скрытых Label и Edit.
Задача заключается в том, чтобы из стороннего приложения (написанного на том-же Delphi) сделать эти объекты видимыми или получить их текст.
ID окна я нахожу по фиксированному заголовку с помощью FindWindow.
А вот что дальше - запамятовал, может быть использовать WM_NEXTDLGCTL? Раньше занимался Delphi & WinAPI, но это было несколько лет назад.

Спасибо.
Отправлен: 11.08.2007, 07:47
Вопрос задал: Mind (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Градов Юрий Михайлович
Здравствуйте, Mind!
Воспользуйтесь функций из приложения, она по сути должна найти хэндл Edit (Label), но можно поковыряться утилитой Restorator

Приложение:

---------
Глаза боятся - руки делают!

Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 11.08.2007, 13:44
Оценка за ответ: 5

Отвечает: Mishell
Здравствуйте, Mind!
можно использовать функцию EnumChildWindows
Ее описание:
function EnumChildWindows(WndParent: HWnd; EnumFunc: TFarProc; lparam: Longint): Bool;
Пеpечисляет дочеpние окна указанного pодителя, пеpедавая дочеpний описатель и lParam функции обpатного вызова. Пеpечисление заканчивается, если функция обpатного вызова
возвpащает нуль или если пеpечисляется последний дочеpний элемент.
Паpаметpы:
WndParent: Родительское окно пеpечисляемых дочеpних окон.
EnumFunc: Адpес экземпляpа пpоцедуpы функции обpатного вызова.
lParam: Значение, пеpеданное функции обpатного вызова.
Возвpащаемое значение:
Не нуль, если пеpечислены все дочеpние окна; 0 - в пpотивном случае.

Как работы с этой функцией можете посмотреть в этой статье:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=432
Ответ отправил: Mishell (статус: 5-ый класс)
Ответ отправлен: 13.08.2007, 11:32
Оценка за ответ: 5
Комментарий оценки:
спасибо. помогло

Отвечает: Примак Руслан Николаевич
Здравствуйте, Mind!
Поскольку контроля формы - это тоже окна, хэндлы на них могут быть получены через EnumChildWindows.
Текст можно получить функцией GetWindowText, которая получает заголовок - если окно - форма и содержание - если контрол. "The GetWindowText function copies the text of the specified window's title bar (if it has one) into a buffer. If the specified window is a control, the text of the control is copied. "

В приложении я использую функции для построения дерева окон, посмотрите примеры использования этих функций.

Приложение:

Ответ отправил: Примак Руслан Николаевич (статус: 3-ий класс)
Ответ отправлен: 13.08.2007, 12:11
Оценка за ответ: 5


Вопрос № 98.055
Здравствуйте!
Необходимо чтобы в листбокс заносились все сетевые интерфейсы и для каждого из них можно было бы изменить ip-адрес и маску подсети.
Менять - с помощью SetAdapterIPAddress. А вот как получить информацию об интерфесах.
Спасибо!
Отправлен: 11.08.2007, 15:12
Вопрос задал: Владимир Коваленко (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Владимир Коваленко!

Тема общирная, затрагивает API Windows. но вот хороший пример:

Получение IP-адреса и маски для всех сетевых интерфейсов

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 11.08.2007, 16:01
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо! Буду разбираться.


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное