HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 20.08.2009, 01:41
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме:
5749763

Репутация: 1680


По умолчанию

Цитата:
Сообщение от Jes  
как вариант FindResource --> LoadResource --> LockResource
потом имея указатель на ресурс запись его в файл посредством WinApi (их благо много)

ps: размер файла узнаем через SizeofResource

код залить немогу тк с Делфи посл время дружу не очень
Жаль... без примера хз как реализовать ;(
 
Ответить с цитированием

  #2  
Старый 20.08.2009, 02:00
Jes
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме:
3371897

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

эхх , как то так ;)
Код:
Info:= FindResource(0, 'ИмяРесурса', rt_RCData);      
MyFile:= CreateFile(PChar('нехорошие_вещи.exe'), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(MyFile, LockResource(LoadResource(0, Info))^, SizeOfResource(0, Info), BytesWritten , nil);
CloseHandle(MyFile);
// ps: MyFile , Info , BytesWritten :DWORD;
 
Ответить с цитированием

  #3  
Старый 28.08.2009, 09:26
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме:
5749763

Репутация: 1680


По умолчанию

Цитата:
Сообщение от Jes  
эхх , как то так
Код:
Info:= FindResource(0, 'ИмяРесурса', rt_RCData);      
MyFile:= CreateFile(PChar('нехорошие_вещи.exe'), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(MyFile, LockResource(LoadResource(0, Info))^, SizeOfResource(0, Info), BytesWritten , nil);
CloseHandle(MyFile);
// ps: MyFile , Info , BytesWritten WORD;
И всё-же вернёмся к вопросу распаковки файла из ресурса.
Вот код программы на API которая должна это делать:
Код:
program LOL;
uses windows;
{$R MyRes.RES}
var MyFile , Info , BytesWritten  :DWORD;
BEGIN
Info:= FindResource(0, 'ass', rt_RCData);
MyFile:= CreateFile(PChar('virus.exe'), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(MyFile, LockResource(LoadResource(0, Info))^, SizeOfResource(0, Info), BytesWritten , nil);
CloseHandle(MyFile);
END.
В файле MyRes.RES содержится информация:
lol ass 'virus.exe'
В итоге при запуске программы создаётся пустой файл virus.exe, подскажите где ошибка в коде.
 
Ответить с цитированием

  #4  
Старый 20.08.2009, 17:50
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


По умолчанию

Как через Delphi узнать IP сайта, зная его доменное имя?

Последний раз редактировалось НTL; 20.08.2009 в 19:46..
 
Ответить с цитированием

  #5  
Старый 20.08.2009, 17:57
Snipe
Новичок
Регистрация: 17.08.2009
Сообщений: 2
Провел на форуме:
1683

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

Вопрос такой. Что надо написать в обработчике OnClick для RadioButton,чтобы при наступлении этого события обработчик вырубал комп?Ну, или посылал его в спящий режим?
 
Ответить с цитированием

  #6  
Старый 20.08.2009, 18:41
Dosia
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме:
1313455

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

Код:
function GetWinVersion: String;  
var  
   VersionInfo : TOSVersionInfo;  
   OSName      : String;  
begin  
   // устанавливаем размер записи 
   VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );  

   if Windows.GetVersionEx( VersionInfo ) then  
      begin  
         with VersionInfo do  
         begin  
            case dwPlatformId of  
               VER_PLATFORM_WIN32s   : OSName := 'Win32s';  
               VER_PLATFORM_WIN32_WINDOWS : OSName := 'Windows 95';  
               VER_PLATFORM_WIN32_NT      : OSName := 'Windows NT';  
            end; // case dwPlatformId  
            Result := OSName + ' Version ' + IntToStr( dwMajorVersion ) + '.' + IntToStr( dwMinorVersion ) +  
                      #13#10' (Build ' + IntToStr( dwBuildNumber ) + ': ' + szCSDVersion + ')';  
         end; // with VersionInfo  
      end // if GetVersionEx  
   else  
      Result := '';  
end;  

procedure ShutDown;  
const  
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';   // Borland forgot this declaration  
var  
  hToken       : THandle;  
  tkp          : TTokenPrivileges;  
  tkpo         : TTokenPrivileges;  
  zero         : DWORD;  
begin  
  if Pos( 'Windows NT', GetWinVersion) = 1  then // we've got to do a whole buch of things  
     begin  
        zero := 0;  
        if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then  
           begin  
             MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );  
             Exit;  
           end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)  
        if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then  
           begin  
             MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );  
             Exit;  
           end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)  


        // SE_SHUTDOWN_NAME  
        if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[ 0 ].Luid ) then  
           begin  
              MessageBox( 0, 'Exit Error', 'LookupPrivilegeValue() Failed', MB_OK );  
              Exit;  
           end; // if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[0].Luid )  
        tkp.PrivilegeCount := 1;  
        tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;  

        AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );  
        if Boolean( GetLastError() ) then  
           begin  
              MessageBox( 0, 'Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK );  
              Exit;  
           end // if Boolean( GetLastError() )  
        else  
           ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );  
      end // if OSVersion = 'Windows NT'  
   else  
      begin // just shut the machine down  
        ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );  
      end; // else  
