掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
使用中ファイルを強制削除するには (ID:37862)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>hRemoteThread := CreateRemoteThread(hProcess, nil, 0, GetProcAddress(GetModuleHandle('kernel32.dll'), 'CloseHandle'), >Pointer(hFile), 0, threadId); こんなことしなくてもハンドルクローズするだけならこれでいいのか・・・ つまり Param の値を Push して Addres を Call してるのか type TWriteMemory = packed record PushEAX : Byte; //1 $50; Push : Byte; //1 $68 Handle : Integer; //4 ハンドル MovEAX : Byte; //1 $B8 Address : Pointer; //4 アドレス CallEax : WORD; //2 $FFD0; PopEax : Byte; //1 $58 Ret : Byte; //1 $C3 end; BaseAddress := GetProcAddress(GetModuleHandle(PChar('kernel32.dll')), PChar('CloseHandle')); WriteMemory.PushEax := $50; WriteMemory.Push := $68; WriteMemory.MovEAX := $B8; WriteMemory.Address := BaseAddress; WriteMemory.CallEax := $D0FF; WriteMemory.PopEax := $58; WriteMemory.Ret := $C3; //ファイルを掴んでいるプロセス上でコードを実行する Address := VirtualAllocEx(hProcess, nil, SizeOf(WriteMemory) , MEM_COMMIT, PAGE_EXECUTE_READWRITE); if Address <> nil then begin WriteMemory.Handle := Info^.Information[I].Handle; if WriteProcessMemory(hProcess, Address , @WriteMemory , SizeOf(WriteMemory) , WriteSize) = true then begin ThreadHandle := CreateRemoteThread(hProcess, nil, 0, Address , nil , 0 , ThreadID); WaitForSingleObject(ThreadHandle, INFINITE); end; end; VirtualFreeEx(hProcess,Address,0,MEM_RELEASE);
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.