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

СообЧА. Программирование на Delphi


Служба Рассылок Subscribe.Ru
Subscribe.Ru :СообЧа программирование на дельфи !
—Сообча : программирование на дельфи

Некому оформить сайт ?
Нужен красивый баннер ?
Нет времени на обновление сайта?

Качественное оформление, работа с самыми современными средствами, FLASH,CGI,JAVA
Тогда вам сюда !!!!
За 50$-100$ мы поможем


----- То что вы хотели знать....

 

 В этом выпуске:

Грандиозное событие! Стартовал новый проект нашей рассылки , его название Alter Reality. Подробности можно узнать тут .

 

Рассылки Subscribe.Ru это стильно удобно, и информативно!
СообЧа (СООБщество ЧАйников). Обмен опытом, вопросы, ответы.


подпишись и подпиши друга!!!!

 Contact (Связь с Нами):

Pixel@novgorod.net + Subject: (см ниже)

 

Vcl Haunting

"Золотой Чайник"

Вопрос по дельфи N (N номер версии)

Help!

Реклама

Полезный линк

 

 

Новости СЕТИ

К заголовку

****CD котый вам пригодится!!!****
Конструктор 3D игр: Этот, по сути уникальный CD , нечто среднее между языком программирования, 3д движком и лего конструктором(в том плане что можно соорудить что-либо стоящее из уже готовых "деталей"). Сам я пока обдумываю покупку данного диска, но тем, кто мечтает написать свою игру, с минимумом программирования просто обязан это купить.

Здесь можно купить диск и посмотреть пару скриншотов

Книги по Дельфи которые ВЫ ОБЯЗАНЫ ПРОЧИТАТЬ...

Не столько учебник, сколько справочное пособие по наиболее используемым алгоритмам и командам...

Пожалуй лучший учебник по дельфи 6 на сегодняшний день, вам даже не надо знать дельфи, чтобы начать ...

  • Дельфи 5: Руководство разработчика БД
  •  

    DirectX. Графика в проектах Delphi (+CD - ROM)
    Лучшее пособие для тех кто решил связаться с DirectX, по слухам на CD помимо примеров есть DirectxSDK7.0 от Microsoft...

    Среда программирования Delphi 5-6. Справочное пособие
    Книга полностью описывает среду программирования Delphi, которая включает в себя полный набор визуальных инструментов для быстрой и профессиональной разработки приложений для различных операционных систем, кроме того рассмотрены проблемы перехода между этими версиями дельфи.

    Программирование в Delphi 6 (+ floppy дискета ) Чайникам рекомендуется!!!

    Книга содержит методические и справочные материалы по новой версии системы визуального объектно-ориентированного программирования Delphi 6 и предшествующим версиям Delphi 5 и 4. Рассмотрены такие новые возможности Delphi, как кросс-платформенные приложения, технологии доступа к данным ADO, InterBase Express, dbExpress, компоненты — серверы СОМ, технологии распределенных приложений СОМ, CORBA, MIDAS, новая методика диспетчеризации действий...


Новый сайт в новом году, с таким девизом я переделал наш сайт, и добавил туда 3 новых компонента, ктати о новых сайтах совсем недавно обнаружил ЗДЕСЬ ОГРОМНЫЙ СКЛЛАД VCL как бесплатных, так и коммерческих.

 

 

Самоликвидация...

К заголовку

// проверено и работает для WIN 9x. Не работает в WinNT

При работе программы происходит блокировка исполняемого файла программы на диске, до завершения работы программы. Данный код позволяет программе стереть саму себя с диска. При этом если программа уже загрузилась в память, то может работать и работать. Метод действия: создаётся временный bat файл в временной директории на диске, который удаляет программу и удаляет себя сам. При использовании кода в защите желательно использовать хотя бы простейшую шифровку текстовых строчек XOR-ом - они хорошо просматриваются диссассемблером и разумеется, хакеру не составит труда обнаружение защиты.

--------------------------------------------------------------------------------
var Filename:String;

aTempBuf:array[0..MAX_PATH] of char;
bat_file:String;
f:TextFile;
si:TStartUpInfo;
pi:TProcessInformation;
begin
FileName:=Application.ExeName;
if GetShortPathName(PChar(FileName),aTempBuf,Sizeof(aTempBuf)-1)>0 then
FileName:=StrPAs(aTempBuf);

GetEnvironmentVariable('TEMP',aTempBuf,MAX_PATH);
bat_file:=StrPas(aTempBuf)+'\'+'delself.bat';
if GetShortPathName(PChar(bat_file),aTempBuf,Sizeof(aTempBuf)-1)>0 then
bat_file:=StrPAs(aTempBuf);

AssignFile(f,bat_file);
rewrite(f);
Writeln(f,'@echo off');
Writeln(f,':try');
Writeln(f,'del '+FileName);
Write(f,'if exist '+FileName);
Writeln(f,' goto try');
Write(f,'del '+ bat_file);
CloseFile(f);
//Memo1.Lines.LoadFromFile(bat_file);