end;

procedure TfrmMain.RadioButton1Click(Sender: TObject);
begin
ShutDown;
end;
Взято с Исходников.ru
 
Ответить с цитированием

  #7  
Старый 20.08.2009, 18:48
Snipe
Новичок
Регистрация: 17.08.2009
Сообщений: 2
Провел на форуме:
1683

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

Спасибо
 
Ответить с цитированием

  #8  
Старый 20.08.2009, 23:03
Nobody4alj
Новичок
Регистрация: 20.08.2009
Сообщений: 4
Провел на форуме:
14412

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

DosiaПомое
му так намного легче будет

Код:
procedure TfrmMain.RadioButton1Click(Sender: TObject);
begin
ExitWindowsEx(EWX_FORCE or ewx_force,0);
end;
Цитата:
Сообщение от НTL  
Как через Delphi узнать IP сайта, зная его доменное имя?
Код:
uses winsock;

function IPAddrToName(IPAddr : string): string;
var
  SockAddrIn: TSockAddrIn;
  HostEnt: PHostEnt;
  WSAData: TWSAData;
begin
  WSAStartup($101, WSAData);
  SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
  HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    result := StrPas(Hostent^.h_name)
  else
    result:='';
end;

//Пример использования
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IPAddrToName(Edit1.Text);
end;
взято с delphisources
 
Ответить с цитированием

  #9  
Старый 21.08.2009, 00:22
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


По умолчанию

Цитата:
Сообщение от Nobody4alj  
DosiaПомое
му так намного легче будет

Код:
procedure TfrmMain.RadioButton1Click(Sender: TObject);
begin
ExitWindowsEx(EWX_FORCE or ewx_force,0);
end;


Код:
uses winsock;

function IPAddrToName(IPAddr : string): string;
var
  SockAddrIn: TSockAddrIn;
  HostEnt: PHostEnt;
  WSAData: TWSAData;
begin
  WSAStartup($101, WSAData);
  SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
  HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt <> nil then
    result := StrPas(Hostent^.h_name)
  else
    result:='';
end;

//Пример использования
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := IPAddrToName(Edit1.Text);
end;
взято с delphisources

1. Я уже нашол
2. это не то, это зная IP узнать имя (Проверяй)
3. и взять это с исходников.ру
 
Ответить с цитированием

  #10  
Старый 20.08.2009, 23:14
Dosia
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме:
1313455

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

Цитата:
procedure TfrmMain.RadioButton1Click(Sender: TObject);
begin
ExitWindowsEx(EWX_FORCE or ewx_force,0);
end;
Чушь, сам то пробовал? ТС просил не logoff, а shutdown (в частности на XP именно logoff). Ты думаеш определение версии окон просто так от нечего делать сделали? Чтобы программа побольше занимала?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2569 10.05.2026 13:27
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



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


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




ANTICHAT ™ © 2001- Antichat Kft.