[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. dotMX

    dotMX New Member

    Joined:
    4 Dec 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    К сожалению, именно Delphi. Объединить = создать новый файл, в котором один звук проигрывается сразу же после окончания другого.
     
  2. Derec

    Derec Elder - Старейшина

    Joined:
    8 Nov 2007
    Messages:
    74
    Likes Received:
    4
    Reputations:
    0
    Вопрос знатокам Delphi :)

    В интернете несложно найти код для определения dll, загруженных приложением. Мне бы надо узнать какие функцие приложение импортирует из этих dll. Пример:

    Project1.exe использует dll: kernel32, user32, psapi, и т.д. И каким то образом нужно узнать, что Project1.exe импортирует WriteProcessMemory из kernerl32, к примеру. Вообщем то, как это делают отладчики. Кто-нибудь в курсе как? :)
     
  3. Pr0mo

    Pr0mo Member

    Joined:
    26 Nov 2009
    Messages:
    29
    Likes Received:
    31
    Reputations:
    4
    Подключай модуль imagehlp.pas

    и как вариант можно использовать/модифицировать такой код:
    Code:
    function TakeProcessID(Process: string): Integer;
    var
      WH: THandle;
    begin
      result := 0;
      WH := FindWindow(pchar(Process),nil);
      if WH <> 0 then
        GetWindowThreadProcessID(WH, @Result);
    end;
    
    function EnumSymbols(SymbolName: PChar; SymbolAddress, SymbolSize: ULONG;
      Strings: Pointer): Bool; stdcall;
    begin
      TStrings(Strings).Add(IntToHex(SymbolAddress,8)+' - '+SymbolName);
      Result := True;
    end;
    
    function GetFunctionsFromDLL(Dllflname:string; Strings: TStrings):Boolean;
    var
      Handle: THandle;
      hProcess: THandle;
    begin
      Strings.Clear;
      Result := False;
      Handle:=LoadLibrary(PChar(Dllflname));
      hProcess := GetCurrentProcess;
      if hProcess<>0 then
      begin
      if not SymInitialize(hProcess, nil, True) then
        Exit;
      if not SymEnumerateSymbols(hProcess,Handle, EnumSymbols, Strings) then
       Exit;
       SymUnloadModule(hProcess, Handle);
       SymCleanup(hProcess);
      end;
      Result := True;
    end;
    Думаю интуитивно будет понятно :)
     
  4. Isaev

    Isaev Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    120
    Likes Received:
    19
    Reputations:
    6
    Pr0mo так просто перечислишь все функции, а не те, которые используются
    Derec Тебе таблицу импорта нужно считывать, в ней всё, что тебе нужно
     
  5. Derec

    Derec Elder - Старейшина

    Joined:
    8 Nov 2007
    Messages:
    74
    Likes Received:
    4
    Reputations:
    0
    Ага, попробовал, подойдет думаю :) Спасибо огромное!

    ммм.. а можно Ваш пример-набросок как это раелизовть? :rolleyes:
     
  6. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    ну хоть не всё, если dll динамически загружается или она накрыта какой-нибудь гадостью, которая "режет" таблицу импорта, то тут этот способ не поможет)
     
    #7486 alexey-m, 1 Jan 2011
    Last edited: 1 Jan 2011
    1 person likes this.
  7. Isaev

    Isaev Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    120
    Likes Received:
    19
    Reputations:
    6
    Просто тупо пользовать чужие примеры не понимая принципа - смысла мало... Почитай основы, например ТУТ Считаешь таблицу секций, найдёшь в ней секцию импорта (обычно .idata) в ней таблица импорта, весь импорт описан последовательными структурами, легко считаешь (сами структуры найдёшь в туторе 6)
    Для общего развития можешь ещё почитать Румянцева, Работа с файлами в Win32...

    Конечно Не поможет... в первом случае нужно хучить LoadLibrary() и GetProcAddress(), а во втором брать таблицу импорта не из exe, а из запущенного процесса, там она уже будет восстановлена
     
    #7487 Isaev, 2 Jan 2011
    Last edited: 2 Jan 2011
  8. admink1

    admink1 Member

    Joined:
    12 Jun 2009
    Messages:
    63
    Likes Received:
    21
    Reputations:
    1
    нужно сделать проверку, входит ли множество чисел(1..10) в слово word

    //так оишбку выдает
    x:=pos('1'..'10', word);

    //так тоже
    var k: 1..10;
    x:=pos(k, word);


    как быть? :)
     
  9. Isaev

    Isaev Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    120
    Likes Received:
    19
    Reputations:
    6
    admink1 Так в любом случае не получится... Нужно цикл делать и проверять каждое число по порядку, при чём если после 1 идёт 0, то искать 1 дальше
     
    1 person likes this.
  10. ФиЛя

    ФиЛя New Member

    Joined:
    15 Jun 2010
    Messages:
    8
    Likes Received:
    2
    Reputations:
    0
    Делфи

    Посоветуйте хороший самоучитель.
     
  11. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Нету 1-ого хорошего самоучителя.
    Бери любую книгу, читай, где непонятно, ищи в нете или другую книгу.
     
  12. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66

    DRKB Explorer
     
  13. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    про работу с куками мог бы кто либо прояснить обстановку?
    а вернее отправку куков серверу после авторизации
    что то гуглю гуглю,а толка пока нет что то
    куки вот такие;

    Cookie: cookpar=eaCBhGlsqQ; cooklog=wMy7rKs; cookname=xeras; SID=3jrdehhvp137bdshkap20d3vj1

    не могли бы объяснить как их в заголовке передать?
    так? Http1.Request.CustomHeaders.Add(''+Cookie);
     
  14. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    возможно ли реализовать такую функцию
    делать снимок экрана и искать на этом снимке определенный цвет пикселя?
    если возможно то как?
     
  15. Isaev

    Isaev Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    120
    Likes Received:
    19
    Reputations:
    6
    Возможно... Легко...
    типа того
    Code:
      Tmp:=TBitmap.Create;
      Tmp.Width:=Screen.Width;
      Tmp.Height:=Screen.Height;
      Tmp.PixelFormat:=pf24bit;
      DW:=GetDesktopWindow;
      DC:=GetDC(DW);
    
      BitBlt(Tmp.Canvas.Handle,0,0,Tmp.Width,Tmp.Height,DC,0,0,SRCCOPY);
      ReleaseDC(DW,DC);
    Потом ищешь
     
  16. Isaev

    Isaev Elder - Старейшина

    Joined:
    25 Jul 2007
    Messages:
    120
    Likes Received:
    19
    Reputations:
    6
    IdCookies положи на форму
    и погугли по ним, в первых ссылках найдёшь
    работает, но глючно, как и всё инди
     
  17. foozzi

    foozzi Member

    Joined:
    13 Apr 2010
    Messages:
    195
    Likes Received:
    13
    Reputations:
    5
    подскажите плиз у меня есть dll файл написан на delphi (peid показал) этот файл создает часы в игре (lineage 2) и когда запускается клиент показывается такая вот надпись
    [​IMG]

    как мне ее отредактировать??
     
  18. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Возможно, в HEX редакторе открыть DLL и найти требуемые строки. Потом отредактировать их.
     
  19. foozzi

    foozzi Member

    Joined:
    13 Apr 2010
    Messages:
    195
    Likes Received:
    13
    Reputations:
    5
    они будут так же написаны на русском? или в hex формате?
     
  20. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Нет, там строка может быть записана с помощью ASCII символов, либо с помощью Unicode. Также строка может и вовсе не найтись, если автор сделал какую нибудь, даже самую простую защиту.
     
Thread Status:
Not open for further replies.