Форум: "Прочее";
Текущий архив: 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