Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.048 c
9-1168767810
GamerProg
2007-01-14 12:43
2008.04.20
Проффи программист разработчик игр


2-1206517260
проня
2008-03-26 10:41
2008.04.20
Помогите найти ошибку


2-1206286332
hahol_64_rus
2008-03-23 18:32
2008.04.20
не могу и все тут ....(с логикой )


2-1206038360
Nicky000
2008-03-20 21:39
2008.04.20
SQL


15-1204861461
Slider007
2008-03-07 06:44
2008.04.20
С днем рождения ! 7 марта 2008 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский