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
   
 
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 3349


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

для тех кто не умеет юзать файл маппинг вот пример:

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  Windows;

const
  find_data : array [0..4] of byte = ($CD, $16, $0F, $85, $09);
  replace_data : array [0..4] of byte = ($CD, $16, $90, $90, $90);

  // выдрал  sysutils
function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; assembler;
asm
        PUSH    ESI
        PUSH    EDI
        MOV     ESI,P1
        MOV     EDI,P2
        MOV     EDX,ECX
        XOR     EAX,EAX
        AND     EDX,3
        SAR     ECX,2
        JS      @@1     // Negative Length implies identity.
        REPE    CMPSD
        JNE     @@2
        MOV     ECX,EDX
        REPE    CMPSB
        JNE     @@2
@@1:    INC     EAX
@@2:    POP     EDI
        POP     ESI
end;

var
  hFile : THANDLE;
  hFileMap : THANDLE;
  Mem : pointer;
  FileSize : dword;
  x : dword;
begin
  hFile := CreateFileA('c:\Relase.exe', GENERIC_WRITE or GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if hFile <> INVALID_HANDLE_VALUE then
  begin
    FileSize := GetFileSize(hFile, nil);
    hFileMap := CreateFileMappingA(hFile, nil, PAGE_READWRITE , 0, FileSize, nil);
    if hFileMap <> INVALID_HANDLE_VALUE then
    begin
      Mem := MapViewOfFile(hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, FileSize);
      if Mem <> nil then
      begin
        for x := 0 to FileSize - 6 do
        begin
          if CompareMem(pointer(dword(Mem) + x), @find_data[0], 5) then
          begin
            CopyMemory(pointer(dword(Mem) + x), @replace_data[0], 5);
            break;
          end;
        end;
        UnmapViewOfFile(Mem);
      end;
      CloseHandle(hFileMap);
    end;
    CloseHandle(hFile);
  end;


end.
Такими методом можно очень быстро найти данные любой длинные и также быстро заменить их.
Хотя вместо CompareMem можно было просто проверить 4 байта, а потом 1 байт и это было бы быстрее при небольшом размере проверяемых данных. т.е. примерно так проверять
Код:
if (dword(pointer(dword(Mem) + x)^) = dword(pointer(@find_data[0])^)) and
(byte(pointer(dword(Mem) + x + 4)^) = find_data[4]) then
И теперь главное. если таким методом патчить виндовые проги (незапущенные) то вл:егкую обходится WFP защита. Я так патчил эксплорер.
Когда его прибиваеш, патчиш, и потом опять запускаеш, то на Win XP WFP молчал.

Последний раз редактировалось slesh; 23.10.2009 в 10:27..
 

  #4702  
Старый 23.10.2009, 11:16
s0l_ir0n
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
Провел на форуме:
813785

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

slesh, твоя захардкоденая функция CompareMem - это ведь тоже самое, что и lstrcpyn?
 

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

Репутация: 3349


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

нет lstrcpyn - это копирование строки, а CompareMem сравнение памяти
 

  #4704  
Старый 24.10.2009, 14:36
DiHWO
Участник форума
Регистрация: 23.10.2009
Сообщений: 103
Провел на форуме:
289669

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

ребят, есть статья по отправке сокетов через хттп протокол? оч надо.
 

  #4705  
Старый 24.10.2009, 16:40
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


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

Как узнать сколько времени у таймера осталось? Без камасутры
 

  #4706  
Старый 24.10.2009, 16:45
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


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

Цитата:
Сообщение от DiHWO  
ребят, есть статья по отправке сокетов через хттп протокол? оч надо.
Если тебе надо для теста, а не для написания сложных программ, то можешь юзать Indy. Это встроенный компоннент Delphi.

WinSock, конечно, лучше, но его используй потом - когда освоишь азы протокола
 

  #4707  
Старый 24.10.2009, 16:47
sherlock
Новичок
Регистрация: 22.08.2009
Сообщений: 2
Провел на форуме:
661915

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

Прога должна отправлять собщение на ICQ.

Но не отправляет, почему???

procedure TForm1.Button1Click(Sender: TObject);
begin
ICQClient1.UIN:=strtoint('555453705');
ICQClient1.Password:='lODZjetE';
ICQClient1.ICQServer:='login.icq.com';
ICQClient1.ICQPort:=strtoint('5190');
ICQClient1.Login();
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ICQClient1.SendMessage(StrToInt64('554104078'),'He llo!!!TEST!!!');
end;
 

  #4708  
Старый 24.10.2009, 16:59
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


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

Цитата:
Сообщение от sherlock  
Прога должна отправлять собщение на ICQ.

Но не отправляет, почему???

procedure TForm1.Button1Click(Sender: TObject);
begin
ICQClient1.UIN:=strtoint('555453705');
ICQClient1.Password:='lODZjetE';
ICQClient1.ICQServer:='login.icq.com';
ICQClient1.ICQPort:=strtoint('5190');
ICQClient1.Login();
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ICQClient1.SendMessage(StrToInt64('554104078'),'He llo!!!TEST!!!');
end;

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
ICQClient1.SendMessage(554104078,'Hello!!!TEST!!!');
end;
Кстати:

Код:
ICQClient1.UIN:=555453705;

Последний раз редактировалось НTL; 24.10.2009 в 17:08..
 

  #4709  
Старый 24.10.2009, 17:08
sherlock
Новичок
Регистрация: 22.08.2009
Сообщений: 2
Провел на форуме:
661915

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

Цитата:
Сообщение от НTL  
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
ICQClient1.SendMessage(554104078,'Hello!!!TEST!!!');
end;
Нероботает...
 

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

Репутация: 357


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

Цитата:
Сообщение от sherlock  
Нероботает...

Анти-спам на 554104078 есть? Если до то добавь 555453705 в КЛ 554104078
 
 





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


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




ANTICHAT.XYZ