Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.20;
Скачать: CL | DM;

Вниз

Игорь Шевченко   Найти похожие ветки 

 
who   (2008-03-09 20:01) [0]

Пару лет назад выкладывали в форуме исходники, в топике: "Любителям "скырть процесс" под NT посвящается...". Там была ссылка на архив с модулями. Архив сейчас не доступен.

http://www.schevchenko.net.ru/SRC/Common_60.zip

Нашел все модули вроде из архива, но не смог найти PeImage.

Помогите пожалуйста. Спасибо.


 
Johnmen ©   (2008-03-09 20:19) [1]

Оригинал цитаты неточен.
В оригинал "скырть роцесс".


 
Игорь Шевченко ©   (2008-03-09 20:26) [2]


> Помогите пожалуйста. Спасибо.


Можно поискать в http://code.progler.ru/get/48

или

unit PeImage;

interface
uses
 Windows, Classes, HSFileMapper;

type
 TSectionList = class(TList)
 private
   function GetItems(I: Integer): PImageSectionHeader;
 public
   property Items[I: Integer]: PImageSectionHeader read GetItems; default;
 end;

 THSPEImage = class
 private
   FMapper: THSFileMapper;
   FSections: TSectionList;
   function GetRVAData(AVirtualAddress: ULONG): Pointer;
 public
   constructor Create (const AFileName: string);
   destructor Destroy; override;
   property RVAData[VirtualAddress: ULONG]: Pointer read GetRVAData;
 end;

implementation

type
 PIMAGE_NT_HEADERS = PImageNtHeaders;
 PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
 PIMAGE_DATA_DIRECTORY = ^IMAGE_DATA_DIRECTORY;
 
{ THSPEImage }

constructor THSPEImage.Create(const AFileName: string);
var
 PSection: PImageSectionHeader;
 I: Integer;
 Header: PIMAGE_NT_HEADERS;
begin
 FMapper := THSFileMapper.Create (AFileName);
 FSections := TSectionList.Create;
 Header := PIMAGE_NT_HEADERS(FMapper.Map +
   PIMAGE_DOS_HEADER(FMapper.Map)^._lfanew);
 PSection := PImageSectionHeader(DWORD(@(Header^.OptionalHeader)) +
   Header^.FileHeader.SizeOfOptionalHeader);
 for I:=1 to Header^.FileHeader.NumberOfSections do begin
   FSections.Add (PSection);
   Inc(PSection);
 end;
end;

destructor THSPEImage.Destroy;
begin
 FSections.Free;
 inherited;
end;

function THSPEImage.GetRVAData(AVirtualAddress: ULONG): Pointer;
var
 I: Integer;
begin
 Result := nil;
 for I:=0 to Pred(FSections.Count) do
   with FSections[I]^ do
     if (VirtualAddress <= AVirtualAddress) and
        ((VirtualAddress + Misc.VirtualSize) > AVirtualAddress) then begin
       Result := FMapper.Map + PointerToRawData +
         (AVirtualAddress - VirtualAddress);
     end;
end;

{ TSectionList }

function TSectionList.GetItems(I: Integer): PImageSectionHeader;
begin
 Result := PImageSectionHeader (inherited Items[I]);
end;

end.


 
who   (2008-03-09 20:43) [3]

Спасибо!

А ещё не будет HSFileMapper, упомянутый в PeImage? В архиве не удалось отыскать.


 
Игорь Шевченко ©   (2008-03-09 21:05) [4]


> А ещё не будет HSFileMapper


{
  Модуль: HSFileMapper

  Описание: Класс, обеспечиващий создание файла, проецируемого в память

  Автор: Игорь Шевченко

  Дата создания: 07.02.2003

  История изменений:
}
unit HsFileMapper;
{$I HsCommon.Inc}
{$IFDEF _D6}
{$WARN SYMBOL_PLATFORM OFF}
{$WARN SYMBOL_DEPRECATED OFF}
{$ENDIF}

interface
uses
 Windows;

type
 THSFileMapper = class
 private
   FFileHandle: THandle;
   FFileSize: DWORD;
   FMap: PChar;
   FFileName: string;
   function GetEndMap: PChar;
 public
   constructor Create (const AFileName: string);
   destructor  Destroy; override;
   property Map: PChar read FMap;
   property EndMap: PChar read GetEndMap;
   property FileSize: DWORD read FFileSize;
   property FileName: string read FFileName;
 end;

implementation
uses
 SysUtils;

{ THSFileMapper }

constructor THSFileMapper.Create(const AFileName: string);
var
 SizeHighPart: DWORD;
 FileMapping: THandle;
begin
 FFileName := AFileName;
 FFileHandle := CreateFile (PChar(AFileName), GENERIC_READ,
   FILE_SHARE_READ or FILE_SHARE_WRITE,
   nil, OPEN_EXISTING, 0, 0);
 if FFileHandle = INVALID_HANDLE_VALUE then
   RaiseLastWin32Error;
 FFileSize := GetFileSize(FFileHandle, @SizeHighPart);
 FileMapping := CreateFileMapping (FFileHandle, nil, PAGE_READONLY, 0, 0, nil );
 if FileMapping = 0 then
   RaiseLastWin32Error;
 FMap := MapViewOfFile (FileMapping, FILE_MAP_READ, 0, 0, 0 );
 CloseHandle (FileMapping);
 if not Assigned(FMap) then
   RaiseLastWin32Error;
end;

destructor THSFileMapper.Destroy;
begin
 if Assigned(FMap) then
   UnmapViewOfFile (FMap);
 if FFileHandle <> INVALID_HANDLE_VALUE then
   CloseHandle (FFileHandle);
 inherited;
end;

function THSFileMapper.GetEndMap: PChar;
begin
 Result := FMap + FFileSize;
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2008.04.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
15-1204861461
Slider007
2008-03-07 06:44
2008.04.20
С днем рождения ! 7 марта 2008 пятница


2-1206273219
Бегущий человек
2008-03-23 14:53
2008.04.20
Как заюзать функцию из С-файла в проекте Delphi?


4-1187348602
Ricks
2007-08-17 15:03
2008.04.20
Странное ограничение....


15-1204735704
Zeqfreed
2008-03-05 19:48
2008.04.20
Подскажите, пожалуйста, аудиоплеер на флэше


2-1206440513
031178
2008-03-25 13:21
2008.04.20
Помогите плиз...