PDA

View Full Version : بدست اورن هندل فایلهای خاص



fire-wizard
شنبه 20 بهمن 1386, 16:44 عصر
با سلام ....

دوستا چه جوری باید هندل فایلهای در حال اجرا رو که پنجره ندارن بدست بیارم ؟؟؟

مثلا فایل svchost.exe که یک سرویس هست و میخوام هندلش رو داشته باشم و بهش کد تزریق کنم ....

در ضمن قصد من ساخت ویروس نیست بلکه فقط قصد ایجاد امنیت رو دارم ....


با تشکر ...... لطفا سریعا کمک کنید چون خیلی بهش نیاز دارم

Inprise
یک شنبه 21 بهمن 1386, 05:18 صبح
باید Process id اش رو بدست بیاری و بعد OpenProcess اش کنی که هندلش رو بگیری ، و بعد با VistualAllocateEx فضای مورد نظرت رو بگیری و با WriteProcessMemory بنویسی و بعد با CreateRemoteThread کدت رو به عنوان یک ریسمان فعال در پروسه جدید اجرا کنی . هم نمونه اینجا گذاشته شده و هم خودت بگردی روی گوگل پیدا میکنی . اگه سوالی بود بپرس

fire-wizard
یک شنبه 21 بهمن 1386, 05:25 صبح
با سلام ....

من نمونش رو دارم ولی نمیدونم چرا به جز NotePad هر کاری میکنم روی هیچ چیز دیگه ای کار نمیکنه ....


var
Form1: TForm1;
procedure Inject(ProcessHandle: longword; EntryPoint: pointer);
function Main(dwEntryPoint: Pointer): longword; stdcall;
implementation

{$R *.dfm}
{$IMAGEBASE $13140000}

function Main(dwEntryPoint: Pointer): longword; stdcall;
begin
{now we are in notepad}
LoadLibrary('kernel32.dll');
LoadLibrary('user32.dll');
MessageBox(0, 'Hello, now I am in the memory of another process!', 'Hijacked Process', 0);
MessageBox(0, 'Now we can do anything we want. :)', 'Hijacked Process', 0);
MessageBox(0, 'You can even delete the original exe and these message boxes will still be here.', 'Hijacked Process', 0);
MessageBox(0, 'See?', 'Hijacked Process', 0);
MessageBox(0, 'Told you.', 'Hijacked Process', 0);
MessageBox(0, 'Ok, bye.', 'Hijacked Process', 0);
MessageBox(0, 'Hails to Barnamenevis.org fellas ', 'Hijacked Process', 0);
MessageBox(0, 'I''ll close notepad for you ;)', 'Hijacked Process', 0);
ExitProcess(0);
Result := 0;
end;
//Injection
procedure Inject(ProcessHandle: longword; EntryPoint: pointer);
var
Module, NewModule: Pointer;
Size, BytesWritten, TID: longword;
begin
Module := Pointer(GetModuleHandle(nil));
Size := PImageOptionalHeader(Pointer(integer(Module) + PImageDosHeader(Module)._lfanew + SizeOf(dword) + SizeOf(TImageFileHeader))).SizeOfImage;
VirtualFreeEx(ProcessHandle, Module, 0, MEM_RELEASE);
NewModule := VirtualAllocEx(ProcessHandle, Module, Size, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(ProcessHandle, NewModule, Module, Size, BytesWritten);
CreateRemoteThread(ProcessHandle, nil, 0, EntryPoint, Module, 0, TID);
end;



procedure TForm1.Button2Click(Sender: TObject);

var
ProcessHandle, PID: longword;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;

begin
{lets make a new process}
CreateProcess(nil, 'Notepad', nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo);
{give it some time to wake up}
Sleep(500);
{and hijack it!}
GetWindowThreadProcessId(FindWindow('Notepad', nil), @PID);
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
Inject(ProcessHandle, @Main);
CloseHandle(ProcessHandle);
{we have a copy of ourself running in notepad so we can exit}


end;اگه میشه کمک کنید و بگید مثلا چه جوری باید این کد رو تغییر بدم تا روی Explorer.exe یا Svchost.exe هم کار کنه ؟؟؟؟

با تشکر