ZeroMemory(@si,sizeof(si));
si.cb:=sizeof(si);
si.wShowWindow:=SW_HIDE;
si.dwFlags:=STARTF_USESHOWWINDOW;
CreateProcess(nil,PChar(bat_file),nil,nil,False,IDLE_PRIORITY_CLASS or DETACHED_PROCESS,
nil,nil,si,pi);

Привожу полностью все файлы проекта:

Project1.dpr

--------------------------------------------------------------------------------
program Project1;

uses

Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Unit1.dfm

--------------------------------------------------------------------------------
object Form1: TForm1

Left = 192
Top = 107
Width = 435
Height = 300
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.style="[]"
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 48
Top = 200
Width = 313
Height = 49
Caption = 'Del me !'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -32
Font.Name = 'MS Sans Serif'
Font.style="[]"
ParentFont = False
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 48
Top = 16
Width = 305
Height = 169
TabOrder = 1
end
end

Unit1.pas

--------------------------------------------------------------------------------
unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type

TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var Filename:String;

aTempBuf:array[0..MAX_PATH] of char;
bat_file:String;
f:TextFile;
si:TStartUpInfo;
pi:TProcessInformation;
begin
FileName:=Application.ExeName;
if GetShortPathName(PChar(FileName),aTempBuf,Sizeof(aTempBuf)-1)>0 then
FileName:=StrPAs(aTempBuf);

GetEnvironmentVariable('TEMP',aTempBuf,MAX_PATH);
bat_file:=StrPas(aTempBuf)+'\'+'delself.bat';
if GetShortPathName(PChar(bat_file),aTempBuf,Sizeof(aTempBuf)-1)>0 then
bat_file:=StrPAs(aTempBuf);

AssignFile(f,bat_file);
rewrite(f);
Writeln(f,'@echo off');
Writeln(f,':try');
Writeln(f,'del '+FileName);
Write(f,'if exist '+FileName);
Writeln(f,' goto try');
Write(f,'del '+ bat_file);
CloseFile(f);
Memo1.Lines.LoadFromFile(bat_file);

ZeroMemory(@si,sizeof(si));
si.cb:=sizeof(si);
si.wShowWindow:=SW_HIDE;
si.dwFlags:=STARTF_USESHOWWINDOW;
CreateProcess(nil,PChar(bat_file),nil,nil,False,IDLE_PRIORITY_CLASS or DETACHED_PROCESS,
nil,nil,si,pi);
end;

end.

 

 

Защита перекрытием кода

К заголовку

Не секрет, что совершенной защиты не существует, как некоторые авторы и фирмы не пыжатся , но они не правы. Хорошая защита должна обеспечить такой уровень, чтобы на вскрытие защиты нужно было затратить усилия сравнимые с самостоятельным написанием программы. Разумеется она должна быть многоуровневой и перекрывающейся (т.е уровни должны работать независимо). Не забывайте, что хорошие взломщики неплохо знают ассемблер и высокоуровневе ухищрения от них не спасают. Следовательно защищаться нужно тоже используя ассемблер.Не считайте, что это уже не модно или тяжело. Хороший программист не брезгует ассемблером и высшей математикой.

Мой любимый метод для наколки - это перекрывающийся код. Он может показаться немного сложным для большинства из нас, но зная нескольо HEX-значений инструкций процессора,вы тоже сможете сделать небольшой по размеру перекрывающийся код. Перекрывающийся код можно сделать сколь угодно многоуровневым, просто здесь я покажу только в каком направлении надо "копать".

--------------------------------------------------------------------------------
temp_string :='Den is Com';
asm

mov ax,$05EB
@as: jmp @as-2
end;
ShowMessage('Сообщение');

На первый взгляд это может сконфузить вас, но все это очень просто. Первая инструкция заносит "левое" значение в AX. Вторая делает переход на значение операнда команды MOV AX. '05EB' переводится как 'jmp$+5' (помните, что слова хранятся задом наперед) Этот переход перепрыгивает первый JMP и продолжает дальше по коду.Вероятно, не будет достаточно для защиты, но продемонстрирует технику. Взгляните на это как пример.

присваивание temp_string :='Den is Com' существенной роли не играет :), но может использоваться при отладке программы - хорошо присматривается при использовании дизассемблера. Скорее всего ваши первые шаги будут приводить к частому зависанию компьютера, но не отчаивайтесь - это того стоит. Попробуйте разработать свой способ сравнения строк (чаше всего ловятся именно эти инструкции), попробуйте замаскировать инструкции зависания компьютера и т.д.


 

Zaluskiy Anton(COOLer)  и Khrapunov Kirill(Pixel)  - ведущие проекта    "Мир Delphi" (C) Pixelsoftware(Pixel)& Delphi 2000-2002(COOLer)


Озон! TopList SpyLOG RLE Banner Network
http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

 

Another Banner Network



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное