Главная страница
    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.04 c
15-1204294018
Kolan
2008-02-29 17:06
2008.04.20
У кого нибудь осталась ветка про выбор emdedded СУБД?


3-1195535563
Skyle
2007-11-20 08:12
2008.04.20
Midas(D5)->DataSnap(BDS 2006/2007)


15-1204623305
Lola
2008-03-04 12:35
2008.04.20
Как юзер "случайно" мог переформатировать флешку?


4-1178810111
йцукенг
2007-05-10 19:15
2008.04.20
Как получить handle элемента управления окна?


2-1206555175
junkie
2008-03-26 21:12
2008.04.20
Excel процесс остается в памяти





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский