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

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

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

  #1  
Старый 19.02.2010, 17:54
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

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

DiffiT
Код:
unit ....;
   uses
       windows;
.......
function GetWindowDC(Wnd: HWnd): hDC;
stdcall; extenal 'user32.dll' name 'GetWindowDC';

  function GetModuleFileNameEx(hProcess: THandle; hModule: HINST;
    lpFilename: PChar; nSize: DWORD): DWORD; stdcall; external 'psapi.dll'
    name 'GetModuleFileNameExA';
    
  function EnumProcessModules(hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
                              Var lpcbNeeded: DWORD): BOOL Stdcall; external 'psapi.dll'
    name 'EnumProcessModules';


implementation
....
end.
в модуле должно выглядеть примерно так
если ты объявляешь функцию так же как она в библиотеке названа то имя
Код:
name 'GetModuleFileNameExA';
можно не писать..

Последний раз редактировалось transserg; 19.02.2010 в 17:57..
 
Ответить с цитированием

  #2  
Старый 19.02.2010, 18:11
DiffiT
Участник форума
Регистрация: 15.12.2009
Сообщений: 138
Провел на форуме:
287634

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

Цитата:
Сообщение от transserg  
DiffiT
Код:
unit ....;
   uses
       windows;
.......
function GetWindowDC(Wnd: HWnd): hDC;
stdcall; extenal 'user32.dll' name 'GetWindowDC';

  function GetModuleFileNameEx(hProcess: THandle; hModule: HINST;
    lpFilename: PChar; nSize: DWORD): DWORD; stdcall; external 'psapi.dll'
    name 'GetModuleFileNameExA';
    
  function EnumProcessModules(hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
                              Var lpcbNeeded: DWORD): BOOL Stdcall; external 'psapi.dll'
    name 'EnumProcessModules';


implementation
....
end.
в модуле должно выглядеть примерно так
если ты объявляешь функцию так же как она в библиотеке названа то имя
Код:
name 'GetModuleFileNameExA';
можно не писать..
вроде, так и делаю.. =) щас ещё раз попробую
 
Ответить с цитированием

  #3  
Старый 19.02.2010, 18:17
DiffiT
Участник форума
Регистрация: 15.12.2009
Сообщений: 138
Провел на форуме:
287634

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

спасибо, заработало)))) не туда писал, как оказалось)))) Пробовал писать в type, как функцию формы, пробовал в public и в private щас вкурил, зачем там end был))))
 
Ответить с цитированием

  #4  
Старый 19.02.2010, 18:21
DiffiT
Участник форума
Регистрация: 15.12.2009
Сообщений: 138
Провел на форуме:
287634

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

а по поводу реестра, у кого-нить есть рабочий исходник? А то я офигеваю с типов PAnsiChar и Cardinal
Всё никак с параметрами угадать не могу))))

Последний раз редактировалось DiffiT; 19.02.2010 в 18:23..
 
Ответить с цитированием

  #5  
Старый 19.02.2010, 18:28
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

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

DiffiT что именно хочешь с реестром делать. пример чтения и поиска есть... записать написать не сложно

Последний раз редактировалось transserg; 19.02.2010 в 18:34..
 
Ответить с цитированием

  #6  
Старый 19.02.2010, 18:54
DiffiT
Участник форума
Регистрация: 15.12.2009
Сообщений: 138
Провел на форуме:
287634

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

Цитата:
Сообщение от transserg  
DiffiT что именно хочешь с реестром делать. пример чтения и поиска есть... записать написать не сложно
мне простейщие операции чтение\запись))) функции уже до меня объявлены, а с параметрами борода
 
Ответить с цитированием

  #7  
Старый 19.02.2010, 18:49
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

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

Код:
Procedure ScanRegistry(RootKey:HKEY;SubKey:String);
  var
    hSubKey:HKEY;
    NumKey,NumValue:DWORD;
    NameKey:Pointer;
    NameValue:Pointer;
    BufSize:DWORD;
    KeyError,ValueError:integer;
  begin
    NumKey:=0;
    NumValue:=0;
    BufSize:=2048;
    if ThreadExit then
      exit;
    GetMem(NameValue,BufSize);
    GetMem(NameKey,BufSize);
    try
      if RegOpenKeyEx(RootKey, PChar(SubKey),0,KEY_ALL_ACCESS,hSubKey)=ERROR_SUCCESS then
        begin
          ValueError:=RegEnumValue(hSubKey,NumValue,NameValue,BufSize, nil, nil, nil, nil);
          if PChar(NameValue)<>'' then
            begin
              ResultAnalize(RootKey,PChar(SubKey),NameValue);
            end;
          inc(NumValue);
          while ValueError=ERROR_SUCCESS do
            begin
              BufSize:=2048;
              try
                ValueError:=RegEnumValue(hSubKey,NumValue,NameValue,BufSize, nil, nil, nil, nil);
                if ValueError=ERROR_SUCCESS then
                  if PChar(NameValue)<>'' then
                    begin
                      ResultAnalize(RootKey,PChar(SubKey),NameValue);
                      inc(TotalValue);
                    end;
              finally
                inc(NumValue);
              end;
            end;
          Sleep(2);
          KeyError:=ERROR_SUCCESS;
          while KeyError=ERROR_SUCCESS do
            begin
              BufSize:=2024;
              KeyError:=RegEnumKeyEx(hSubKey,NumKey,NameKey,BufSize,nil,nil,nil,nil);
              inc(TotalKeys);
              if KeyError=ERROR_SUCCESS then
                if SubKey='' then
                  ScanRegistry(RootKey,PChar(Concat(SubKey,PChar(NameKey))))
                else
                  ScanRegistry(RootKey,PChar(Concat(SubKey,'\',PChar(NameKey))));
              inc(NumKey);
            end;
        end;
    finally
      FreeMem(NameKey);
      FreeMem(NameValue);
      RegCloseKey(hSubKey);
    end;
  end;
процедура обхода дерева реестра
первый параметр подраздел один из
Код:
                      HKEY_CLASSES_ROOT 
                      HKEY_CURRENT_USER 
                      HKEY_LOCAL_MACHINE
                      HKEY_USERS           
                      HKEY_PERFORMANCE_DATA 
                      HKEY_CURRENT_CONFIG   
                      HKEY_DYN_DATA
второй параметр это ключ с которого начнется перебор если пустой то будет перебирать с корня под раздела
Код:
ResultAnalize(RootKey,PChar(SubKey),NameValue);
процедура анализа в которой ты собственно и удовлетворяют ли считанные данные условию поиска
 
Ответить с цитированием

  #8  
Старый 19.02.2010, 18:53
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

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

вот часть кода на чтение значения
Код:
  var
    hSubKey   : HKEY;
    MyValType : DWORD;
    BufSize   : DWORD;
    Buf: Pointer;
.....
      if RegOpenKey(RootKey, SubKey,hSubKey) = ERROR_SUCCESS then
        try
          if RegQueryValueEx(hSubKey, ValueName, nil, @MyValType, nil, @BufSize) =ERROR_SUCCESS then
            begin
              GetMem(Buf, BufSize);
              try
                if  RegQueryValueEx(hSubKey, ValueName, nil, @MyValType, Buf, @BufSize) =ERROR_SUCCESS then
                  begin
                      end;
......
SubKey "путь" до ключа в реестре
ValueName имя параметра
Buf указатель на значение параметра
 
Ответить с цитированием

  #9  
Старый 19.02.2010, 18:55
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

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

DiffiT стукни в асю =)
 
Ответить с цитированием

  #10  
Старый 19.02.2010, 18:57
DiffiT
Участник форума
Регистрация: 15.12.2009
Сообщений: 138
Провел на форуме:
287634

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

RegQueryValueEx(hSubKey, ValueName, nil, @MyValType, nil, @BufSize)
вот в этих сцабаках наверное и есть проблема
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Литература Delphi Sams С/С++, C#, Delphi, .NET, Asm 2 19.03.2010 19:46
Скачать Delphi 7, помощь. _casper_ С/С++, C#, Delphi, .NET, Asm 20 08.12.2009 04:54
Virus.Win32.Induc.a – новый вирус для Delphi ErrorNeo Уязвимости 37 26.08.2009 00:33
Virus.Win32.Induc.a или "Снова записки новичка" _=(mac)=_ Защита ОС: вирусы, антивирусы, файрволы. 5 24.08.2009 23:34
Помогите с WinAPI в Delphi EST a1ien С/С++, C#, Delphi, .NET, Asm 13 12.10.2006 11:06



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


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




ANTICHAT.XYZ